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

JSP 九大隱含對象深度解析與實戰應用

     編輯:關於JSP

JSP 容器自動為每個頁面提供 8+1 個預定義變量(隱含對象),無需宣告即可在 Scriptlet 與表達式中直接使用。它們分別封裝了 Servlet API 的核心接口,是 JSP 與底層容器交互的橋樑。

八大核心隱含對象

對象類型核心用途
requestHttpServletRequest取得請求參數(getParameter)、Header、Cookie、Client IP、Session ID 等
responseHttpServletResponse設定狀態碼、Header、Content-Type、Cookie、重導向(sendRedirect)
outJspWriter輸出流,內建緩衝控制(clear、flush、getBufferSize),表達式自動寫入此流
sessionHttpSession會話屬性存取(setAttribute/getAttribute)、生命週期控制(invalidate、setMaxInactiveInterval)
applicationServletContext應用層級共享資料、取得真實路徑(getRealPath)、寫日誌(log)、跨上下文轉發
configServletConfig讀取 <init-param>、取得 Servlet 名稱與 ServletContext
pageContextPageContext統一存取其他隱含對象、屬性作用域管理(PAGE/REQUEST/SESSION/APPLICATION_SCOPE)、轉發/包含工具方法
pageObject (this)指向生成 Servlet 實例本身,非 Java 語言環境下才有意義,極少直接使用

第九對象:exception

僅在錯誤頁面(<%@ page isErrorPage="true" %>)可用,封裝拋出的 Throwable,提供 getMessage()、printStackTrace() 等診斷方法。

實戰提示

  • request vs pageContext:pageContext.getRequest() 等同 request,但前者可統一作用域操作,程式碼更可移植。
  • out 緩衝陷阱:response.sendRedirect() 前若已有內容寫入 out 且緩衝未滿,會拋 IllegalStateException;解決:調大 buffer 或改用 <jsp:forward>。
  • session 關閉:<%@ page session="false" %> 後再用 session 會編譯報錯,適合靜態資源頁提升效能。
  • application 共享鎖:多執行緒寫入 application 屬性時需自行同步,或改用 ConcurrentHashMap 封裝。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved