Peter is correct.PageContext
供應處理頁面的範圍。消費者不應該在這個範圍之外引用這些實例,這隱含地意味着實例不應該在當前線程之外訪問。從JSP 2.2 specification
例JSP處理代碼:
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
實例是如何配置的(從池或實例創建)是容器的實現細節。
這是很好的知道,但那麼爲什麼PageContext有生命週期方法,如果它不是回收它們? – murungu 2012-03-06 10:02:55
@murungu:容器可能會使用頁面上下文對象池。容器調用這些方法來指示頁面上下文使用的開始和結束。頁面上下文應該進行必要的初始化或清理。這些方法並不是由JSP頁面作者調用的。 – 2012-03-06 10:07:40