Java Servlet:从数据库获取信息并在屏幕上显示

时间:2010-03-02 15:05:15

标签: java html servlets

我使用Tomcat,Mysql和Servlets开发了一个应用程序。

用户可以选择的一个选项是在Web浏览器上查看数据库的某个表的信息。当用户选择此选项时,将使用servlet。此servlet打开与数据库的连接,并遍历行,显示信息。这没有问题。

为了在浏览器中显示这些信息,我使用了很多“out.println()”行。

虽然功能已实现,但我想知道是否有其他方法可以在浏览器上显示此信息。如果有人可以为方法命名或为我提供示例链接,那就太棒了。

非常感谢。

4 个答案:

答案 0 :(得分:3)

创建一个Javabean类,它表示表的每个项目(行)。创建一个DAO类,它使用JDBC返回这些项的列表。然后在servlet中,使用HttpServletRequest#setAttribute()将项目列表放在请求范围内,使用RequestDispatcher#forward()将请求转发到JSP文件,并使用JSTL迭代项目列表(只是在/WEB-INF/libjstl-1.2.jar代码中删除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框架接管)。

答案 1 :(得分:0)

尝试将Java Server PagesJavaServer Pages Standard Tag Library一起使用。使用JSTL的JSP是一种使用类似html语法(xml)来创建动态Java网页的方法。 JSP在运行时转换为Servlet。

答案 2 :(得分:0)

只需在众多

中选择一个web framework即可

答案 3 :(得分:0)

有许多不同的方法可以实现相同的目标(感谢网页框架的丰富工作) 列举几个:

Pure Servlets(正如您所做)

Servlet + JSP

Servlet + JSP(使用JSTL)

Struts框架工作涉及JSP和动作类

Spring webflows(涉及JSP)

Velocity,Tapestry,Cocoon,Stripes(都需要JSP知识)......而且它是无穷无尽的

理想的方法是将内容从Servlet中分离出来。 内容应该进入诸如JSP之类的页面。 Servlets的out.println是如此...... 90秒。 从那时起,Java Web技术已经走过了漫长的道路。 干杯!