加载索引页面时调用Servlet

时间:2014-10-11 14:08:06

标签: java jsp servlets

我需要从数据库加载一些数据列表,并在我的索引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中进行编码并向请求添加属性。我需要知道的是,这种方式是否正确?我能做那样的需要吗? 如果没有,怎么做?

3 个答案:

答案 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获取这些值。