session對象的使用


session對象的使用

制作人:全心全意

  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中指定的對象

  session.removeAttribute()方法:移除存儲在session會話中的對象

  session.removeAttribute(String name)

    參數說明:

      name:指定作用域在session范圍內的變量名。一定要保證該變量在session范圍內有效,否則將拋出異常。

 

  • 銷毀session

  session.invalidate()方法:銷毀session

  session.invalidate()

    說明:session對象被銷毀后,將不可以再使用該session對象了。如果在session被銷毀后,再調用session對象的任何方法,都將報出Session already invalidated異常。

 

  • session會話超時管理

   在應用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的有效期(單位:秒)

 

  • session對象的應用實例

  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>

 


免責聲明!

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



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