九大內置對象

JSP內置對象簡介
JSP內置對象是web容器創建的一組對象,不用使用new關鍵字就可以使用的對象。
例如:
<% out.println(“hello”); %>
4.2、web程序的請求與響應模式
用戶請求:request
服務器響應:response
(以登陸爲例講解)

4.3、out對象
緩衝區:Buffer,所謂緩衝區就是內存的一塊區域用來保護臨時數據。
out對象是javax.servlet.jsp.JspWriter類的實例,是向客戶端輸出內容常用的對象。
常用方法:
 void println() 向客戶端打印字符串
 void clear() 清除緩衝區的內容,如果在flush之後調用會拋出異常
 void clearBuffer() 清除緩衝區的內容,如果在flush之後調用不會拋出異常
 void flush() 將緩衝區內容輸出到客戶端
 int getBufferSize() 返回緩衝區以字節數的大小,如不設緩衝區則爲0
 int getRemaining() 返回緩衝區還剩餘多少可用
 boolean isAutoFlush() 返回緩衝區滿時,是自動清空還剩拋出異常
 void close() 關閉輸出流
4.4、request對象
request對象是javax.servlet.http.HttpServletRequest類的實例,表示客戶端的一次請求,客戶端的請求信息被封裝在request對象中,通過它才能瞭解到客戶的需求,然後做出響應。request對象具有請求域,即完成客戶端的請求之前,該對象一直有效。
常用方法:
 String getParameter(String name) 返回name指定參數的參數值
 String[] getParameterValues(String name) 返回包含參數name的所有值的數組
 void setAttribute(String,Object) 存儲此請求中的屬性
 object getAttribute(String name) 返回指定屬性的屬性值
 String getContentType() 得到請求體的MIME類型
 String getProtocol() 返回請求用的協議類型及版本號
 String getServerName() 返回接受請求的服務器主機名
 void setCharacterEncoding(String) 設置接收客戶端請求內容的字符集
 int getServerPort() 返回服務器接受此請求所用的端口號
 String getCharacterEncoding() 返回字符編碼方式
 void setCharacterEncoding() 設置請求的字符編碼方式
 int getContentLength() 返回請求體的長度(以字節數)
 String getRemoteAddr() 返回發送此請求的客戶端IP地址
 String getRealPath(String path) 返回一虛擬路徑的真實路徑
 String request.getContextPath() 返回上下文路徑
補充:
設置URL傳參的字符集問題:打開apache安裝目錄,conf–>server.xml,找到Connector標籤,在該標籤內添加URIEncoding=”utf-8”屬性
4.5、response對象
response對象是javax.servlet.http.HttpServletResponse類的實例,包含了響應客戶請求的有關信息,但在JSP中很少直接用到它。response對象具有頁面作用域,即訪問一個頁面時,該頁面內的response對象只能對這次訪問有效,其他頁面的response對象對當前頁面無效。
常用方法:
 String getCharacterEncoding() 返回響應用的是何種字符編碼
 void setContentType(String type) 設置響應的MIME類型
 PrintWriter getWriter() 返回可以向客戶端輸出字符的一個對象(比較PrintWriter與內置out對象的區別)
PrintWriter對象輸出的內容總是提前與out內置對象,解決方法是在out對象輸出完後加上out.flusht()清空緩衝區
 sendRedirect(String location) 重新定向客戶端的請求
4.6、session對象
session表示客戶端與服務器的一次會話,Web中的session指的是用戶在瀏覽某個網站時,從進入網站到瀏覽器關閉所經過的這段時間,也就是用戶瀏覽這個網站所花費的時間,即session實際上是一個特定的時間概念。在服務器的內存中保存着不同用戶的session。
session對象是javax.servlet.http.HttpSession類的實例,是一個JSP內置對象,在第一個JSP頁面被裝載時自動創建,完成會話期管理。從一個客戶打開瀏覽器並連接到服務器開始,到客戶關閉瀏覽器離開這個服務器結束,被稱爲一個會話。
當一個客戶訪問一個服務器時,可能會在服務器的幾個頁面之間切換,服務器應當通過某種辦法知道這是一個客戶,這就需要session對象。

常用方法
 long getCreationTime() 返回session創建時間
 String getId() 返回session創建時JSP引擎爲它設的唯一ID號
 Object setAttribute(String name,Object value) 使用指定名稱將對象綁定到此會話
 Object getAttribute(String name) 返回與此會話中的指定名稱綁定在一起的對象,如果沒有對象綁定在該名稱下,則返回NULL
 String[] getValueNames() 返回一個包含此session中所有可用屬性的數組
 int getMaxInactiveInterval() 返回兩次請求間隔多長時間此session被取消(單位秒)
