九大內置對象+四大範圍對象傳值

**

九大內置對象

**
定義: 爲了接受和處理用戶的請求,由tomcat自動創建的內置對象,目的是完成用戶數據傳遞和交互。在服務器組件數據的傳遞。

作用: 傳遞數據,內置對象相當於人體的血管,數據相當於血液,在各個組件之間傳遞。

-------------------------------------request---------------------------------------------
主要作用
接受和傳遞用戶的請求信息(包括請求參數,tomcat執行)
設定和傳遞服務器端組件設定的信息(屬性)
生存週期:
請求開始就由tomcat創建 ,請求結束被銷燬。
作用範圍:
請求範圍,由服務器決定

擴展
繼承Interface ServletRequest的子接口interface HttpServleRequest

interface HttpServleRequest
在javax.servelet.http包下,
只有一個實現類HttpServletRequestWrapper, 實現了http協議。
父接口爲ServletRequest, 父接口不支持Http協議。
Java web只支持http協議
實現interface HttpServleRequest的類class HttpServletRequestWrapper.

創建request對象的方式
第一種,用類。用與request相同類型(class HttpServletRequestWrapper) 的對象接收數據參數,耦合性太強,不建議用
(層與層之間數據傳遞用接口傳遞更好)

第二種,用接口。interface HttpServleRequest。

第三種,也可以用父接口接收,這會失去http的特徵,必須造型。

-------------------------------------response---------------------------------------------
生存週期:
一接受用戶請求的時候tomcat就創建,請求結束就銷燬
主要作用:
把結果信息發給瀏覽器,進行顯示
作用範圍:
請求範圍,由服務器決定

-------------------------------------session---------------------------------------------
主要作用:
傳遞驗證信息
生存週期:
用戶第一次發請求訪問服務器的動態組件,用戶下線銷燬。 (下線15分鐘後) (生存週期大於request)
作用範圍:
用戶範圍,由用戶決定

-------------------------------------application---------------------------------------------
生存週期:
服務器啓動創建,服務器關閉銷燬,只創建一個。
.注意
設置過多的application保存過多的對象,會導致效率降低,重則導致內存泄漏
作用範圍:
服務器範圍。
主要作用:
存放公共信息

-------------------------------------config---------------------------------------------
生存週期:
服務器啓動創建,服務器關閉銷燬,只創建一個。
主要作用:
存放或傳遞配置信息。Web.xm|組件配置信 息的初始化參數。
作用範圍:
服務器範圍。

-------------------------------------page---------------------------------------------
生存週期:
JSP頁面一被訪問就創建,離開頁面銷燬。
主要作用:
存放臨時信息。
作用範圍:
頁面範圍

-------------------------------------out---------------------------------------------
tomcat創建
與response類似,都是把信息傳給瀏覽器顯示
不建議用:
不符合mvc設計模式
不安全

-------------------------------------exception---------------------------------------------
主要作用:
傳遞異常信息
作用範圍:
服務器範圍

**

內置對象傳值

**
這裏都用 name= “zs” password=“123” 舉例

-------------------------------------request傳值--------------------------------------------
request.setAttribute(“name”," zte’ )
request.setAttribute(" password",“123”)
設置屬性
public sbstract void setAttribute (ava.lang.String name,java.lang.Object attribute)
獲取屬性
o public sbstract void getAttribute (Object類型,需造型)

用戶只發一-次請求, tomca創建request對象,後臺組件往request對象中設定屬性。
服務端發生跳轉的時候,用戶不知道後臺跳轉了哪些組件,不用重新發請求,請求沒有結束,request仍存在。
以該用戶請求對應的request拿屬性與參數,若還存在服務端跳轉則繼續跳轉,若沒有服務端跳轉,請求結束,response就將結果信息(屬性與參數)回傳給瀏覽器。
服務端跳轉,request 對象中的數據可以進行共享傳遞。
如果是客戶端跳轉,跳轉到新頁面後是一個新的請求, 會重新創建一個空的 request對象,沒有屬性和參數,無法傳遞數據

優點:
生存週期短,對內存沒有太大影響
服務端跳轉,安全。
用戶請求參數只在request埋放,其他內置對象拿不到請求參數

-------------------------------------re加粗樣式sponse傳值---------------------------------------------
同上

-------------------------------------session傳值---------------------------------------------
用戶發請求
獲取驗證信息
session.setAttribute(“flag”," ok")

驗證成功回到瀏覽器
取款時驗證身份
String flag= (String)session.getAttribute(flag);
session的時間銷燬,設定多久不操作session就自動銷燬
PS:直接進入轉賬界面轉賬失敗:爲新的用戶創建新的session

-------------------------------------page傳值------------------------------------------------------
不能通過page傳值
只能臨時存放數據
page內置對象可以往其他內置對象中設置屬性:
(不要這麼寫,看懂即可)
pageContext.setAttribute(" password",“ZS”,PageContext.XXXXXXX) ;
public static final int APPLICATION SCOPE - application對象
public static final int SESSION SCOPE - session對象
public static final int REQUEST SCOPE – request 對象

-------------------------------------application傳值---------------------------------------------
application.setAtrribute(name,zs);
application.getAtrribute(name);
缺點:
◆不安全
◆內存負擔過重
結論: -般不用pplication傳數據

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