Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何循环数据库并打印表中的所有项_Java_Jsp_Servlets_Jdbc - Fatal编程技术网

Java 如何循环数据库并打印表中的所有项

Java 如何循环数据库并打印表中的所有项,java,jsp,servlets,jdbc,Java,Jsp,Servlets,Jdbc,我试图创建一个Servlet,列出数据库表中的所有项。我想把这些项目放在一个HTML表格中。因此,考虑到目前为止我所拥有的,我是否可以在while循环中添加HTML表布局,并将其连接到数据库并打印所有项目 import java.sql.*; import database.*; public class products { public static void main(String[] args) { DBConnections dataSource =

我试图创建一个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);
        }
    }
}

这样做的好方法是:

将与数据库相关的代码和方法放在另一个类中,例如
ProductDao
中有
ProductDao.getAllProducts()
方法,该方法将返回
List
,因为您使用的是JDBC,所以需要将POJO映射到DB表

现在在Servlet上,在request属性中设置产品列表

request.setAttribute("productsToDisplay", listOfProducts);
将此请求转发给呈现视图的JSP

在JSP上,使用JSTL呈现产品



您编写的代码被锁定在主方法中。那有什么用

servlet是HTTP侦听器

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


您可能不知道JSP和JSTL。Java标准模板库允许您将动态HTML页面编写为Java服务器页面,并为您编译成servlet。

好的,您编写的内容是正确的,但它不是servlet

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

public class products extends HttpServlet {
然后使用
doGet
doPost
来响应请求,而不是使用
main

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
另请参阅Jigar Joshi在producstDao上的帖子。一旦你有了这个列表,你就把它传递给一个JSP,这将产生HTML

关于这方面的一本好书是O'Reilly的“Head First Servlets and JSP(通过sun认证的web组件开发人员考试)”

您可能也会发现这很有用

这是一个相当陡峭的学习曲线,我花了一段时间才弄明白,但一旦你有了它,它的工作相当好