我对servlet的使用有疑问。
在我正在构建的应用程序中,我使用Html页面向用户询问信息。
想象一下,一个允许用户请求在屏幕上查看数据库内容的Html页面。我要做的是:
1.-从Html页面调用一个servlet,它将打开一个与数据库的连接。2.- servlet构建用户将看到的网页。
我的问题是:有没有其他方法可以做到这一点?我是否必须在servlet中构建web页面,或者是否可以将数据库中包含的信息发送到将构建web页面的.html文件中(在我的示例中,我需要在屏幕上显示一个包含所有信息的表格)?
谢谢
发布于 2010-01-08 04:58:54
最终,浏览器必须向服务器发送请求以获取数据库信息。您可以通过多种方式完成此操作:
XML在servlet中构建整个页面(可能是simplest)
有很多方法可以剥这只猫的皮。我怀疑你做的是最简单的一个,这很好。如果没有明确的要求,我会倾向于这样做,这意味着我需要做一些其他的事情。使问题复杂化的进一步要求可能包括如果屏幕上容纳的数据太多,则对数据进行分页。上面的所有解决方案都可以以某种方式结合这一点。
发布于 2010-01-08 05:11:01
Servlet的目的是控制、预处理和/或后处理请求,而不是呈现数据。JSP是一种视图技术,提供了编写HTML/CSS/JS的模板。您可以借助JSTL等标记库控制页面流,并使用EL访问任何限定了作用域的属性。
首先创建一个SearchServlet并将其映射到/search的url-pattern上,然后实现doGet()和doPost(),如下所示:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Preprocess request here and finally send request to JSP for display.
request.getRequestDispatcher("/WEB-INF/search.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Postprocess request here. Get results from your DAO and store in request scope.
String search = request.getParameter("search");
List<Result> results = searchDAO.find(search);
request.setAttribute("results", results);
request.getRequestDispatcher("/WEB-INF/search.jsp").forward(request, response);
}下面是JAR的外观,它使用JSTL (只需在/WEB-INF/lib中放入/WEB-INF/search.jsp )来控制页面流。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
...
<form action="search" method="post">
<input type="text" name="search">
<input type="submit" value="search">
</form>
<c:if test="${not empty results}">
<p>There are ${fn:length(results)} results.</p>
<table>
<c:forEach items="${results}" var="result">
<tr>
<td>${result.id}</td>
<td>${result.name}</td>
<td>${result.value}</td>
</tr>
</c:forEach>
</table>
</c:if>请注意,将JSP放在/WEB-INF中是为了防止用户通过URL直接访问。为此,http://example.com/contextname/search强制他们使用servlet。
要了解有关JSP/Servlets的更多信息,我可以推荐Marty Hall's Coreservlets.com tutorials。要了解更多关于searchDAO背后的逻辑,我可以推荐这个basic DAO tutorial。
更进一步,你可以考虑使用建立在Servlet API之上的MVC框架,比如Sun JSF、Apache Struts、Spring MVC等等,这样你基本上只能得到Javabeans和JSP/XHTML文件。一般的MVC框架会负责收集请求参数、验证/转换它们、用这些值更新Javabeans、调用一些Javabean动作方法来处理它们等等。这使得servlet变得“多余”(然而,它仍然被用作框架的核心处理器)。
发布于 2010-01-08 04:59:40
除了Servlet之外,Java还有JSP页面,这些页面混合了HTML和自定义标记(包括Java Standard Tag Library或JSTL),最终被编译成Servlet。
还有其他制作web应用程序的技术,包括Java Server Faces (JSF)、Apache Struts、Spring等。特别是Spring在现代web应用程序开发中被广泛使用。
最终,就像布莱恩·阿格纽说的那样……您必须在浏览器和服务器之间来回通信。这些只是促进这一点的各种技术。
https://stackoverflow.com/questions/2023596
复制相似问题