JSP 三、JSP內置對象(上)

  1. 內置對象簡介

  2. 四種作用域範圍

  3. out

  4. request/respone

  5. session

  6. application

  7. 其它內置對象

 

3-1 JSP內置對象簡介

JSP九大內置對象:

out,request,response,session,application(五大常用對象)

Page,pageContext,exception.config(四個不太常用對象)

 

3-3 web程序的請求與響應模式

用戶發送請求(request),服務器給用戶響應(response)

 

3-4 out對象

什麼是緩衝區

1、緩衝區:Buffer,所謂緩衝區就是內存的一塊區域,用來保存臨時數據

2、IO輸出最原始的就是一個字節一個字節輸出,效率很低。緩衝區可以先將多個字節讀出來,再一次性的輸出,提高效率

out對象

out對象是JspWriter類的實例,是向客戶端(這裏指瀏覽器)輸出內容的常用對象。

常用方法:

  • void println()向客戶端打印字符
  • void clear()清除緩衝區的內容。如果在flush之後調用,會拋出異常
  • void clearBuffer() 也是清除緩衝區內容,但在flush之後不會拋出異常
  • void flush()將緩衝區內容輸出到客戶端
  • int getBufferSize()返回緩衝區的大小(字節數),如不設緩衝區則爲0
  • int getRemaining()返回緩衝區還剩餘多少可用
  • boolean isAutoFlush()返回緩衝區滿時,是否自動清空緩衝區
  • void close()關閉輸出流

 

3-6 get和post提交方式的區別

表單有兩種提交方式:get與post。定義在<form action="dologin.jsp" name="loginForm" method="提交方式***"></form> 動作/名稱等順序無所謂。

1.get:以【明文】方式,通過URL提交數據,數據在URL中【可以看到】。提交數據最多不超過【2KB】。安全性較低,但效率比post方式高。適合提交數據量不大,且安全要求不高的數據:比如:搜索、查詢等功能。

2.post:將用戶提交的信息封裝在HTML HEADER內。適合提交數據量大,安全性高的用戶信息。如:註冊、修改、上傳等功能。

 

3-7 request對象

內容:

客戶端的請求信息被封裝在request對象中,通過它才能瞭解到客戶的需求,然後做出響應。 它是HttpServletRequest類的實例。request對象具有請求域,即完成客戶端的請求之前,該對象一直有效。

方法:

  • object getAttribute(String name) 返回指定屬性的屬性值
  • Enumeration getAttributeNames() 返回所有可用屬性名的枚舉
  • String getCharacterEncoding() 返回字符編碼方式
  • int getContentLength() 返回請求體的長度(以字節數)
  • String getContentType() 得到請求體的MIME類型
  • ServletInputStream getInputStream() 得到請求體中一行的二進制流
  • String getParameter(String name) 返回name指定參數的參數值
  • Enumeration getParameterNames() 返回可用參數名的枚舉
  • String[] getParameterValues(String name) 返回包含參數name的所有值的數組
  • String getProtocol() 返回請求用的協議類型及版本號
  • String getScheme() 返回請求用的計劃名,如:http.https及ftp等
  • String getServerName() 返回接受請求的服務器主機名
  • int getServerPort() 返回服務器接受此請求所用的端口號
  • BufferedReader getReader() 返回解碼過了的請求體
  • String getRemoteAddr() 返回發送此請求的客戶端IP地址

特別注意:在通過url傳遞參數時會出現中文亂碼問題,這時request.setCharacterEncoding("utf-8")是不能解決的,需要修改配置文件,在Tomcat目錄的confi下的web.xml的<connect ></connect>標籤內追加URIEncoding="utf-8",然後重啓服務器生效

 

3-10 respone對象

設置響應的MIMI類型 response.setContentType("text/html;charset=utf-8")

向客戶端輸出字符串對象, 而且先於jspWriter,使用out.flush()來避免 RrintWriter response.getWriter()

請求重定向 response.sendRedirect("index.jsp");

 

3-11 請求重定向與請求轉發的區別

請求重定向:服務端responce.sendRedirect("xx.jsp")重定向。【客戶端行爲】:即客戶端會訪問兩次,第一次訪問後會立即跳轉到第二個重定向頁面上,【從本質上講等於兩次請求】,而前一次的請求封裝的request對象不會保存,地址欄的URL地址會改變。

請求轉發:服務端request.getRequestDispatcher("xx.jsp").forward(request,response)請求轉發。forward(request,response)用於保存內置對象request和response。【服務器行爲】:服務器會代替客戶端去訪問轉發頁面,【從本質是一次請求】,轉發後請求對象會保存,地址欄的URL地址不會改變。

 

4-1 什麼是session

1、session表示客戶端與服務器的一次會話

2、Web中的session指:用戶在瀏覽某個網站時,從進入網站到瀏覽器關閉所經過的這段時間,也就是用戶瀏覽網站所花費的時間。

3、在服務器的內存中保存着不同用戶的session,一個用戶對應一個session

4、從上述定義中可以看到,session實際是一個【特定的時間概念】 

 

4-2 session對象

  1. ession是JSP的一個內置對象,是HttpSession類的實例。
  2. 從客戶打開瀏覽器並連接到服務器開始,到客戶關閉瀏覽器窗口斷開與服務器的連接,這一過程成爲一個會話。
  3. 當客戶在同一個網站的不同頁面之間進行切換並訪問時,服務器是通過session來判斷這些請求是否來自同一個客戶。
  4. session一般有時間限制,長時間不操作可能會導致session失效。session失效後原session中保存的屬性值會全部丟失。
  5. setMaxInactiveInterval(int i) 該方法可直接設定session的生存時間,超過該時間session會重新創建。(單位:秒)

