事先說明幾個常見的內置對象: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來驗證