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

JSP 九大內置對象完整參考手冊:request/response/session/application 詳解

     編輯:Java 綜合教學

JSP 九大內置對象完整參考手冊

JSP 內置對象無需聲明即可在腳本中直接使用,本質是 Servlet service() 方法的參數或局部變量。共有 9 大對象,涵蓋請求、響應、會話、應用上下文等核心領域。

對象速查表

對象類型作用域核心用途
requestHttpServletRequest請求域獲取請求參數、頭信息、屬性傳遞
responseHttpServletResponse頁面域設置響應頭、重定向、輸出流
sessionHttpSession會話域用戶狀態維持、購物車、登錄態
applicationServletContext應用域全局配置、數據共享、初始化參數
outJspWriter頁面域向瀏覽器輸出內容、緩衝區控制
pageObject頁面域當前 JSP 頁面實例(類似 this)
pageContextPageContext頁面域統一訪問所有作用域屬性、頁面轉發/包含
configServletConfig頁面域Servlet 初始化參數、上下文引用
exceptionThrowable頁面域錯誤頁面異常信息(需 isErrorPage=true)

核心對象常用 API 精選

1. request — 請求信息封裝

  • getParameter(name) / getParameterValues(name):獲取參數
  • getAttribute(name) / setAttribute(name, obj):請求域屬性傳遞(轉發時保持)
  • getRequestDispatcher(path).forward(req, resp):服務端轉發
  • getContextPath():獲取項目上下文路徑
  • getRemoteAddr():客戶端 IP

2. response — 響應控制

  • sendRedirect(url):客戶端重定向(地址欄變化)
  • setContentType("text/html;charset=UTF-8"):設置編碼與 MIME
  • getWriter() / getOutputStream():字符/字節輸出流

3. session — 會話管理

  • getId():會話唯一標識(JSESSIONID)
  • setAttribute/getAttribute:會話域存取數據
  • setMaxInactiveInterval(sec):設置超時時間
  • invalidate():銷毀會話(登出)

4. application — 全局共享

  • getInitParameter(name):讀取 web.xml <context-param>
  • getRealPath(path):虛擬路徑轉物理路徑
  • getRequestDispatcher(path):跨應用轉發
  • log(msg):寫入容器日誌

5. out — 輸出流控制

  • print/write:輸出內容
  • flush():強制刷新緩衝區
  • clearBuffer():清空緩衝區(不拋異常)
  • getBufferSize() / getRemaining():緩衝區狀態

6. pageContext — 萬能訪問器

可跨作用域操作屬性:

  • setAttribute(name, value, scope):scope 可為 PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPE、APPLICATION_SCOPE
  • findAttribute(name):按頁面→請求→會話→應用順序查找
  • forward/include(path):頁面跳轉/包含
  • getException()、getServletConfig()、getServletContext():獲取其他內置對象

生命週期與創建時機

JSP 編譯為 Servlet,service(req, resp) 方法中:

  • request、response:方法參數
  • page = this:當前實例
  • pageContext = PageContextImpl:工廠創建
  • session = req.getSession():隱式創建/獲取
  • application = pageContext.getServletContext()
  • out = pageContext.getOut()
  • config = pageContext.getServletConfig()

最佳實踐提醒

  1. 盡量避免在 JSP 中寫 Java 代碼,使用 JSTL + EL 表達式
  2. 請求域屬性用於 forward 傳遞,重定向需用 Session 或閃存
  3. 大對象勿存 Session,防止內存溢出與序列化問題
  4. Application 域適合只讀緩存(字典、配置),寫入需同步
  5. 錯誤頁面設置 <%@ page isErrorPage="true" %> 才能用 exception
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved