我需要从数据库加载一些数据列表,并在我的索引JSP页面上显示它们。我这样做的方法是在索引页面中像这样调用Servlet。
<body>
<jsp:include page="listAll" />
<fieldset>
<legend>Search Here</legend>
<input type="text" id="search" name="search"/>
<input type="button" value="Search" id="searchBtn"/>
</fieldset>
</body>
我将在listAll servlet中进行编码并向请求添加属性。我需要知道的是,这种方式是否正确?我能做那样的需要吗? 如果没有,怎么做?
答案 0 :(得分:3)
在Java Web App中,有一个名为welcome-file-list
的web.xml文件的属性。
welcome-file-list
告诉网络应用,如果没有指定更具体的内容,请提取哪些网址。
通常,此值是为index.jsp
配置的,但它可以是Web应用程序中的任何映射。
如果您希望让servlet响应而不是index.jsp
,那么您将正确映射servlet,然后在welcome-file-list
中使用该引用。
考虑:
<welcome-file-list>
<welcome-file>index</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>IndexServlet</servlet-name>
<servlet-class>pkg.IndexServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>IndexServlet</servlet-name>
<url-pattern>/index</url-pattern>
</servlet-mapping>
我们将pkg.IndexServlet
映射到/index
。我们还告诉应用程序index
是此应用程序的欢迎文件。因此,在内部,当应用程序看到http://host.com/webapp
时,它会自动将index
附加到它,然后适当地路由它,这将导致它映射到/index
的servlet。
一旦你正确地映射了这个,你想做一个@Matthias在这里做的模式,servlet收集数据,然后转发到JSP。
答案 1 :(得分:1)
我不确定我是否明白你要做什么。但是我相信你尝试在JSP页面中显示一个数据列表,并且你想要实现一个Servlet,它实现了从数据库中获取所有内容的实际繁重之处。
如果我是你,我会这样做:创建一个servlet,它对数据库执行实际调用并将数据加载到请求属性中。然后从Servlet转发到实际显示数据的JSP
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException {
List<DataElement> list = new ArrayList<DataElement>(); // lets assume this is the list we got from the DB
request.setAttribute("list", list);
String nextJSP = "/searchResults.jsp";
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP);
dispatcher.forward(request,response);
}
然后,您可以在JSP中访问请求属性并使用JSTL
进行迭代<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<body>
<c:forEach var="dataElem" items="${list}">
Item <c:out value="${dataElem.someValue}"/><p>
</c:forEach>
</body>
</html>
答案 2 :(得分:0)
你的方法看起来不错。你可以把这些东西包裹在form
中。这样你就可以在servlet中获取它们了。
<form action="servletURL" method="post">
<input type="text" id="search" name="search"/>
<input type="submit" value="Search" id="searchBtn"/>
</form>
您可以使用doPost()
方法中的request#getParameter
获取这些值。