首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> JSP 程式設計 >> 關於JSP

JSP九大隱含對象完全手冊:API速查與實戰場景指引

     編輯:關於JSP

JSP容器自動實例化九大隱含對象,直接可用無需聲明。它們是Servlet API在頁面層的投影,精通其核心方法與適用場景,能讓頁面邏輯簡潔、語義清晰。本文逐個拆解九大對象的類型、關鍵API、典型用法。

九大隱含對象總覽

對象實際類型/接口核心職責高頻方法示例
pageObject (Servlet實例)當前JSP對應的Servlet實例(this)調用Servlet定義的方法
configServletConfigServlet初始化參數getInitParameter() getServletName() getServletContext()
requestHttpServletRequest封裝客戶端請求:參數、頭、Cookie、屬性getParameter() getHeader() getCookies() getAttribute() getRemoteAddr() getRequestURI() setCharacterEncoding()
responseHttpServletResponse控制響應:狀態碼、頭、Cookie、重定向、輸出流sendRedirect() setContentType() addCookie() setStatus() encodeRedirectURL()
outJspWriter頁面字符輸出流、緩衝區管理print()/println() clear() flush() getBufferSize() isAutoFlush()
sessionHttpSession用戶會話狀態:屬性存取、生命週期控制setAttribute() getAttribute() invalidate() setMaxInactiveInterval() getId() isNew()
applicationServletContext全局應用上下文:初始化參數、資源路徑、日志、屬性共享getInitParameter() getRealPath() log() setAttribute() getMimeType() getServerInfo()
pageContextPageContext頁面上下文:統一訪問所有作用域屬性、轉發包含、異常處理setAttribute(name,val,scope) findAttribute(name) include() forward() getException() getRequest()/getSession()/getApplication()
exceptionThrowable錯誤頁面(isErrorPage="true")可用的異常對象getMessage() getLocalizedMessage() printStackTrace()

重點深度:pageContext統一屬性訪問API

pageContext提供跨作用域的統一屬性操作,四大作用域常量:

  • PageContext.PAGE_SCOPE
  • PageContext.REQUEST_SCOPE
  • PageContext.SESSION_SCOPE
  • PageContext.APPLICATION_SCOPE

核心方法:

void setAttribute(String name, Object value, int scope)
Object getAttribute(String name, int scope)
Object findAttribute(String name) // 依次搜索page→request→session→application
void removeAttribute(String name, int scope)
int getAttributesScope(String name) // 返回屬性所在作用域常量
Enumeration getAttributeNamesInScope(int scope)


重點深度:session會話管理鐵律

  • 登入後session.setAttribute("user", userDTO);權限攔截器檢查session.getAttribute("user")。
  • 登出session.invalidate()銷毀會話;敏感操作後session = request.getSession(true); session.setAttribute("user", user)重新生成Session ID防會話固定攻擊。
  • 超時配置:web.xml<session-timeout>15</session-timeout>(分)或代碼session.setMaxInactiveInterval(900)(秒)。
  • 無狀態頁<%@ page session="false" %>禁用Session創建。
  • 集群環境:Session屬性必須實現Serializable,開啟Sticky Session或Session Replication/Redis共享。

重點深度:request/response編碼鐵律

  • 請求解碼:request.setCharacterEncoding("UTF-8")必須在getParameter()之前調用(Filter中統一攔截最佳)。
  • 響應編碼:response.setContentType("text/html;charset=UTF-8")或response.setCharacterEncoding("UTF-8"),配合JSP<%@ page pageEncoding="UTF-8" %>三位一體。

錯誤頁面機制

<%@ page isErrorPage="true" import="java.io.*" %>
<html><body>
<h2>系統發生錯誤</h2>
<pre><% exception.printStackTrace(new PrintWriter(out)); %></pre>
</body></html>

正常頁面<%@ page errorPage="/error.jsp" %>指定錯誤頁,未捕獲異常自動轉發並暴露exception對象。

九大隱含對象是JSP與容器交互的介面契約。理解其生命週期邊界、作用域語義、線程安全特性,比背誦API更能寫出健壯代碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved