JavaServlet : getting info from a DB and showing it on the screen

标签 java html servlets

我使用 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/

相关文章:

javascript - 使用 Selenium 测试 $ ("&lt;input type=' file'>").click()

jsp - jsp 和 servlet 应用程序中的 php header 的替代是什么来停止重复

java - 如何在 Java 中中断

javascript - html 中 iframe 内的网站。以新的方式

jQuery、CSS - 页面加载后何时使用 addClass 函数

java - 如何解决jsp到servlet的空间问题?

java - 从 tomcat 调用 servlet 抛出 HTTP Status 500 java.lang.NullPointerException

java - 在java中读取文本文件并将其转换为字符串

java - Spring AOP : Only Context Beans Could be Adviced?

java - 动态添加数组到数组中