Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javaservlet:从数据库获取信息并在屏幕上显示_Java_Html_Servlets - Fatal编程技术网

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

Javaservlet:从数据库获取信息并在屏幕上显示,java,html,servlets,Java,Html,Servlets,我使用Tomcat、Mysql和servlet开发了一个应用程序 用户可以选择的选项之一是在web浏览器上查看数据库中某个表的信息。当用户选择此选项时,将使用servlet。这个servlet打开到数据库的连接,并遍历行,显示信息。这是没有问题的 为了在浏览器中显示这些信息,我使用了很多“out.println()”行 虽然实现了该功能,但我想知道是否有其他方式在浏览器上显示此信息。如果有人能说出一个方法或者给我提供示例链接,那就太好了 非常感谢。请尝试与一起使用。JSP与JSTL是一种使用类似

我使用Tomcat、Mysql和servlet开发了一个应用程序

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

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

虽然实现了该功能,但我想知道是否有其他方式在浏览器上显示此信息。如果有人能说出一个方法或者给我提供示例链接,那就太好了


非常感谢。

请尝试与一起使用。JSP与JSTL是一种使用类似html的语法(xml)来创建动态Java网页的方法。JSP在运行时被转换为servlet。

只需从众多JSP中选择一个即可创建一个Javabean类,该类表示表中的每一项(行)。创建一个DAO类,该类使用JDBC返回这些项的列表。然后在servlet中,只需使用将项目列表放入请求范围,使用将请求转发到JSP文件,并使用(只需插入
/WEB-INF/lib
)标记迭代项目列表

基本启动示例:

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);
}
有关更多提示和示例,您可以找到一个有用的起点

你问这个是件好事。将表示逻辑放在Servlet类中是一种糟糕的做法。Servlet类中的任何
out.println()
语句都需要删除。它属于JSP文件


进一步说,您还可以使用MVC框架,这样您基本上只需要一个Javabean类和一个JSP文件(即servlet的角色已被MVC框架接管)。

有许多不同的方法来实现相同的功能(感谢丰富的web框架作品) 列出一些:

纯servlet(正如您所做的那样)

Servlet+JSP

Servlet+JSP(使用JSTL)

Struts框架涉及JSP和action类

SpringWebFlows(涉及JSP)

速度、挂毯、茧、条纹(都需要JSP知识)。。。这是无止境的

理想的方法是将内容从servlet中分离出来。 内容应该放在JSP之类的页面中。Servlets'out.println是这样的。。90年代。 从那时起,JavaWeb技术已经走过了漫长的道路。
干杯

嗨,我已经按照你的建议从我的servlet中删除了所有的out.println。但是,我无法在创建了Javabean类的html页面中打印数据库的内容。这门课有三个主题(标题、作者、专辑)。我能够将数据库表的每一行存储在一个列表元素中(对于每一行,我使用items.get(I).getTitle()、items.get(I).getAuthor()和items.get(I).getAlbum()进行检查)。到目前为止,一切看起来都很好。然后我将列表放在请求中,并将请求转发到一个jsp文件。在jsp文件中,一切正常。问题是它没有打印请求中发送的信息。它确实打印了表的标题(TitleAuthorAlbum),但看起来表之间的代码没有任何效果。jstl-1.2.jar文件的位置如您所示。我遗漏了什么吗?谢谢你用的是哪个Tomcat版本?web.xml中声明了哪个Servlet版本?生成的页面源是什么样子的?(右键单击webbrowser中的页面并选择“查看源”)。您不应该看到任何Java/JSP标记,而应该只看到纯HTML。还可以尝试将
${items}
“普通”放在JSP中,以查看它是否打印出与真实Java代码中的
items.toString()
相同的值。顺便说一下,与Java中的所有内容一样,taglib也区分大小写,它应该是
。安装目录上说它是Tomcat 6.0。在web.xml中,它说:当我在jsp文件中使用${items}时,它会在浏览器中打印提供items.toString()的相同信息。谢谢,一切看起来都很好。JSTL只是没有完成她的工作:)页面源代码呢?顺便问一下,您是否按照其文档在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>