我使用 Tomcat、Mysql 和 Servlet 开发了一个应用程序。
用户可以选择的选项之一是在网络浏览器上查看数据库表之一的信息。当用户选择此选项时,将使用 servlet。该 servlet 打开与数据库的连接并迭代行,显示信息。这工作没有问题。
为了在浏览器中显示此信息,我使用了很多“out.println()”行。
虽然该功能已实现,但我想知道是否有其他方式在浏览器上显示此信息。如果有人可以命名一个方法或为我提供示例链接,那就太好了。
非常感谢。
最佳答案
创建一个代表表中每个项目(行)的 Javabean 类。创建一个 DAO 类,该类使用 JDBC 返回这些项目的列表。然后在 servlet 中,只需使用 HttpServletRequest#setAttribute()
将项目列表放入请求范围中。 ,使用 RequestDispatcher#forward()
将请求转发到 JSP 文件并使用 JSTL 迭代项目列表(只需将 jstl-1.2.jar 放入 /WEB-INF/lib
中) c:forEach
标签。
基本启动示例:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<Item> items = itemDAO.list();
request.setAttribute("items", items); // It's now available as ${items} in EL.
request.getRequestDispatcher("/WEB-INF/result.jsp").forward(request, response);
}
其中 result.jsp
如下所示:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
<table>
<c:forEach items="${items}" var="item">
<tr>
<td>${item.someProperty}</td>
<td>${item.anotherProperty}</td>
</tr>
</c:forEach>
</table>
有关更多提示和示例,您可以找到 this article一个有用的起点。
你问这个问题是件好事。将表示逻辑放在 Servlet 类中是一种不好的做法。 Servlet 类中的任何 out.println()
语句都需要消除。它属于 JSP 文件。
更进一步,您还可以使用 MVC 框架,这样您基本上就只剩下一个 Javabean 类和一个 JSP 文件(即 servlet 的角色已由 MVC 框架接管)。
关于JavaServlet : getting info from a DB and showing it on the screen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2364064/