JSP - 9大內置對象及其API

来源:http://www.cnblogs.com/haonangege/archive/2016/10/19/jsp_built-in-objects.html
-Advertisement-
Play Games

內置對象:不需要預先聲明就可以在腳本代碼和表達式中隨意使用,有以下特點 1.由JSP規範提供,不用編寫者實例化 2.提供Web容器實現和管理 3.所有JSP頁面均可用 4.只有在腳本元素的表達式或者代碼中才可使用(<%=使用內置對象%>或<%使用內置對象%>) 輸入輸出對象:request,resp ...


內置對象:不需要預先聲明就可以在腳本代碼和表達式中隨意使用,有以下特點

1.由JSP規範提供,不用編寫者實例化

2.提供Web容器實現和管理

3.所有JSP頁面均可用

4.只有在腳本元素的表達式或者代碼中才可使用(<%=使用內置對象%>或<%使用內置對象%>)

 

輸入輸出對象:request,response,out

通信控制對象:pageContext,session,application

Servlet對象:page,config

錯誤處理對象:exception

 

 

1. request - 請求對象 javax.servlet.httpServletRequest

request 對象是 javax.servlet.httpServletRequest類的實例,該對象代表了客戶端的請求信息,主要用於接受通過HTTP協議傳送到伺服器的數據。(包括頭信息、系統信息、請求方式以及請求參數等)。

request對象的作用域為一次請求,發送請求時,該對象創建,一次請求結束後即銷毀(一次請求,產生一個request對象)

該對象封裝了用戶提交信息,通過調用該對象相應的方法以獲取封裝的信息,使用該對象,可以獲取用戶提交的信息。

1 String getParameter(String name)返回name指定參數的參數值

2 Enumeration getParameterNames()返回可用參數名的枚舉

3 String[] getParameterValues(String name) 返回包含參數name的所有值的數組

4 void setAttribute(String key,Object obj) 設置屬性的屬性值

5 object getAttribute(String name) 返回指定屬性的屬性值(即setAttribute中參數key的值)

6 Enumeration getAttributeNames() 返回所有可用屬性名的枚舉 

7 String getProtocol() 返回請求用的協議類型及版本號

8 String getServerName() 返回接受請求的伺服器�*� 

9 int getServerPort() 返回伺服器接受此請求所用的埠號 

10 BufferedReader getReader() 返回解碼過了的請求體 

11 String getRemoteAddr() 返回發送此請求的客戶端IP地址 

12 String getRemoteHost() 返回發送此請求的客戶端�*� 

13 String getScheme() 返回請求用的計劃名,如:http.https及ftp等 

14 String getRealPath(String path) 返回一虛擬路徑的真實路徑

15 String getCharacterEncoding() 返回字元編碼方式

16 int getContentLength() 返回請求體的長度(以位元組數)

17 String getContentType() 得到請求體的MIME類型

18 ServletInputStream getInputStream() 得到請求體中一行的二進位流

 

2. response - 響應對象 javax.servlet.http.HttpServletResponse

response代表的是對客戶端的響應,主要是將JSP容器處理過的對象傳回給客戶端

對客戶端請求做出動態響應,向客戶端發送數據,響應客戶端請求時建立,響應結束時銷毀(一次響應,產生一個response對象)

動態響應contentType屬性:

當一個用戶訪問了一個jsp頁面時,如果該頁面用page指令設置頁面的contentType屬性為text/html,那麼jsp引擎將按照這個屬性值做出反應。如果要動態改變這個屬性值來響應客戶,就需要使用Response對象

1 String getCharacterEncoding() 返迴響應用的是何種字元編碼 

2 ServletOutputStream getOutputStream() 返迴響應的一個二進位輸出流 

3 PrintWriter getWriter() 返回可以向客戶端輸出字元的一個對象 

4 void setContentLength(int len) 設置響應頭長度 

5 void setContentType(String type) 設置響應的MIME類型 

