更新時(shí)間:2021-11-18 10:25:34 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1024次
session在網(wǎng)絡(luò)中被稱為會(huì)話。由于HTTP協(xié)議是一種無狀態(tài)協(xié)議,也就是當(dāng)一個(gè)客戶向服務(wù)器發(fā)出請(qǐng)求,服務(wù)器接收請(qǐng)求,并返回響應(yīng)后,該連接就結(jié)束了,而服務(wù)器并不保存相關(guān)的信息。為了彌補(bǔ)這一缺點(diǎn),HTTP協(xié)議提供了session。通過session可以在應(yīng)用程序的Web頁面間進(jìn)行跳轉(zhuǎn)時(shí),保存用戶的狀態(tài),使整個(gè)用戶會(huì)話一直存在下去,知道關(guān)閉瀏覽器。但是,如果在一個(gè)會(huì)話中,客戶端長時(shí)間不向服務(wù)器發(fā)出請(qǐng)求,session對(duì)象就會(huì)自動(dòng)消失。這個(gè)時(shí)間取決于服務(wù)器,例如,Tomcat服務(wù)器默認(rèn)為30分鐘。不過這個(gè)時(shí)間可以通過編寫程序進(jìn)行修改。
setAttribute()方法:將信息保存在session范圍內(nèi)
session.setAttribute(String name, Object obj)
參數(shù)說明:
name:用于指定作用域在session范圍內(nèi)的變量名
obj:保存在session范圍內(nèi)的對(duì)象
getAttribute()方法:獲取保存在session范圍內(nèi)的信息
session.getAttribute(String name)
參數(shù)說明:
name:指定保存在session范圍內(nèi)的關(guān)鍵字
說明:getAttribute()方法的返回值是Object類型,如果將獲取到的信息賦值給String類型的變量,則需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換或是調(diào)用其toString()方法。
session.removeAttribute()方法:移除存儲(chǔ)在session會(huì)話中的對(duì)象
session.removeAttribute(String name)
參數(shù)說明:
name:指定作用域在session范圍內(nèi)的變量名。一定要保證該變量在session范圍內(nèi)有效,否則將拋出異常。
session.invalidate()方法:銷毀session
session.invalidate()
說明:session對(duì)象被銷毀后,將不可以再使用該session對(duì)象了。如果在session被銷毀后,再調(diào)用session對(duì)象的任何方法,都將報(bào)出Session already invalidated異常。
在應(yīng)用session對(duì)象時(shí)應(yīng)該注意session的生命周期。一般來說,session的生命周期在20~30分鐘之間。當(dāng)用戶首次訪問時(shí)將產(chǎn)生一個(gè)新的會(huì)話,以后服務(wù)器就可以記住這個(gè)會(huì)話狀態(tài),當(dāng)會(huì)話生命周期超時(shí)時(shí),或者服務(wù)器端強(qiáng)制使會(huì)話失效時(shí),這個(gè)session就不能使用了。在開發(fā)程序時(shí)應(yīng)該考慮到用戶訪問網(wǎng)站時(shí)可能發(fā)生的各種情況,例如用戶登錄網(wǎng)站后在session的有效期外進(jìn)行相應(yīng)的操作,用戶會(huì)看到一張錯(cuò)誤頁面。這樣的現(xiàn)象時(shí)不允許發(fā)生的。為了避免這種情況的發(fā)生,在開發(fā)系統(tǒng)時(shí)應(yīng)該對(duì)session的有效性進(jìn)行判斷。
session.getLastAccessedTime():返回客戶端最后一次與會(huì)話相關(guān)聯(lián)的請(qǐng)求時(shí)間
session.getMaxInactiveInterval():以秒為單位返回一個(gè)會(huì)話內(nèi)兩個(gè)請(qǐng)求最大時(shí)間間隔
session.setMaxInactiveInterval():以秒為單位設(shè)置session的有效時(shí)間
session.getLastAccessedTime();
session.getMaxInactiveInterval();
session.setMaxInactiveInterval(int arg);
參數(shù)說明:
arg:seesion的有效期(單位:秒)
index.jsp:提供用戶輸入用戶名的文本框,并提交到session.jsp頁面中
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>session對(duì)象的使用-index.jsp</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="session.jsp">
<div align="center">
<table width="28%" border="0">
<tr>
<td width="36%">
<div align="center">您的名字是:</div>
</td>
<td width="64%">
<label>
<div align="center">
<input type="text" name="name" />
</div>
</label>
</td>
</tr>
<tr>
<td colspan="2">
<label>
<div align="center">
<input type="submit" name="Submit" value="提交" />
</div>
</label>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
session.jsp:將用戶名保存到session中,并提供用戶輸入最喜歡去的地方的文本框
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>session對(duì)象的使用-session.jsp</title>
</head>
<body>
<%
String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8"); //獲取用戶填寫的用戶名
session.setAttribute("name", name); //將用戶名保存到session對(duì)象中
%>
<div align="center">
<form id="form1" name="form1" method="post" action="result.jsp">
<table width="28%" border="0">
<tr>
<td>您的名字是:</td>
<td><%=name %></td>
</tr>
<tr>
<td>您最喜歡去的地方是:</td>
<td><label>
<input type="text" name="address" />
</label></td>
</tr>
<tr>
<td colspan="2"><label>
<div align="center">
<input type="submit" name="Submit" value="提交" />
</div>
</label></td>
</tr>
</table>
</form>
</div>
</body>
</html>
result.jsp:獲取session中的用戶名對(duì)象,再獲取session.jsp頁面提交過來的最喜歡去的地方,并在頁面中顯示出來
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>session對(duì)象的使用-result.jsp</title>
</head>
<body>
<%
String name = (String)session.getAttribute("name"); //獲取保存在session范圍內(nèi)的對(duì)象
String solution = new String(request.getParameter("address").getBytes("ISO-8859-1"),"utf-8");
//獲取用戶輸入的最喜歡去的地方
%>
<form id="form1" name="form1" method="post" action="">
<table width="28%" border="0">
<tr>
<td colspan="2"><div align="center"><strong>
顯示答案
</strong></div></td>
</tr>
<tr>
<td width="49%"><div align="left">
您的名字是:
</div></td>
<td width="51%"><label><div align="left">
<%=name %>
</div></label></td>
</tr>
<tr>
<td><label><div align="left">
您最喜歡去的地方是:
</div></label></td>
<td><div align="left">
<%=solution %>
</div></td>
</tr>
</table>
</form>
</body>
</html>
通過上述介紹,相信大家對(duì)Session對(duì)象的使用方法已經(jīng)有所了解,如果大家對(duì)此感興趣,想了解更多相關(guān)知識(shí),可以關(guān)注一下動(dòng)力節(jié)點(diǎn)的Spring Session教程,相信對(duì)大家的學(xué)習(xí)會(huì)有所幫。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)