我正在尝试创建一个列出数据库表的所有项目的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);
}
}
}
答案 0 :(得分:2)
更好,更清洁的方法是:
将与数据库相关的代码和方法放在不同的类中,例如ProductDao
有productDao.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 {
然后使用main
或doGet
来回复请求,而非使用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/
这有一个相当陡峭的学习曲线,我花了一段时间来弄清楚它,但一旦你得到它,它的效果非常好。