6 sendRedirect(Java.lang.String location) 重新定向客戶端的請求

 

3. session - 會話對象 javax.servlet.http.HttpSession

在頁面的page指令加上session="true" 或預設 情況下以及在servlet中使用request.getSession();的方式進行創建。超時或服務停止時,session結束。(一個用戶對應一個session對象)

什麼是session對象?——它是一個jsp內置對象,它在第一個jsp被裝載時自動創建,完成會話期管理。從一個客戶打開瀏覽器並連接到伺服器開始,到客戶關閉瀏覽器離   開這個伺服器結束(或者超時),被稱為一個會話。當一個客戶訪問一個伺服器時,可能會在這個伺服器的幾個頁面之間切換,伺服器應當通過某種辦法知道這是一個客戶,就需要創建session對象

session對象的ID——當一個客戶首次訪問伺服器上的一個jsp頁面時,jsp引擎會產生一個session對象,同時分配一個String類型的的ID號,jsp引擎同時將這個ID號發送到客戶端,存放在cookie中,這樣,session對象直到客戶關閉瀏覽器後,伺服器端,該客戶的session對象才會消失,會並,和客戶的會話對應關係消失。當客戶重新打開瀏覽器再連接到該伺服器時,伺服器為該客戶再創建一個新的session對象

1 long getCreationTime() 返回Session創建時間 

2 public String getId() 返回Session創建時,JSP引擎為它分配的惟一id號 

3 long getLastAccessedTime() 返回此Session里客戶端最近一次請求時間 

4 int getMaxInactiveInterval() 返回兩次請求間隔多長時間此Session被取消(ms) 

5 String[] getValueNames() 返回一個包含此Session中所有可用屬性的數組 

6 void invalidate() 取消Session,使Session不可用 

7 boolean isNew() 返回伺服器創建的一個Session,客戶端是否已經加入 

8 void removeValue(String name) 刪除Session中指定的屬性 

9 void setMaxInactiveInterval() 設置兩次請求間隔多長時間此Session被取消(ms)

 

4. application - 應用程式對象 javax.servlet.ServletContext

application 對象實現了用戶間數據的共用,可存放全局變數。它開始於伺服器的啟動,直到伺服器的關閉,在此期間,此對象將一直存在;這樣在用戶的前後連接或不同用戶之 間的連接中,可以對此對象的同一屬性進行操作;在任何地方對此對象屬性的操作,都將影響到其他用戶對此的訪問。伺服器的啟動和關閉決定了application對象的生命。它是ServletContext類的實例

1 Object getAttribute(String name) 返回給定名的屬性值 

2 Enumeration getAttributeNames() 返回所有可用屬性名的枚舉 

3 void setAttribute(String name,Object obj) 設定屬性的屬性值 

4 void removeAttribute(String name) 刪除一屬性及其屬性值 

5 String getServerInfo() 返回JSP(SERVLET)引擎名及版本號 

6 String getRealPath(String path) 返回一虛擬路徑的真實路徑 

7 ServletContext getContext(String uripath) 返回指定WebApplication的application對象 

8 int getMajorVersion() 返回伺服器支持的Servlet API的最大版本號 

9 int getMinorVersion() 返回伺服器支持的Servlet API的最大版本號 

10 String getMimeType(String file) 返回指定文件的MIME類型 

11 URL getResource(String path) 返回指定資源(文件及目錄)的URL路徑 

12 InputStream getResourceAsStream(String path) 返回指定資源的輸入流 

13 RequestDispatcher getRequestDispatcher(String uripath) 返回指定資源的RequestDispatcher對象 

14 Servlet getServlet(String name) 返回指定名的Servlet 

15 Enumeration getServlets() 返回所有Servlet的枚舉 

16 Enumeration getServletNames() 返回所有Servlet名的枚舉 

17 void log(String msg) 把指定消息寫入Servlet的日誌文件 

