java application作用域_servlet三大作用域:request,session,application
1. request
request是表示一個(gè)請求,只要發(fā)出一個(gè)請求就會(huì)創(chuàng)建一個(gè)request,它的作用域:僅在當(dāng)前請求中有效。
用處:常用于服務(wù)器間同一請求不同頁面之間的參數(shù)傳遞,常應(yīng)用于表單的控件值傳遞。
方法:request.setAttribute(); request.getAttribute(); request.removeAttribute(); request.getParameter().
2. session
服務(wù)器會(huì)為每個(gè)會(huì)話創(chuàng)建一個(gè)session對象,所以session中的數(shù)據(jù)可供當(dāng)前會(huì)話中所有servlet共享。
會(huì)話:用戶打開瀏覽器會(huì)話開始,直到關(guān)閉瀏覽器會(huì)話才會(huì)結(jié)束。一次會(huì)話期間只會(huì)創(chuàng)建一個(gè)session對象。
用處:常用于web開發(fā)中的登陸驗(yàn)證界面(當(dāng)用戶登錄成功后瀏覽器分配其一個(gè)session鍵值對)。
方法:session.setAttribute(); session.getAttribute(); session.removeAttribute();
獲得session對象方法:
在Servlet中:HttpSession session = request.getSession();
由于session屬于jsp九大內(nèi)置對象之一,當(dāng)然可以直接使用。例如:。
session被銷毀
1)session超時(shí);
2)客戶端關(guān)閉后,再也訪問不到和該客戶端對應(yīng)的session了,它會(huì)在超時(shí)之后被銷毀;
3)調(diào)用session. invalidate();
備注: session是服務(wù)器端對象,保存在服務(wù)器端。并且服務(wù)器可以將創(chuàng)建session后產(chǎn)生的sessionid通過一個(gè)cookie返回給客戶端,以便下次驗(yàn)證。(session底層依賴于cookie)
3. Application(ServletContext)
作用范圍:所有的用戶都可以取得此信息,此信息在整個(gè)服務(wù)器上被保留。Application屬性范圍值,只要設(shè)置一次,則所有的網(wǎng)頁窗口都可以取得數(shù)據(jù)。ServletContext在服務(wù)器啟動(dòng)時(shí)創(chuàng)建,在服務(wù)器關(guān)閉時(shí)銷毀,一個(gè)JavaWeb應(yīng)用只創(chuàng)建一個(gè)ServletContext對象,所有的客戶端在訪問服務(wù)器時(shí)都共享同一個(gè)ServletContext對象;ServletContext對象一般用于在多個(gè)客戶端間共享數(shù)據(jù)時(shí)使用;
獲取Application對象方法(Servlet中):
ServletContext app01 = this.getServletContext();
app01.setAttribute("name", "kaixuan");??? //設(shè)置一個(gè)值進(jìn)去
ServletContext app02 = this.getServletContext();
app02.getAttribute("name");??? //獲取鍵值對
ServletContext同屬于JSP九大內(nèi)置對象之一,故可以直接使用
備注:服務(wù)器只會(huì)創(chuàng)建一個(gè)ServletContext 對象,所以app01就是app02,通過app01設(shè)置的值當(dāng)然可以通過app02獲取。
總結(jié):
1.作用域: request session application
*??? 使用作用域傳遞數(shù)據(jù)和存儲(chǔ)數(shù)據(jù)
*??? 使用作用域傳遞數(shù)據(jù)時(shí),必須掌握作用域?qū)?yīng)的生命周期和作用范圍
*
2. * 生命周期
* (1)? request:只限于一次請求
* (2)? session:一次會(huì)話(多次請求)
*??? 開始
*????? 用戶向服務(wù)器發(fā)送請求的時(shí)候
*????? 結(jié)束
*??????? 客戶端
*???????? 丟失JsessionId值的時(shí)候(關(guān)閉瀏覽器)
*??????? 服務(wù)器端
*??????????? 關(guān)閉服務(wù)器
*??????????? 超過會(huì)話的不活動(dòng)周期時(shí)間
*? (3) application:項(xiàng)目的加載到卸載
*3.作用范圍
* (1) requset:所有被請求轉(zhuǎn)發(fā)的Servlet
* (2) session:所有的Servlet
*? (3)application:所有的Servlet(換一個(gè)瀏覽器演示,跟session作用域區(qū)分)
*
4.*如何正確的選擇作用域
*(1)? request:跟當(dāng)前操作功能相關(guān)
* (2) session: 跟用戶信息相關(guān)
* (3) application:跟項(xiàng)目全局信息相關(guān)----》京東配送地址
*
* 5.如何正確的選擇作用域不正確,會(huì)出現(xiàn)什么情況
*?? 內(nèi)存浪費(fèi)
總結(jié)
以上是生活随笔為你收集整理的java application作用域_servlet三大作用域:request,session,application的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java工程加包_Java工程中添加依赖
- 下一篇: java axis2小实例_java w