為了便於Web開發,在JSP內部設定了一些預設的物件,這些物件不需要預先宣告就可以在指令碼和表示式中使用。內建物件也稱隱含物件。常用的內建物件有:request,response ,out,session,application,pageContext,config,page和exception.這裡,我們介紹session物件。
工具/原料
Eclipse
Tomcat
一、基本概念
session(會話)物件是類javax.servlet.Httpsession的一個物件。session是從客戶端連線伺服器開始,到與伺服器斷開為止。
session物件用於儲存每個與伺服器建立連線的客戶端的資訊,session的ID保存於客戶端的Cookie中,這個session ID標識唯一和使用者,與其他使用者的session ID不同。
session物件的ID:
當一個客戶端訪問伺服器的一個JSP頁面時,JSP引擎產生一個session物件,同時分配一個String型別的ID號,併發給客戶端。客戶端將其儲存於Cookie.a其標誌了一個唯一的ID;採用getID()方法返回session物件在伺服器端的編號。伺服器端通過此ID,唯一地識別一個使用者,並提供特殊的服務。
session物件的有效期:
存在以下幾個情況時,session物件和其儲存的資料會消失,情況有:
當用戶關閉當前正在使用的瀏覽器時;
關閉網頁伺服器。
使用者未向伺服器提出請求超預設時,Tomcat伺服器預設為30分鐘;
執行程式結束session.
出現以上四種情況時,session物件會消失。
二、訪問session物件的資料
首先,建立個session變數:
方式為:session.setAttribute("變數名稱",變數內容);
在JSP語句中的程式碼參考:
<%
session.setAttribute("id","編號"); //設定字串
session.setAttribute("date",new Date(86400*10));//設定日期
session.setAttribute("level",new Integer(3));//設定整數
%>
其次,返回session中的變數:
在設定了變數資料之後,怎樣讀取呢,使用下面的語法格式即可讀取:
session.getAttribute("變數名稱");//變數名稱,即你之前設定的;返回的資料型別為物件(Object),之後你需要轉換成其他的資料型別。
返回session中的所有變數:
如果你需要獲取全部的資料,但又不知道名稱怎麼辦?你可以使用以下的方法:
session.getAttributeNames();//返回的資料型別是一個列舉類集合,通過迴圈讀取,你就可以得到所胡的名稱與值了;
之後,清除session中的變數:
如果 session中的某個變數不需要使用了,怎麼辦呢,當然是要清除掉了,方法是:
session.removeAttribute("變數名稱");
最後,結束session會話:
對於已經建立好的session,我們可以使用以下方法來結束session對話,方法是:
session.invalidate();
三、session物件使用的小例子
使用session物件的isNew()的方法,我們可以做一個小巧簡單的網站訪問人數。isNew()方法,是確定這個session是否新建立的,如果是的,則返回boolean型別的true,否則返回false;
第一次執行時,你會發現此值為1;另一個瀏覽器視窗時沒有變化;你可以再打開個新瀏覽器或者關閉當前瀏覽器,再開啟此頁面時,網站人數又增加了。通過嘗試,你就會了解一些關session的生命週期。
注意事項
如果你感覺不錯,請點個贊吧!