jsp內置對象-session對象


一、session概述

隱含對象session是javax.servlet.http.HttpSession接口實現類的對象,用於保存用戶的狀態信息。

在web開發中,服務器為每個用戶瀏覽器創建一個會話對象,即session對象。默認情況下,一個瀏覽器獨占一個session對象。因此,在需要保存用戶數據時,服務器程序可以把用戶數據寫到用戶瀏覽器獨占的session中,當用戶使用瀏覽器訪問其他程序時,其他程序可以從用戶的session中取出該用戶的數據,為用戶服務。

session用來分別保存每一個用戶的信息,使用session可以輕易地識別每一個用戶,然后針對每一個用戶的要求,給予正確的響應。在某些應用程序中,服務器需要不斷識別是從哪個客戶端發送來的請求,以便針對用戶的狀態進行相應的處理。因此,網上購物時最常用的就是session,當用戶把物品放入購物車時,就可以將用戶選定的商品信息存放在session中,當需要進行付款等操作時,又可以將session中的信息取出來。

session對象的常用方法:

二、存儲客戶端信息

 session對象維護着客戶端用戶和服務器端的狀態,保存着用戶與服務器整個交互過程中的信息,這個對象在用戶關閉瀏覽器或session超時前一直有效。

項目ch04案例:使用seeion對象保存客戶端信息

step1:創建login.jsp

 

step2:創建session.jsp

                    

step3:創建message.jsp

結果:http://localhost:8080/ch04/login.jsp

            

三、銷毀session

 session對象銷毀后,不可以再調用session對象,否則會報session   already  invalidate異常。

關閉瀏覽器時,只會使存儲在客戶端瀏覽器中的session cookie失效(即將存儲的屬性值清空),而不會使服務器端的session對象失效。

銷毀isession的三種方式:

(1)通過session對象的invalidate()方法,語法格式為:session.invalidate();

(2)session Id的時間間隔,超過了session的最大有效時間,session就會消失。

(3)服務器進程停止,session失效。

四、session跟蹤---URL重寫

session跟蹤概念:http協議只負責請求與響應,卻並不關心客戶端的請求是否來自相同的客戶端。而在jsp中采用session跟蹤來辨別客戶端。一般session跟蹤有URL重寫、表單隱藏字段、Cookie和HttpSession。

URL重寫:在URL地址后面添加一些數據來標識session,服務器就可以將session和這些數據關聯起來。

優點:即使瀏覽器不支持cookie或用戶禁用了cookie,也可以使用。

缺點:該情況數據長度受限制,容易暴露數據,安全上存在隱患。

項目ch04案例:

創建urlsession.jsp:

結果:http://localhost:8080/ch04/urlsession.jsp

本案例中,通過在URL中添加參數,在JSP頁面中通過request對象的getParameter()方法獲取參數,從而實現session的跟蹤。

五、session跟蹤---表單隱藏字段

1、詳述表單隱藏字段:一個web服務器可以發送一個HTML表單隱藏字段,以及一個唯一的session會話ID,每次當web瀏覽器發送請求時,session_id值可以用於保護不同的web瀏覽器的跟蹤。

2、語法格式:<input type="hidden"  name="session"    value="......">

type屬性:hidden表示該字段為隱藏字段,不會在瀏覽器中顯示。當表單被提交時,其name屬性和value屬性的值被包含在get或post數據中。

缺點:當用戶查看源代碼時,可以看到隱藏字段的屬性值,存在安全漏洞。

項目ch04案例:

創建sessionhidden.jsp 

創建formAction.jsp

結果:http://localhost:8080/ch04/sessionhidden.jsp

       

六、Session跟蹤---Cookie

1、Cookie概念:Cookie是一種web服務器通過瀏覽器在訪問者的硬盤上存儲信息的手段。

當用戶再次訪問某個站點時,服務器將要求瀏覽器查找並返回先前發送的Cookie信息,從而識別這個用戶。

2、Cookie的目的:方便用戶以及向服務器端傳送相關信息。

Cookie不能用來做任何方式的運行或解釋,因此也無法被病毒利用或以其他方式被用於攻擊系統。

3、 作用:用來保存用戶的識別信息。

瀏覽器一般只能為每個站點接收20個Cookie,總計Cookie不能超過300個,每個Cookie被限制在4KB以內,故不用擔心Cookie會占滿磁盤空間,也不用擔心它們會被用於運行某些服務器所禁止的攻擊。

4、語法:Cookie(String name,String value)  

Cookie具體實現過程:通過response對象提供的addCookie()方法,將Cookie傳送到客戶端。若需要讀取Cookie,則調用request對象的getCookies()方法,該方法返回Cookie對象的數組,遍歷數組,通過getName()方法找到與期望名稱相符的Cookie,然后再調用getValue()方法獲得該Cookie的值。

5、使用Cookie實現session跟蹤

項目ch04案例:

創建cookie.jsp

 

創建cookieAction.jsp

 結果:http://localhost:8080/ch04/cookie.jsp

     

重點:若用戶名為中文,則會報錯,有哪位大神可以幫忙解決一下:

七、HttpSession對象

 1、概念:Servlet提供了使用HttpSession接口來實現session跟蹤,它是建立在Cookie和URL重寫之上的高級接口。使用Cookie的前提是瀏覽器支持Cookie,若瀏覽器不支持Cookie或者Cookie被禁用,則使用URL重寫,而使用URL重寫需要添加附屬信息,存在很大的安全漏洞,但使用Servlet不存在這樣的問題,Servlet會自動提供數據的存儲空間並將其和session關聯起來。

Servlet可以查詢到session對象並將其關聯到當前request對象、創建新的session對象、查詢與session相關聯的信息、在session中存儲信息和銷毀session。

 項目ch05案例:使用servlet程序實現session跟蹤

step1:創建繼承HttpServlet的Servlet,在類中使用HttpSession接口實現session跟蹤

     

 

step2:修改創建Servlet時,創建的web.xml

結果:

案例解析:在本案例中,使用創建的Servlet類來實現session跟蹤,並在web.xml中配置訪問Servlet的地址等信息。Servlet可以捕獲很多session相關信息。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM