session簡單介紹
在web開發中,服務器可以為每個用戶瀏覽器創建一個會話對象(session對象),注意:一個瀏覽器獨占一個session對象(默認情況下)。因此,在需要保存用戶數據時,服務器程序可以把用戶數據寫到用戶瀏覽器獨占的session中,當用戶使用瀏覽器訪問其它程序時,其它程序可以從用戶的session中取出該用戶的數據,為用戶服務。
session和cookie的主要區別
- cookie是把用戶的數據寫給用戶的瀏覽器。
- session技術把用戶的數據寫到用戶獨占的session中。
- session對象由服務器創建,開發人員可以調用request對象的getsession方法得到session對象。
基本語法
1,對于值類型的變量,session中保存的是值類型的拷貝
session["__test0"] = 1; int i = (int)session["__test0"]+1; int j = (int)session["__test0"];
結果:
i=2,j=1
2,對于引用類型的變量,session中保存的是引用
cdacommon cda = new cdacommon(); session["__test"] = cda.getdataset("select top 1 * from tb_customer"); dataset ds = (dataset)session["__test"]; dataset ds2 = (dataset)session["__test"]; ds.tables[0].rows[0][0]="9999";
結果:
ds.tables[0].rows[0][0]=="9999"
ds2.tables[0].rows[0][0]=="9999";
3,session周期
新的瀏覽器窗口啟動后,開始一個新的session,觸發global的session_start的調用,從第一個瀏覽器窗口打開的瀏覽器窗口不啟動新的session。session過期后,執行頁面的提交也會觸發session_start,等于是新的一個session。
4,調用session
對于web service,每個方法的調用都會啟動一個session,可以用下面的方法來使多個調用在同一個session里 cwssyscfg cwscfg = new cwssyscfg(); cwscfg.cookiecontainer = new system net.cookiecontainer(); cwssyscfg是一個web service類,web service的給代理類設置cookiecontainer屬性,只要多個代理的cookiecontainer屬性是相同的值,則對這些web service的調用在同一個session??梢杂脝卫J絹韺崿F。
5,session數據有效期
只要頁面有提交活動,則session的所有項都會保持,頁面在20分鐘(默認配置)內沒有任何提交活動時session會失效。session內存儲的多個數據項是整體失效的。
6,session的保存
在session中如果保存的是非序列化的類比如dataview,在用sqlserver保存session的模式下,無法使用。查看一個類是否是序列化的方法是,需看是否用[serializable]來標記了該類.
在jsp中
jsp的session是使用bean的一個生存期限,一般為page,session意思是在這個用戶沒有離開網站之前一直有效,如果無法判斷用戶何時離開,一般依據系統設定,tomcat中設定為30分鐘.
jsp使用一個叫httpsession的對象實現同樣的功能。httpsession 是一個建立在cookies 和url-rewriting上的高質量的界面。session的信息保存在服務器端,session的id保存在客戶機的cookie中。事實上,在許多服務器上,如果瀏覽器支持的話它們就使用cookies,但是如果不支持或廢除了的話就自動轉化為url-rewriting,session自動為每個流程提供了方便地存儲信息的方法。
httpsession具有如下api:
getid 此方法返回唯一的標識,這些標識為每個session而產生。當只有一個單一的值與一個session聯合時,或當日志信息與先前的sessions有關時,它被當作鍵名用。
getcreationtime 返回session被創建的時間。最小單位為千分之一秒。為得到一個對打印輸出很有用的值,可將此值傳給date constructor 或者gregoriancalendar的方法settimeinmillis.
getlastaccessedtime 返回session最后被客戶發送的時間。最小單位為千分之一秒。
getmaxinactiveinterval 返回總時間(秒),負值表示session永遠不會超時。
getattribute 取一個session相聯系的信息。(在jsp1.0中為 getvalue)
integer item = (integer) session.getattribute("item") //檢索出session的值并轉化為整型
setattribute 提供一個關鍵詞和一個值。會替換掉任何以前的值。(在jsp1.0中為putvalue)
session.setattribute("itemvalue", itemname); // itemvalue 必須不是must簡單類型
在應用中使用最多的是getattribute和setattribute.現以一個簡單的例子來說明session的應用,test1.jsp(信息寫入session),test2.jsp(從session讀出信息)。
test1.jsp
<html> <head> <title> document </title> </head> <body bgcolor="#ffffff"> <% session.setattribute("str",new string(“this is test”)); %> </body> </html>
test2.jsp
<html> <head> <title> new document </title> </head> <body bgcolor="#ffffff"> <% string ls_str=null; ls_str=(string)session.getattribute("str"); out.println(“從session里取出的值為:”+ls_str); %> </body> </html>
到此這篇關于jsp session.setattribute()和session.getattribute()用法案例詳解的文章就介紹到這了,更多相關jsp session.setattribute()和session.getattribute()用法內容請搜索碩編程以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持碩編程!