【问题标题】:How to loop through a database and print all items in a table如何遍历数据库并打印表中的所有项目
【发布时间】:2012-01-07 19:54:02
【问题描述】:

我正在尝试创建一个列出我的数据库表中所有项目的 Servlet。我想将这些项目放在 HTML 表格中。所以考虑到我目前所拥有的,我可以在我的 while 循环中添加 HTML 表格布局,它会连接到数据库并打印所有项目吗?

import java.sql.*;
import database.*;

public class products
{
    public static void main(String[] args)
    {
        DBConnections dataSource = DBConnections.getInstance();
        Connection conn = dataSource.getConnection();
        Statement stat = null;
        ResultSet result = null;
        try
        {
            stat = conn.createStatement();
            result = stat.executeQuery("SELECT * FROM Products");

            string code;
            string item;
            float payment;
            while (result.next())
            {
                proCode = result.get("code");
                item = result.get("item");
                payment = result.geFloat("Payment");
                System.out.println(proCode + "\t" + item + "\t" + payment);
            }
        }
        catch (SQLException ex)
        {
            System.err.println("SQLException in Query.java");
            ex.printStackTrace(System.err);
        }
        finally
        {
            DBUtilities.closeResultSet(result);
            DBUtilities.closeStatement(stat);
            dataSource.freeConnection(conn);
        }
    }
}

【问题讨论】:

    标签: java jsp servlets jdbc


    【解决方案1】:

    好的,你写的有点正确,但它不是一个 servlet。

    首先你需要将你的类基于 HttpServlet 类

    public class products extends HttpServlet {
    

    那么你使用doGetdoPost 来响应请求,而不是使用main

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException {
    

    另请参阅 Jigar Joshi 在 producstDao 上的帖子。获得列表后,将其传递给 s JSP,这将生成 HTML。

    O'Reilly 的“Head First Servlets and JSP(通过 sun 认证的 Web 组件开发人员考试)”是一本非常好的书

    您可能还会发现这很有用http://pdf.coreservlets.com/

    这方面的学习曲线相当陡峭,我花了一段时间才弄明白,但一旦你掌握了它,它就会很好地工作。

    【讨论】:

      【解决方案2】:

      您编写的代码被锁定在一个 main 方法中。这有什么好处?

      Servlet 是 HTTP 侦听器。

      我认为完成您想要的正确方法是将代码从您的 main 方法(改变您处理连接的方式)放入 servlet。然后您可以发出一个 HTTP 请求,告诉它进行数据库查询,将响应格式化为 HTML,然后将其流式传输回来。您的客户端将是一个浏览器,将简单地呈现输出流。

      您可能不了解 JSP 和 JSTL。它是 Java 标准模板库,可让您将动态 HTML 页面编写为 Java 服务器页面,并为您编译成 servlet。

      【讨论】:

        【解决方案3】:

        更好更干净的方法是:

        将与数据库相关的代码和方法放在不同的类中,例如 ProductDao 中的方法 productDao.getAllProducts() 将返回 List<Product>,因为您使用的是 JDBC,因此您需要将 POJO 与 DB 表映射

        现在在 Servlet 上设置请求属性中的产品列表

        request.setAttribute("productsToDisplay", listOfProducts);
        

        将此请求转发给呈现视图的 JSP

        在 JSP 上使用 JSTL 来渲染产品


        【讨论】:

          猜你喜欢
          • 2017-10-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多