2010-03-13 3 views
0

두 개의 JSP 파일과 하나의 Java 파일이 있습니다. 내 제약 조건은 jspfile1이 java를 호출하고 java 파일이 jspfile2를 호출하는 경우입니다. 가능한가? 어떻게 이것을 수행할까요?자바에서 jsp 파일을 호출하는 방법은 무엇입니까?

+2

없음 공격은 기존의 답변을 의미하지,하지만 당신은 당신이 가능하게 당신의 설정과 일부 코드로, 더 광범위하게 비트를 수행 할 작업을 스케치하는 경우 : 바로 액세스 ${message}page2.jsp에 결과를 표시하려면 더 잘, 잘, 적어도 더 유용한 답변을 얻으십시오. – extraneon

답변

0

jsp 파일은 servlet으로 변환됩니다. 직접 전화 할 수는 없습니다.

편집 : 오타가 수정되었습니다.

+2

하지만 자동 생성 서블릿에 직접 액세스하면 안됩니다. URL을 사용하여 요청을 보내고 컨테이너가 어디로 가는지 알아 내야합니다. – Thilo

0

http 웹 요청을 수행하십시오.

3

"자바 파일이"당신이 서블릿을 의미하여, 당신은 RequestDispatcher의를 사용할 수있는 경우 : 정상 방법은 Servlet을 사용

request.getRequestDispatcher("/my.jsp").include(request, response); 

request.getRequestDispatcher("/my.jsp").forward(request, response); 
+0

이것은 매우 흥미로운 사실입니다 .... –

+0

이것은 아마도 가장 깨끗한 방법 일 것입니다. 아마도 J2EE 개발자가 원하는 방식 일 것입니다. –

1

. HttpServlet을 확장하고 web.xml에 특정 url-pattern으로 매핑하면됩니다. 그런 다음 JSP의 HTML 링크 또는 양식을 사용하여 서블릿의 url-pattern과 일치하는 URL을 가리 키십시오.

예. page1.jsp :

<form action="servletUrl"> 
    <input type"submit"> 
</form> 

또는

<a href="servletUrl">click here</a> 

<form> ( method="get" 기본값)와 <a> 링크가 서블릿의 doGet() 메소드를 호출 method 속성없이. 당신이 <form method="post">이있는 경우

public class MyServlet extends HttpServlet { 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // Do your Java code thing here. 
     String message = "hello"; 
     request.setAttribute("message", message); // Will be available in ${message}. 

     // And then forward the request to a JSP file. 
     request.getRequestDispatcher("page2.jsp").forward(request, response); 
    } 
} 

, 당신은 doPost 방법으로 doGet을 교체해야합니다.

지도 다음과 같이 web.xml이 서블릿은 :

<servlet> 
    <servlet-name>myServlet</servlet-name> 
    <servlet-class>com.example.MyServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>myServlet</servlet-name> 
    <url-pattern>/servletUrl</url-pattern> 
</servlet-mapping> 

있도록이 http://example.com/contextname/servletUrl로 사용할 수 있습니다. <form><a> URL은 서블릿을 호출하기 위해 URL을 정확하게 또는 정확하게 나타내야합니다.

이제이 서블릿 예제는 "result"를 "message"라는 이름의 요청 속성으로 설정하고 요청을 page2.jsp으로 전달합니다. 당신은 아마 것,

<p>Servlet result was: ${message}</p> 
관련 문제