2010-11-23 1 views
0

/hello의 서블릿 컨텍스트가있는 웹 응용 프로그램에서 jsp (test.jsp)로 작업하고 있습니다. 나는 다음과 같은 일을 오전 :c : import 컨텍스트간에 속성 요청

<c:import url = "/other/altTest.jsp" context="/" /> 

그 요청이 test.jsp를 사용할 수는 C에서 가져온 JSP에 사용할 수없는 속성이 나타납니다 : 수입 (altTest.jsp), I는 컨텍스트 매개 변수로 인해 생각한다. 누군가가 요청 속성에 액세스 할 수있는 jsp를 가져 오는 다른 방법을 제안 할뿐만 아니라이 이유를 설명해 주시겠습니까?

답변

3

c:import은 새롭고 독립적 인 HTTP 요청을 처리합니다. 파일이 동일한 컨텍스트에 있더라도 상위 JSP가 열렸을 때와 동일한 요청에 액세스 할 수 없습니다.

가장 좋은 방법은 정보를 요청 매개 변수로 전달하거나 세션 속성으로 저장 한 다음 가져온 JSP가 세션에서 세션을 제거하도록하는 것입니다. 그래도 서로 다른 컨텍스트가 동일한 세션을 공유해야합니다. 즉, servletcontainer 수준에서 구성 할 수 있습니다 (예 : Tomcat) emptySessionPath 특성을 true, context.xml으로 설정합니다.

대안은 당신이 RequestDispatcher를 얻어 마침내에 forward()를 호출 한 후 (crossContext 속성이 context.xmltrue로 설정된 경우에만) 다른 서블릿 컨텍스트를 얻기 위해 ServletContext#getContext()을 할 수있는 것을 특징으로 대신 서블릿을 사용하는 것입니다. 이것은 JSP 태그로는 불가능합니다.