session的生命週期
1) 創建
 當客戶端第一次訪問某個JSP或者Servlet時候,服務器會爲當前會話創建一個SessionId,每次客戶端向服務端發送請求時,都會將此SessionId攜帶過去,服務端會對此SessionId進行校驗。
2) 活動
 某次會話當中通過超鏈接打開的新頁面屬於同一次會話,只有當前會話頁面沒有全部關閉,重新打開新的瀏覽器窗口訪問同一項目資源時屬於同一次會話。除非本次會話的所有頁面都關閉後再重新訪問某個JSP或者Servlet將會創建新的會話。(注意原有會話還存在,只是這個舊的SessionId仍然存在於服務端,只不過再也沒有客戶端會攜帶它然後交予服務端校驗)
3) 銷燬
 session的銷燬只有三種方式:
 調用session.invalidate()方法
 session超時過期
 服務器重新啓動
設置session有效期
Tomcat默認session超時時間爲30分鐘
設置session超時有兩種方式:
 session.setMaxInactiveInterval(時間); //單位是秒
 在web.xml配置


10 //單位是分鐘

4.7、application對象
application對象是javax.servlet.ServletContext類的實例,實現了用戶間數據的共享,可存放全局變量。application對象開始於服務器啓動,終止於服務器的關閉,在用戶的前後連接或不同用戶之間的連接中,可以對application對象的同一屬性進行操作。在任何地方對application對象屬性的操作,都將影響到其他用戶對此的訪問。服務器的啓動和關閉決定了application對象的生命。
常用方法
 void setAttribute(String name,Object value) 使用指定名稱將對象綁定到此會話
 Object getAttribute(String name) 返回與此會話中的指定名稱綁定在一起的對象,如果沒有對象綁定在該名稱下,則返回null
 Enumeration getAttributeNames() 返回所有可用屬性名的枚舉
 String getServerInfo() 返回JSP(SERVLET)引擎名及版本號
4.8、page對象
page對象就是指向當前JSP頁面本身,有點像類中的this指針,它是java.lang.Object類的實例,具有與Object類相同的方法。
4.9、pageContext對象
pageContext對象是javax.servlet.jsp.PageContext類的實例,提供了對JSP頁面內所有的對象及名字空間的訪問,可以訪問到本頁所在的session,也可以取本頁面所在的application的某一屬性值,相當於頁面中所有功能的集大成者。
常用方法
 JspWriter getOut() 返回當前客戶端響應被使用的JspWriter流(out)
 HttpSession getSession() 返回當前頁面中的HttpSession對象(session)
 Object getPage() 返回當前頁的Object對象(page)
 ServletRequest getRequest() 返回當前頁的ServletRequest對象(request)
 ServletResponse getResponse() 返回當前頁的ServletResponse對象(response)
 void setAttribute(String name,Object attribute) 設置屬性及屬性值
 Object getAttribute(String name,int scope) 在指定範圍內取屬性的值
 int getAttributeScope(String name) 返回某屬性的作用範圍
 void forward(String relativeUrlPath) 使當前頁面重導到另一個頁面
 void include(String relativeUrlPath) 在當前位置包含另一個文件
4.10、config對象
config對象是javax.servlet.ServletConfig類的實例,是在一個Servlet初始化時,JSP引擎向它傳遞信息用的,此信息包括Servlet初始化時所要用到的參數(通過屬性名和屬性值構成)以及服務器的有關信息(通過傳遞一個ServletContext對象)
常用方法
 ServletContext getServletContext() 返回含有服務器相關信息的ServletContext對象
 String getInitParameter(String name) 返回初始化參數的值
 Enumeration getInitParameterNames() 返回Servlet初始化所需所有參數的枚舉
4.11、exception對象
exception對象是java.lang.Throwable類的實例,是一個異常對象,當一個頁面在運行過程中發生了異常,就產生這個對象。如果一個JSP頁面要應用此對象,就必須把isErrorPage設爲true,否則無法編譯。
常用方法
 String getMessage() 返回描述異常的消息
 String toString() 返回關於異常的簡短描述消息
 void printStackTrace() 顯示異常及其棧軌跡
 Throwable FillInStackTrace() 重寫異常的執行棧軌跡
實例
error.jsp頁面

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章