JAVA中的ssion 是干什么用的 ?
有以下幾種用途:
通過 ssion 來儲存用戶信息。
存儲用戶的對話狀態,對話狀態就是當前用戶和服務。
是一個jsp內置對象,保存跟一個會話相關的信息。JAVA中的ssion的作用非常重要,起到保存對話的作用。
Java中Session有什么作用
簡單通俗的講ssion就是象一個臨時的容器
來存放這些臨時的東西
從你登陸開始就保存在ssion里
當然你可以自己設置它的有效時間和頁面
舉個簡單的例子
我們做一個購書的JSP網站
顧客買書的時候會挑選出一些書
但是在付錢之前還可以修改,所以不能存到數據庫
就可以先保存在ssion里
等到確認了以后再放入數據庫...
JAVA中的ssion 是干什么用的 ?怎么給ssion賦值
ssion就是一個會話
,在瀏覽器不關閉的前提下,可以保存用戶的信息,就是象一個臨時的容器,來存放這些臨時的東西。比如登錄的保存用戶信息從一個網頁跳轉到另一個網頁,用戶信息就可以用ssion保存網站購物車可以用ssion實現
ssion賦值:
Request.getSession().tAttribute(key,value);
Java中ssion是怎樣定義的,它的作用域在哪
首先要明確一個概念,ssion并不是java獨有的,而是基于http的(jsp、asp.net、php等等技術都會涉及到ssion),下面我來講解一下ssin的具體內容:
ssion機制是一種服務器端的機制,服務器使用一種類似于散列表的結構(也可能就是使用散列表)來保存信息。
當程式需要為某個客戶端的請求創建一個ssion的時候,服務器首先檢查這個客戶端的請求里是否已包含了一個ssion標識 - 稱為ssion id,如果已包含一個ssion id則說明以前已為此客戶端創建過ssion,服務器就按照ssion id把這個ssion檢索出來使用(如果檢索不到,可能會新建一個),如果客戶端請求不包含ssion id,則為此客戶端創建一個ssion并且生成一個和此ssion相關聯的ssion id,ssion id的值應該是個既不會重復,植蝗菀妝徽業焦媛梢苑略斕淖址???飧?ession id將被在本次響應中返回給客戶端保存。
保存這個ssion id的方式能采用cookie,這樣在交互過程中瀏覽器能自動的按照規則把這個標識發揮給服務器。一般這個cookie的名字都是類似于SEEESIONID,而。比如weblogic對于web應用程式生成的cookie,JSESSIONID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764,他的名字就是JSESSIONID。
由于cookie能被人為的禁止,必須有其他機制以便在cookie被禁止時仍然能夠把ssion id傳遞回服務器。經常被使用的一種技術叫做URL重寫,就是把ssion id直接附加在URL路徑的后面,附加方式也有兩種,一種是作為URL路徑的附加信息,表現形式為http://...../xxx;jssionid=ByOK ... 99zWpBng!-145788764另一種是作為查詢字符串附加在URL后面,表現形式為http://...../xxx?jssionid=ByOK ... 99zWpBng!-145788764
這兩種方式對于用戶來說是沒有差別的,只是服務器在解析的時候處理的方式不同,采用第一種方式也有利于把ssion id的信息和正常程式參數區分開來。
為了在整個交互過程中始終保持狀態,就必須在每個客戶端可能請求的路徑后面都包含這個ssion id。
另一種技術叫做表單隱藏字段。就是服務器會自動修改表單,添加一個隱藏字段,以便在表單提交時能夠把ssion id傳遞回服務器。
這種技術目前已較少應用,筆者接觸過的非常古老的iPlanet6(SunONE應用服務器的前身)就使用了這種技術。實際上這種技術能簡單的用對action應用URL重寫來代替。
在談論ssion機制的時候,常常聽到這樣一種誤解“只要關閉瀏覽器,ssion就消失了”。其實能想象一下會員卡的例子,除非顧客主動對店家提出銷卡,否則店家絕對不會輕易刪除顧客的資料。對ssion來說也是相同的,除非程式通知服務器刪除一個ssion,否則服務器會一直保留,程式一般都是在用戶做log off的時候發個指令去刪除ssion。然而瀏覽器從來不會主動在關閉之前通知服務器他將要關閉,因此服務器根本不會有機會知道瀏覽器已關閉,之所以會有這種錯覺,是大部分ssion機制都使用會話cookie來保存ssion id,而關閉瀏覽器后這個ssion id就消失了,再次連接服務器時也就無法找到原來的ssion。如果服務器設置的cookie被保存到硬盤上,或使用某種手段改寫瀏覽器發出的HTTP請求頭,把原來的ssion id發送給服務器,則再次打開瀏覽器仍然能夠找到原來的ssion。
恰恰是由于關閉瀏覽器不會導致ssion被刪除,迫使服務器為esion設置了一個失效時間,當距離客戶端上一次使用ssion的時間超過這個失效時間時,服務器就能認為客戶端已停止了活動,才會把ssion刪除以節省存儲空間。
java 怎么使用ssion
ttpSession ssion = request.getSession();
ssion.tAttribute("變量名", 值對象);
ssion.getAttribute("變量名"); //此時取出來的是Object, 一般需要強轉
ssion.removeAttribute("變量名");
ssion.invalidate(); //刪除所有ssion中保存的鍵
------------------------------------------------------
HttpSession是不能new出來的,
要從HttpServletRequest中調用getSession方法得到.
一般也就是request.getSession();
java的ssion用法
import
java.io.IOException;
import
javax.rvlet.Filter;
import
javax.rvlet.FilterChain;
import
javax.rvlet.FilterConfig;
import
javax.rvlet.ServletException;
import
javax.rvlet.ServletRequest;
import
javax.rvlet.ServletRespon;
import
javax.rvlet.http.HttpServletRequest;
import
javax.rvlet.http.HttpServletRespon;
import
javax.rvlet.http.HttpSession;
import
com.fz.entity.Ur;
public
class
ValidatorFilter
implements
Filter
{
public
void
destroy()
{
}
public
void
doFilter(ServletRequest
arg0,
ServletRespon
arg1,
FilterChain
arg2)
throws
IOException,
ServletException
{
HttpServletRequest
request
=
(HttpServletRequest)arg0;
HttpServletRespon
respon
=
(HttpServletRespon)arg1;
HttpSession
ssion
=
request.getSession();
Ur
ur
=
(Ur)ssion.getAttribute("ur");
//判斷用戶是否登錄,如果沒有登錄,則直接重定向至登錄頁面,
//如果登錄,則將請求交給下一個過濾器或者目標資源
if(ur
==
null||ur.getUrName()==null){
respon.ndRedirect(request.getContextPath()+"/login.jsp");
}el{
arg2.doFilter(request,
respon);
}
}
public
void
init(FilterConfig
filterConfig)
throws
ServletException
{
}
以上是filter的代碼
以下是在web.xml中的配置
<filter>
<filter-name>validatorFilter</filter-name>
<filter-class>com.fz.filter.ValidatorFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>validatorFilter</filter-name>
<url-pattern>/ur/*</url-pattern>
</filter-mapping>