国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JSP > 正文

利用JSP session對象保持住登錄狀態(tài)

2024-09-05 00:23:05
字體:
供稿:網(wǎng)友

http協(xié)議本身是一種無狀態(tài)的協(xié)議,也就是客戶端連續(xù)發(fā)送的多個請求之間沒有聯(lián)系,下一次請求不關(guān)心上一次請求的狀態(tài)。

而實際運用中卻希望服務(wù)器能記住客戶端請求的狀態(tài),比如在網(wǎng)上購物系統(tǒng)中,服務(wù)器端應(yīng)該能夠識別并跟蹤每個登錄到系統(tǒng)中的用戶挑選并購買商品的整個流程 。為此,web服務(wù)器必須采用一種機制來唯一地標識一個用戶,同時記錄該用戶的狀態(tài),這就要用到會話跟蹤技術(shù)。

Java Web使用Session來跟蹤會話和管理會話內(nèi)的狀態(tài)。

Session對象是一個jsp內(nèi)置對象,它在第一個jsp頁面被裝載時自動創(chuàng)建,完成會話期管理。

從一個客戶打開瀏覽器并連接到服務(wù)器開始,到客戶關(guān)閉瀏覽器離開這個服務(wù)器結(jié)束,被稱為一個會話。當一個客戶訪問一個服務(wù)器時,可能會在這個服務(wù)器的幾個頁面之間反復(fù)連接,反復(fù)刷新一個頁面,服務(wù)器應(yīng)當通過某種辦法知道這是同一個客戶,這就需要session對象。

JSP,session,登錄

當發(fā)生以下四種情形其中之一時,session對象中的數(shù)據(jù)便會清空 :
用戶關(guān)閉目前正在使用的瀏覽器程序。
關(guān)閉網(wǎng)頁服務(wù)器。
用戶未向服務(wù)器提出請求超過預(yù)設(shè)的時間,Tomcat服務(wù)器預(yù)設(shè)為30分鐘。
運行程序結(jié)束session。

1.建立session變量

在JSP中不需要特別設(shè)置程序代碼來建立用戶session,當程序使用了session對象時,便會自動建立session,而下面這行語句便是在session中新增變量數(shù)據(jù)的方式:
session.setAttribute(“變量名稱”,變量內(nèi)容)
變量內(nèi)容可為字符串或者其他對象類型,接著讓我們來看看如何使用這個方法在session中設(shè)置變量數(shù)據(jù):

<% session.setAttribute(“id”,”編號”); //設(shè)置字符串 session.setAttribute(“expire”,new Date(86400*10)); //設(shè)置日期 session.setAttribute(“level”,new Integer(3)); //設(shè)置整數(shù) %> 

2.返回session中的變量

在session中設(shè)置了變量數(shù)據(jù)后,在其他的各個網(wǎng)頁中便可使用getAttribute讀取其中的內(nèi)容,此方法所返回的數(shù)據(jù)類型為對象(Object)類型,語法如下:
session.getAttribute(“變量名稱”)

3.返回所有session中的變量名稱

getAttributeNames()方法可以取出session中所有變量的名稱,其結(jié)果為一個枚舉類的實例。語法為:
session.getAttributeNames()

4.清除session中的變量
removeAttribute()方法可以清除session中的變量數(shù)據(jù),使用語法如下:
session.removeAttribute(“變量名稱”)

5.結(jié)束session

對于已經(jīng)建立的session,可使用invalidate()方法將其結(jié)束,使用語法為:
session.invalidate()

其他的一些可能會用到的方法:

JSP,session,登錄

現(xiàn)在寫一個實例:通過session來記錄客戶的登錄狀態(tài):
index.jsp登錄界面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html> <head>  <title>$Title$</title> </head> <body> <form action="process_login.jsp" method="post">  用戶名:<input type="text" name="username">  密碼:<input type="text" name="password">  <input type="submit" value="submit">  <input type="reset" value="reset"> </form> <a href="page1.jsp" rel="external nofollow" rel="external nofollow" >1</a> <a href="page2.jsp" rel="external nofollow" rel="external nofollow" >2</a> <a href="page3.jsp" rel="external nofollow" rel="external nofollow" >3</a> </body></html>

process_login.jsp處理登錄數(shù)據(jù),這里知道輸入密碼是123都可以登錄成功:

session.getAttribute()將會告訴page1.jsp文件這個用戶是否登錄成功了

<%@ page contentType="text/html;charset=UTF-8" language="java" %><%  String username=request.getParameter("username");  String password=request.getParameter("password");  if (password.equals("123")){    session.setAttribute("username",username);  }  response.sendRedirect("page1.jsp");%>

logout.jsp登出

<%@ page contentType="text/html;charset=UTF-8" language="java" %><%  session.invalidate();  response.sendRedirect("index.jsp");%>

page1.jsp, page2.jsp, page3.jsp大同小異顯示不同的頁面,用于驗證登錄狀態(tài)的記錄(這里僅以page1.jsp為例):

注意這里的判斷邏輯是一種很有趣的寫法,把jsp代碼和html代碼完全融合起來了,不過我覺得這樣寫還是比較亂,寧愿只用一個jsp代碼段,里面用out.println()在html中來實現(xiàn)顯示不同的內(nèi)容

這里主要是靠判斷session.username是否為空來判斷是否登錄過了,并且傳遞相關(guān)的參數(shù)信息

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>  <title>Title</title></head><body>  這里是Page1<br>  <%if (session.getAttribute("username")==null){%>  用戶還沒有登錄  <%}else {%>  已登錄,用戶名:<%= session.getAttribute("username")%>  <%}%>  <br>  <a href="page1.jsp" rel="external nofollow" rel="external nofollow" >page1</a>  <a href="page2.jsp" rel="external nofollow" rel="external nofollow" >page2</a>  <a href="page3.jsp" rel="external nofollow" rel="external nofollow" >page3</a>  <a href="index.jsp" rel="external nofollow" >login</a>  <a href="logout.jsp" rel="external nofollow" >logout </a></body></html>

可以看到,登錄以后,不管跳轉(zhuǎn)到哪個頁面,用戶的登錄狀態(tài)都沒有丟失

JSP,session,登錄

一旦logout登出以后,session.invalidate()方法被調(diào)用,session被銷毀,就跟蹤不到用戶的登錄信息了

JSP,session,登錄

同時,如果我采用另一個瀏覽器訪問同樣的頁面,以“2號用戶”為username登錄,也會一直記錄到這個用戶的登錄信息(不過如果是同一種瀏覽器的話就不行了)

JSP,session,登錄

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到JSP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 湖口县| 樟树市| 碌曲县| 山东省| 大英县| 高台县| 莲花县| 大同市| 阳泉市| 新兴县| 临西县| 高要市| 桂平市| 清水河县| 许昌市| 伊宁县| 万盛区| 广东省| 新蔡县| 洪湖市| 乌兰浩特市| 克什克腾旗| 阳谷县| 承德市| 大冶市| 德令哈市| 肥城市| 盐城市| 白山市| 永川市| 广东省| 清丰县| 二连浩特市| 桓台县| 营口市| 普安县| 乳源| 明溪县| 黄石市| 大方县| 威信县|