如何遍历数据库并打印表中的所有项目

时间:2011-11-28 10:26:15

标签: java jsp servlets jdbc

我正在尝试创建一个列出数据库表的所有项目的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);
        }
    }
}

3 个答案:

答案 0 :(得分:2)

更好,更清洁的方法是:

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

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

request.setAttribute("productsToDisplay", listOfProducts);

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

在JSP上使用JSTL来呈现产品


查看

答案 1 :(得分:0)

您编写的代码被锁定在main方法中。这有什么用呢?

Servlet是HTTP侦听器。

我认为实现目标的正确方法是将主方法中的代码(以及处理连接的方式的更改)放入servlet中。然后,您可以发出一个HTTP请求,告诉它执行数据库查询,将响应格式化为HTML,然后再将其流式传输。您的客户端将是一个简单地呈现输出流的浏览器。

您可能不了解JSP和JSTL。它是Java标准模板库,允许您将动态HTML页面编写为Java Server Pages,并将其编译为servlet。

答案 2 :(得分:0)

好的,你所写的内容是正确的,但它不是一个servlet。

首先,您需要将您的类基于HttpServlet类

public class products extends HttpServlet {

然后使用maindoGet来回复请求,而非使用doPost

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

另见Jigar Joshi关于producstDao的帖子。获得列表后,将其传递给JSP,然后生成HTML。

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

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

这有一个相当陡峭的学习曲线,我花了一段时间来弄清楚它,但一旦你得到它,它的效果非常好。