Peter is correct.PageContext
은 페이지 처리 범위로 제공됩니다. 소비자는이 범위 밖에서 이러한 인스턴스에 대한 참조를 유지하면 안됩니다. 이는 암시 적으로 현재 스레드 외부에서 인스턴스에 액세스 할 수 없어야 함을 의미합니다. JSP 2.2 specification에서
예 JSP 처리 코드는 다음 PageContext
인스턴스 (또는 풀에서 인스턴스 생성) 프로비저닝 방법
public class foo implements Servlet {
// ...
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
JspFactory factory = JspFactory.getDefaultFactory();
PageContext pageContext = factory.getPageContext(
this,
request,
response,
null, // errorPageURL
false, // needsSession
JspWriter.DEFAULT_BUFFER,
true // autoFlush
);
// initialize implicit variables for scripting env ...
HttpSession session = pageContext.getSession();
JspWriter out = pageContext.getOut();
Object page = this;
try {
// body of translated JSP here ...
} catch (Exception e) {
out.clear();
pageContext.handlePageException(e);
} finally {
out.close();
factory.releasePageContext(pageContext);
}
}
컨테이너의 구현 세부 사항이다.
알아두면 좋지만, 왜 PageContext에는 수명주기 메소드가 있습니까? – murungu
@murungu : 컨테이너는 페이지 컨텍스트 개체 풀을 사용할 수 있습니다. 이 메소드는 페이지 컨텍스트 사용의 시작과 끝을 나타 내기 위해 컨테이너에 의해 호출됩니다. 페이지 컨텍스트는 필요한 초기화 또는 정리를 수행해야합니다. 이러한 메소드는 JSP 페이지 작성자가 호출하지 않아도됩니다. –