更新時間:2021-11-18 10:25:34 來源:動力節點 瀏覽969次
session在網絡中被稱為會話。由于HTTP協議是一種無狀態協議,也就是當一個客戶向服務器發出請求,服務器接收請求,并返回響應后,該連接就結束了,而服務器并不保存相關的信息。為了彌補這一缺點,HTTP協議提供了session。通過session可以在應用程序的Web頁面間進行跳轉時,保存用戶的狀態,使整個用戶會話一直存在下去,知道關閉瀏覽器。但是,如果在一個會話中,客戶端長時間不向服務器發出請求,session對象就會自動消失。這個時間取決于服務器,例如,Tomcat服務器默認為30分鐘。不過這個時間可以通過編寫程序進行修改。
setAttribute()方法:將信息保存在session范圍內
session.setAttribute(String name, Object obj)
參數說明:
name:用于指定作用域在session范圍內的變量名
obj:保存在session范圍內的對象
getAttribute()方法:獲取保存在session范圍內的信息
session.getAttribute(String name)
參數說明:
name:指定保存在session范圍內的關鍵字
說明:getAttribute()方法的返回值是Object類型,如果將獲取到的信息賦值給String類型的變量,則需要進行強制類型轉換或是調用其toString()方法。
session.removeAttribute()方法:移除存儲在session會話中的對象
session.removeAttribute(String name)
參數說明:
name:指定作用域在session范圍內的變量名。一定要保證該變量在session范圍內有效,否則將拋出異常。
session.invalidate()方法:銷毀session
session.invalidate()
說明:session對象被銷毀后,將不可以再使用該session對象了。如果在session被銷毀后,再調用session對象的任何方法,都將報出Session already invalidated異常。
在應用session對象時應該注意session的生命周期。一般來說,session的生命周期在20~30分鐘之間。當用戶首次訪問時將產生一個新的會話,以后服務器就可以記住這個會話狀態,當會話生命周期超時時,或者服務器端強制使會話失效時,這個session就不能使用了。在開發程序時應該考慮到用戶訪問網站時可能發生的各種情況,例如用戶登錄網站后在session的有效期外進行相應的操作,用戶會看到一張錯誤頁面。這樣的現象時不允許發生的。為了避免這種情況的發生,在開發系統時應該對session的有效性進行判斷。
session.getLastAccessedTime():返回客戶端最后一次與會話相關聯的請求時間
session.getMaxInactiveInterval():以秒為單位返回一個會話內兩個請求最大時間間隔
session.setMaxInactiveInterval():以秒為單位設置session的有效時間
session.getLastAccessedTime();
session.getMaxInactiveInterval();
session.setMaxInactiveInterval(int arg);
參數說明:
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對象的使用-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對象的使用-session.jsp</title>
</head>
<body>
<%
String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8"); //獲取用戶填寫的用戶名
session.setAttribute("name", name); //將用戶名保存到session對象中
%>
<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中的用戶名對象,再獲取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對象的使用-result.jsp</title>
</head>
<body>
<%
String name = (String)session.getAttribute("name"); //獲取保存在session范圍內的對象
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>
通過上述介紹,相信大家對Session對象的使用方法已經有所了解,如果大家對此感興趣,想了解更多相關知識,可以關注一下動力節點的Spring Session教程,相信對大家的學習會有所幫。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習