2014-10-11 2 views
0

데이터베이스에서 일부 데이터 목록을로드하고이를 인덱스 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 서블릿에서 코딩을 수행하고 요청에 속성을 추가하려고합니다. 내가 알아야 할 것은이 방법이 맞습니까? 내가 그렇게 할 수 있을까? 그렇지 않은 경우 어떻게합니까?

+0

서블릿을 사용하려면 ajax와 함께 사용하십시오. 원하는대로 정확하게 처리 할 수 ​​있습니다. 서블릿을 jsp에 포함 할 수 없으므로 include.it은 응답 유형이 설정된 경우에만 가능합니다. – Divya

답변

0

접근 방식이 괜찮아 보입니다. 당신은 form에 이것을 포장 할 수 있습니다. 그래서 당신은 서블릿에서 그들을 얻을 수 있습니다.

<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 페이지에서 데이터 목록을 보여 주려고하고 DB에서 모든 것을 가져 오는 실제 작업을 수행하는 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'가 더 적합하다고 생각합니다. –

+0

인덱스 페이지를 얻으려면 꼭 쓰십시오. 메쏘드가 더 좋을 것입니다. 답을 편집 할 것입니다. –

3

그들을 반복 welcome-file-list이라는 web.xml 파일의 속성입니다.

welcome-file-list은 더 구체적으로 지정하지 않으면 웹 앱에 어떤 URL을 표시할지 알려줍니다.

일반적으로이 값은 index.jsp으로 구성되지만 웹 응용 프로그램 내의 모든 매핑이 가능합니다.

index.jsp 대신 서블릿을 응답하려면 서블릿을 올바르게 매핑 한 다음 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> 

가 여기에 우리가 /index에 매핑 된 pkg.IndexServlet 있습니다. 또한 index이이 응용 프로그램의 환영 파일임을 응용 프로그램에 알립니다. 따라서 내부적으로 응용 프로그램에서 http://host.com/webapp을 볼 때 index이 자동으로 추가 된 다음 적절히 경로가 지정되어 /index에 매핑 된 서블릿으로 연결됩니다.

이 맵핑을 적절하게 수행하면 서블릿이 데이터를 수집 한 다음 JSP로 전달하는 @Matthias 패턴이 많이 필요합니다.

관련 문제