2010-03-02 515 views
2

我开发了一个使用Tomcat,Mysql和Servlets的应用程序。Java Servlet:从数据库获取信息并在屏幕上显示它

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

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

虽然功能已实现,但我想知道是否有任何其他方式在浏览器上显示此信息。如果任何人能够命名一个方法或提供给我例子的链接,那将是非常棒的。

非常感谢。

回答

3

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

+0

嗨,我已经能够根据你的建议从我的servlets中删除所有out.println。但是,我无法在HTML页面中打印数据库的内容。 我创建了一个Javabean类。这个类有3个属性(标题,作者,专辑)。我能够将数据库表的每一行存储在一个List元素中(我已经使用过:items.get(i).getTitle(),items.get(i).getAuthor()和items.get i).getAlbum()为每一行)。到目前为止,一切看起来都不错。然后我将这个列表放在请求中,并将请求转发给一个jsp文件。 – dedalo 2010-03-04 01:01:25

+0

在jsp文件中一切正常。问题是不打印请求中发送的信息。它打印表格的标题(标题作者专辑),但它看起来像之间的代码没有任何影响。 jstl-1.2.jar文件按照您的指示放置。我错过了什么?谢谢 – dedalo 2010-03-04 01:07:05

+0

你正在使用哪个Tomcat版本? web.xml中声明了哪个Servlet版本?生成的页面源代码如何? (在浏览器中右键单击页面并选择“查看源代码”)。您不应该看到任何Java/JSP标记,但只能看到纯HTML。也可以尝试在JSP中放入'$ {items}'“plain vanilla”,以查看它是否在真正的Java代码中输出与items.toString()相同的值。顺便说一句,与Java中的所有内容一样,taglib也是区分大小写的,它应该是''。 – BalusC 2010-03-04 01:13:15

0

有许多不同的方式来达到同样的(多亏了丰富的网络帧作品) 下面列出几条:

纯Servlet的(如您已完成)

的Servlet + JSP

的Servlet + JSP(使用JSTL)

Struts的帧工作涉及JSP和动作类

小号普林webflows(包括JSP)

速度,挂毯,茧,条纹(都需要JSP知识)...它是无止境的

一种理想的方式是分离出内容的Servlet的。 内容应该进入诸如JSP之类的页面。 Servlets的out.println是如此.. 90年代。从那以后,Java Web技术已经走过了很长的一段路。 干杯!

相关问题