pageContext 是 JSP 頁面級上下文對象,雖作用域最小,但功能最全,被稱為「萬能對象」。它不僅封裝了其他 8 大內置對象的引用,還提供頁面轉發、異常處理、標簽庫開發等核心 API。
javax.servlet.jsp.PageContext 實例(抽象類)PAGE_SCOPE 常量)
HttpServletRequest request = pageContext.getRequest();
HttpServletResponse response = pageContext.getResponse();
HttpSession session = pageContext.getSession();
ServletContext application = pageContext.getServletContext();
ServletConfig config = pageContext.getServletConfig();
JspWriter out = pageContext.getOut();
Object page = pageContext.getPage();
Exception exception = pageContext.getException();
PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPE、APPLICATION_SCOPEsetAttribute(name, value, scope):指定作用域存儲getAttribute(name, scope):指定作用域獲取findAttribute(name):按 page→request→session→application 順序查找removeAttribute(name, scope):指定作用域移除forward(String path):請求轉發(等效 request.getRequestDispatcher().forward())include(String path):頁面包含(等效 request.getRequestDispatcher().include())handlePageException(Exception e):異常處理,轉發到錯誤頁<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%
// pageContext_01.jsp
pageContext.forward("pageContext_02.jsp"); // 服務端跳轉
%>
自定義標簽處理器(Tag/SimpleTag)通過 setPageContext(PageContext pc) 獲取頁面上下文,進而訪問請求、會話、輸出流等資源,實現標簽邏輯與頁面數據交互。掌握 pageContext 是進階 JSP 標簽庫開發的前置條件。