2014-10-11 49 views
0

我需要從數據庫加載一些數據的列表,並在我的索引JSP頁面上顯示它們。我這樣做的方式就是在索引頁面中調用一個Servlet。加載索引頁時調用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

如果您想使用servlet將其與ajax結合使用,它將完成您想要的功能。您無法在jsp中包含servlet:include.it只有在您有響應類型時纔會顯示 – Divya 2014-10-11 16:24:27

回答

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這些值。

1

我不完全確定,如果我明白你想要做什麼。但我相信你會嘗試在JSP頁面中顯示一個數據列表,並且你想實現一個Servlet,這個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> 
+0

您顯示了' doPost'方法,但是對於'index'頁面,我認爲'doGet'更加適合... – 2014-10-11 18:03:03

+0

Serge確定索引頁的get方法會更好,將編輯答案 – 2014-10-11 20:02:08

3

重複他們在Java Web應用程序,有是稱爲welcome-file-list的web.xml文件的一個屬性。

welcome-file-list會告訴網絡應用程序,如果沒有指定更具體的內容,將提取哪些URL。

通常,此值配置爲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> 

下面我們就映射到/indexpkg.IndexServlet。我們還告訴應用程序index是這個應用程序的歡迎文件。因此,在內部,當應用程序看到http://host.com/webapp時,它會自動附加index,然後進行適當的路由,這將導致它被映射到/index

一旦你正確地映射了這個,你想要在@Matthias做一個模式,在這裏servlet收集數據,然後轉發到JSP。