濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > 利用JSP session對(duì)象保持住登錄狀態(tài)

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

熱門標(biāo)簽:聊城智能電銷機(jī)器人外呼 如何用中國地圖標(biāo)注數(shù)字點(diǎn) 百度地圖添加標(biāo)注圖標(biāo)樣式 南京新思維電話機(jī)器人 泰州泰興400電話 怎么申請(qǐng) 好操作的電話機(jī)器人廠家 地圖標(biāo)注市場(chǎng)怎么樣 企業(yè)怎么在聯(lián)通申請(qǐng)400電話 南昌市地圖標(biāo)注app

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

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

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

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

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

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

1.建立session變量

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

% 
session.setAttribute(“id”,”編號(hào)”); //設(shè)置字符串 
session.setAttribute(“expire”,new Date(86400*10)); //設(shè)置日期 
session.setAttribute(“l(fā)evel”,new Integer(3)); //設(shè)置整數(shù) 
%> 

2.返回session中的變量

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

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

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

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

5.結(jié)束session

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

其他的一些可能會(huì)用到的方法:

現(xiàn)在寫一個(gè)實(shí)例:通過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()將會(huì)告訴page1.jsp文件這個(gè)用戶是否登錄成功了

%@ 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大同小異顯示不同的頁面,用于驗(yàn)證登錄狀態(tài)的記錄(這里僅以page1.jsp為例):

注意這里的判斷邏輯是一種很有趣的寫法,把jsp代碼和html代碼完全融合起來了,不過我覺得這樣寫還是比較亂,寧愿只用一個(gè)jsp代碼段,里面用out.println()在html中來實(shí)現(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>
  這里是Page1br>
  %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)到哪個(gè)頁面,用戶的登錄狀態(tài)都沒有丟失

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • jsp cookie+session實(shí)現(xiàn)簡(jiǎn)易自動(dòng)登錄
  • JSP登錄中Session的用法實(shí)例詳解
  • jsp如何獲取Session中的值
  • jsp中存取session值簡(jiǎn)單介紹
  • JSP 中Session的詳解及原理分析
  • JSP Session超時(shí)設(shè)置的實(shí)現(xiàn)方法
  • JSP 開發(fā)之 releaseSession的實(shí)例詳解
  • jsp session.setAttribute()和session.getAttribute()用法案例詳解

標(biāo)簽:開封 銅川 山南 臨汾 烏蘭察布 白銀 自貢 吉林

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《利用JSP session對(duì)象保持住登錄狀態(tài)》,本文關(guān)鍵詞  利用,JSP,session,對(duì)象,保持,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《利用JSP session對(duì)象保持住登錄狀態(tài)》相關(guān)的同類信息!
  • 本頁收集關(guān)于利用JSP session對(duì)象保持住登錄狀態(tài)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    沈丘县| 门源| 烟台市| 高清| 齐河县| 阜新| 马龙县| 黄平县| 蓬安县| 桐城市| 阳江市| 当阳市| 连城县| 乌兰浩特市| 上蔡县| 鄂托克旗| 额尔古纳市| 玛曲县| 神农架林区| 长宁区| 丹凤县| 沭阳县| 察雅县| 昌乐县| 平昌县| 新竹县| 镇坪县| 海安县| 浏阳市| 仁寿县| 新密市| 宁都县| 松阳县| 潮安县| 郸城县| 芷江| 绥棱县| 金塔县| 明光市| 疏附县| 宿迁市|