session對象的常用方法有:

  • long getCreationTime() : 返回session的創建時間;
  • public String getId() : 返回session的唯一ID號(該ID在session生成時,由JSP引擎創建)
  • public Object setAttribute(String name,Object value) : 按照鍵值對的方式在該session會話中保存一個屬性(該屬性是一個對象類型)
  • public Object getAttribute(String name) : 返回指定名稱的屬性的值(如果該名稱的屬性不存在,則返回null)
  • String[] getValueNames() : 返回一個(包含在此session中所有可用屬性)的數組。
  • int getMaxInactiveInterval() : 返回一個時間,該時間表示當前session間隔多少時間之後會失效(單位:秒)。

 

4-3 session的生命週期

1.創建:

當客戶端第一次訪問某個jsp或者servlet時候,服務器會爲當前會話創建一個SessionId,每次客戶端向服務器發送請求時,都會將此SessionId攜帶過去,服務端會對此SessionId進行校驗

2.活動:

①某次會話當中通過超鏈接打開的新頁面屬於同一次會話

②只要當前會話頁面沒有全部關閉,重新打開的瀏覽器窗口訪問同一個項目資源時屬於同一次會話

③除非本次會話的所有頁面都關閉後在重新訪問某個JSP或者servlet將會創建新的會話

注意:注意原有會話還存在,只是這個舊的Session仍然存在於服務端,只不過再也沒有客戶端會攜帶它然後交予服務端校驗

3.銷燬:三種方式

①調用了session.invalidate()方法

②Session過期(超時)

③服務器重新啓動 

設置session超時的兩種方式: tomcat默認session超時時間爲30分鐘

1:session.setMaxInactiveInterval(時間);//單位是秒

2:在web.xml配置 <session-config> <session-timeout> 10 <session-timeout> <session-config> //單位是分鐘

 

4-6 application對象

application介紹

1、實現了用戶間數據的共享,可存放全局變量。(類似靜態對象)

2、開始於服務器啓動,終止於服務器的關閉(生命週期)

3、在用戶的前後連接或不同用戶之間的連接中,可以對application對象的同一屬性進行操作

4、在任何地方對application對象屬性進行操作,都將影響到其他用戶對此的訪問

5、application對象是ServletContext類的實例

常用方法:

  • public void setAttribute(String name,Object value)使用指定名稱將對象綁定到此會話。
  • public Object getAttribute(String name)返回於此會話中指定名稱綁定在一起的對象,如果沒有對象綁定在該名稱下,則返回null。
  • Enumeration getAttributeName()返回所有可用屬性名的枚舉。
  • String getServerInfo()返回jsp(servlet)引擎名及版本號。

 

4-8 page對象

page對象:

是指指向當前JSP頁面本身,有點像類中的this指針,它是java.long.Object類的實例。

常用方法如下:

  • class getClass()返回此Object的類。
  • int hashCode()返回Object的hash碼。
  • Boolean equals(Object obj)判斷此Object是否與指定的Object對象相等。
  • void copy(Object obj)把此Object拷貝到指定的Object對象中。
  • Object clone()克隆此object對象。
  • String toString()把Object對象轉換成String類的對象。
  • void notify()喚醒一個等待的線程。
  • void notifyAll()喚醒所有等待的線程。
  • void wait(int timeout)使一個線程處於等待直到timeout結束或被喚醒。
  • void wait()使一個線程處於等待直到被喚醒。

 

 4-9 pageContext對象和config對象

pageContext對象

  1. ageContext對象提供了對jsp頁面內所有的對象及名字空間的訪問。
  2. pageContext對象可以訪問到本頁所有的Session,也可以區本頁面所在的application的某一屬性值。
  3. pageContext對象相當於頁面中所有功能的集大成者。
  4. pageContext對象的本類名也叫pageContext。

pageContext對象的常用方法:

  • 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 getAttribute(String name)返回某屬性的作用範圍。
  • void forward(String relativeURLPath)是當前頁重導到另一頁面。
  • void include(String relativeURLPath)在當前位置包含另一文件。

config對象 常用方法:

  • ServletContext getServletContext()返回含有服務器相關信息的ServletContext對象
  • String getInitParameter(String name)返回初始化參數的值
  • Enumeration getInitParameterNames()返回Servlet初始化所需所有參數的枚舉

 

4-10 exception對象

1.需要捕獲異常的頁面,在page指令中寫屬性errorpage=“出錯跳轉到的頁面”

2.在跳轉到的錯誤處理頁面page指令中輸入屬性isErrorPage=“true”

JSP內置對象 - Exception

  1. Exception是java.lang.Throwable類的實例
  2. 當一個頁面運行發生了異常,就產生了該Exception對象。
  3. 若一個JSP頁面要使用該Exception對象,需要將isErrorPage的值設爲true

Exception對象常用方法:

  • String getMessage() 返回描述異常的信息
  • String toString() 返回關於異常的簡短描述信息
  • void printStackTrace() 顯示異常及其棧軌跡
  • Throwable FillInStackTrace() 重寫異常的執行棧軌跡

 

 

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