18 void log(Exception exception,String msg) 把指定異常的棧軌跡及錯誤消息寫入Servlet的日誌文件 

19 void log(String msg,Throwable throwable) 把棧軌跡及給出的Throwable異常的說明信息 寫入Servlet的日誌文件 

 

5. out - 數據流對象 javax.servlet.jsp.jspWriter

out對象是 javax.servlet.jsp.JspWriter 類的實例,用來在response對象中寫入內容,輸出到頁面中

1 void clear() 清除緩衝區的內容 

2 void clearBuffer() 清除緩衝區的當前內容 

3 void flush() 清空流 

4 int getBufferSize() 返回緩衝區以位元組數的大小,如不設緩衝區則為0 

5 int getRemaining() 返回緩衝區還剩餘多少可用 

6 boolean isAutoFlush() 返回緩衝區滿時,是自動清空還是拋出異常

7 void close() 關閉輸出流 

 

6. pageContext - 頁面上下文對象 javax.servlet.jsp.PageContext

pageContext對象提供了對JSP頁面內所有的對象及名字空間的訪問,也就是說他可以訪問到本頁所在的Session,也可以取本頁面所在的application的某一屬性值,他相當於頁面中所有功能的集大成者,它的本類名也叫pageContext

1 JspWriter getOut() 返回當前客戶端響應被使用的JspWriter流(out)

2 HttpSession getSession() 返回當前頁中的HttpSession對象(session)

3 Object getPage() 返回當前頁的Object對象(page)

4 ServletRequest getRequest() 返回當前頁的ServletRequest對象(request)

5 ServletResponse getResponse() 返回當前頁的ServletResponse對象(response)

6 Exception getException() 返回當前頁的Exception對象(exception)

7 ServletConfig getServletConfig() 返回當前頁的ServletConfig對象(config)

8 ServletContext getServletContext() 返回當前頁的ServletContext對象(application)

9 void setAttribute(String name,Object attribute) 設置屬性及屬性值

10 void setAttribute(String name,Object obj,int scope) 在指定範圍內設置屬性及屬性值

11 public Object getAttribute(String name) 取屬性的值

12 Object getAttribute(String name,int scope) 在指定範圍內取屬性的值

13 public Object findAttribute(String name) 尋找一屬性,返回起屬性值或NULL

14 void removeAttribute(String name) 刪除某屬性

15 void removeAttribute(String name,int scope) 在指定範圍刪除某屬性

16 int getAttributeScope(String name) 返回某屬性的作用範圍

17 Enumeration getAttributeNamesInScope(int scope) 返回指定範圍內可用的屬性名枚舉

18 void release() 釋放pageContext所占用的資源

19 void forward(String relativeUrlPath) 使當前頁面重導到另一頁面

20 void include(String relativeUrlPath) 在當前位置包含另一文件

 

7.config - 配置對象 javax.servlet.ServletConfig

config對象是在一個Servlet初始化時,JSP引擎向它傳遞信息用的,此信息包括Servlet初始化時所要用到的參數(通過屬性名和屬性值構成)以及伺服器的有關信息(通過傳遞一個ServletContext對象)

1 ServletContext getServletContext() 返回含有伺服器相關信息的ServletContext對象 

2 String getInitParameter(String name) 返回初始化參數的值 

3 Enumeration getInitParameterNames() 返回Servlet初始化所需所有參數的枚舉

 

8. page - 當前JSP頁面對象 java.lang.object

page對象就是指向當前JSP頁面本身,類似類中的this關鍵字,對象就是頁面實例的引用。它可以被看做是整個JSP頁面的代表,它是java.lang.Object類的實例

1 class getClass 返回此Object的類 

2 int hashCode() 返回此Object的hash碼 

3 boolean equals(Object obj) 判斷此Object是否與指定的Object對象相等 

4 void copy(Object obj) 把此Object拷貝到指定的Object對象中 

