application認識(一)

事先說明幾個常見的內置對象:web

out:用於向客戶輸出數據數據庫

request:主要用於客戶端請求的數據信息瀏覽器

response:用於響應客戶端請求並向客戶端輸出信息服務器

session:用於記錄會話狀態的相關信息cookie

application:相似於系統的全局變量,用於實現web應用中的資源共享session

使用session能夠保存當前用戶的會話狀態信息,一我的用戶對應一個session,可是若是要訪問人數,須要web應用系統中的全部用戶共享,這時候就要用到application。app

application對象相似於系統的「全局變量」用於同一個應用內的全部用戶之間數據共享。jsp

例子網站

<%spa

Integer count=(Integer)application.getAttribute("count");

if(count!=null){

count=count+1;

}else{

count=1;

}

%>

展現頁面 

<%

Integer i=(Integer)application.getAttribute("count");

out.print("統計訪問量:目前有"+i+"我的訪問過本網站");

%>

application做用域是針對整個web應用,被該應用下全部用戶所共享,在web應用運行期間,全部頁面均可以訪問application做用域內的變量,其做用域作大,application做用域經過application對象的setAttribute()和getAttribute()方法訪問。

例子:

testOne.jsp頁面

<%

String app="abc";

String ses="session";

session.setAttribute("sesName",ses);

applicatin.setAttribute("appNmae",app); 

response.sendRedirect("xxxxx.jsp");

%>

testTwo.jsp頁面:

app:<%=session.getAttribute("sesName")%>

ses:<%=application.getAttribute("appNmae")%>

若是運行testOne頁面則輸出:

app:abc

ses:session

若是直接運行testTwo.jsp頁面

app:abc

ses:null

說明緣由:

因爲session做用域是針對當前會話,多個會話之間不能共享,因此沒法讀取ses變量。而application做用域是正對整個應用,因此appName變量能夠被再次讀取(注:若重啓web應用,現有的application做用域會失效)

對比:

1 session在服務器,cookie在客戶端  2 session默認被存在在服務器的一個文件裏(不是內存)  3 session的運行依賴sessionid,而sessionid是存在cookie中的,也就是說,若是瀏覽器禁用了cookie ,同時session也會失效,能夠經過其它方式實現  4 session能夠放在文件、數據庫、或內存中均可以。  5 登陸驗證或保持一段時間登陸狀態,通常會用session來驗證

相關文章
相關標籤/搜索