5 Object clone() 克隆此Object對象 

6 String toString() 把此Object對象轉換成String類的對象 

7 void notify() 喚醒一個等待的線程 

8 void notifyAll() 喚醒所有等待的線程 

9 void wait(int timeout) 使一個線程處於等待直到timeout結束或被喚醒 

10 void wait() 使一個線程處於等待直到被喚醒 

11 void enterMonitor() 對Object加鎖 

12 void exitMonitor() 對Object* 

 

9. exception - 例外對象 java.lang.Throwable

exception對象是一個例外對象,當一個頁面在運行過程中發生了例外,就產生這個對象。如果一個JSP頁面要應用此對象,就必須把isErrorPage設為true,否則無法編譯。它是java.lang.Throwable的對象

1 String getMessage() 返回描述異常的消息 

2 String toString() 返回關於異常的簡短描述消息 

3 void printStackTrace() 顯示異常及其棧軌跡 

4 Throwable FillInStackTrace() 重寫異常的執行棧軌跡


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 上一章筆者介紹了關於WinForm環境。這一章筆者將繼續講WinForm。只不過更加的面向開發了。事實就是在學習工具箱裡面的控制項。對於WinForm開發來講,企業對他的要求並沒有那麼高。但是如果是游戲相關的話,不好意思!筆者覺得你可能選錯語言了。C++可能更合適你。有一點希望讀者們明白。下列講到的內 ...
  • 文檔目錄 本節內容: 配置ABP 替換內置服務 配置模塊 為一個模塊創建配置 替換內置服務 ABP在啟動時,提供基礎框架和模型來配置和模塊化。 置ABP 在預初始化事件中進行配置,示例: ABP進行了模塊化設計,不同的模塊都能配置ABP。例如,不同的模塊都能添加導航提供器把自己的菜單項加入到主菜單中 ...
  • 一、基本選擇器: ID選擇器:$("#id名稱") 例如:$("#div1").css("width","100px"); CLASS選擇器:$(".id名稱") 併列$("#id名稱,#id名稱") 後代$("#id名稱 名稱")二.過濾選擇器 第一個:$(".id名稱:first") 最後一個: ...
  • 《深入理解Java虛擬機》第二三章摘要 Java記憶體區域與記憶體溢出 Java虛擬機中的記憶體分配圖: 各個區域的特性總結如下表: 補充說明: 當多線程情形下,可能多個線程要在堆上分配記憶體,那麼可能出現記憶體分配的同步問題,解決方案有兩個,一個就是同步記憶體分配動作;另一個就是採用TLAB,即在Java堆中 ...
  • 英文文檔: Return a Boolean value, i.e. one of True or False. x is converted using the standard truth testing procedure. If x is false or omitted, this ret ...
  • 一.在java中提供的一些修飾符,這些修飾符可以修飾類、變數和方法,在java中常見的修飾符有:abstract(抽象的)、static(靜態的)、public(公共的)、protected(受保護的)、private(私有的)、synchronized(同步的)、native(本地的)、trans ...
  • 首先,說明一下多線程的應用場景:當python處理多個任務時,這些任務本質是非同步的,需要有多個併發事務,各個事務的運行順序可以是不確定的、隨機的、不可預測的。計算密集型的任務可以順序執行分隔成的多個子任務,也可以用多線程的方式處理。但I/O密集型的任務就不好以單線程方式處理了,如果不用多線程,只能用 ...
  • 在現實生活中,記錄日誌非常重要。銀行轉賬時會有轉賬記錄;飛機飛行過程中,會有黑盒子(飛行數據記錄器)記錄飛行過程中的一切。如果有出現什麼問題,人們可以通過日誌數據來搞清楚到底發生了什麼。對於系統開發、調試以及運行,記錄日誌都是同樣的重要。如果沒有日誌記錄,程式崩潰時你幾乎就沒辦法弄明白到底發生了什麼 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...