session內置對象+例題

session對象是一個JSP內置對象,它在第一個JSP頁面被裝載時自動創建,完成會話期管理。從一個客戶打開瀏覽器並連接到服務器開始,到客戶關閉瀏覽器離開這個服務器結束,被稱爲一個會話。

常用方法:

Object getAttribute(String name)	//獲取指定名字的屬性
Enumeration getAttributeName()	//獲取 session 中全部屬性的名字,一個枚舉
long getCreationTime()	//返回 session 的創建時間,單位:毫秒
String getld()	 //返回創建 session 時 JSP 引擎爲它設置的唯一 ID 號
long getLastAccessedTime()	 //返回此 session 中客戶端最近一次請求的時間,單位是毫秒。使用這個方法,可以判斷某個用戶在站點上一共停留了多長時間
int getMaxInactiveInterval()	 //返回兩次請求間隔多長時間 session 被銷燬(單位:秒)
void setMaxlnactivelnterval(int interval)	//設置兩次請求間隔多長時間 session 被銷燬(單位:秒)
void invalidate()	//銷燬 session 對象
boolean isNew()	 //判斷請求是否會產生新的 session 對象
void removeAttribute(String name)	//刪除指定名字的屬性
void setAttribute(String name,String value) 	//設定指定名字的屬性值

創建及獲取客戶會話屬性:

JSP 頁面可以將任何對象作爲屬性來保存。使用 setAttribute() 方法設置指定名稱的屬性,並將其存儲在 session 對象中,使用 getAttribute() 方法獲取與指定名字 name 相聯繫的屬性。

語法格式如下:

session.setAttribute(String name,String value);    //參數name爲屬性名稱,value爲屬性值
session.getAttribute(String name);    //參數 name 爲屬性名稱

例如:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>創建及獲取客戶會話屬性</title>
</head>
<body>
	session的創建時間:<%=new Date(session.getCreationTime()).toString()  %><br>
	session的ID: <%=session.getId() %><br><hr>
	當前時間:<%=new Date().toString( ) %> <br>
    該 session 是新創建的嗎?:<%=session.isNew()?"是":"否" %> <br> <hr>
    當前時間:<%=new Date().toString( ) %> <br>
</body>
</html>

從會話中移除指定的對象:

JSP 頁面可以將任何已經保存的對象部分或者全部移除。
使用removeAttribute() 方法,將指定名稱的對象移除,也就是說,從這個會話刪除與指定名稱綁定的對象。使用 invalidate() 方法,可以將會話中的全部內容刪除。
語法格式如下:

session.removeAttribute(String name);    //參數name爲session對象的屬性名,代表要移除的對象名
session.invalidate();    //把保存的所有對象全部刪除

例如:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	session的創建時間:<%=new Date(session.getCreationTime()).toString()  %><br>
	session的ID: <%=session.getId() %><br><hr>
	當前時間:<%=new Date().toString( ) %> <br>
        該 session 是新創建的嗎?:<%=session.isNew()?"是":"否" %> <br> <hr>
        當前時間:<%=new Date().toString( ) %> <br><br><hr>
    <%
    session.removeAttribute("info");
    if(session.getAttribute("info")==null)
    {
        out.println("session 對象 info 已經不存在");
    }
    else
    {
        out.println(session.getAttribute("info"));
    }
	%>
</body>
</html>

設置會話時限:

當某一客戶與 Web 應用程序之間處於非活動狀態時,並不以顯式的方式通知服務器,所以,在 Servlet 程序或 JSP 文件中,做超時設置是確保客戶會話終止的唯一方法。

Servlet 程序容器設置一個超時時長,當客戶非活動的時間超出時長的大小時,JSP 容器將使 session 對象無效,並撤銷所有屬性的綁定,這樣,就清除了客戶申請的資源,從而實現了會話生命週期的管理。

session 用於管理會話生命週期的方法有 getLastAccessedTime()、getMaxInactiveInterval() 和 setMaxInactiveInterval(int interval)。

 session.getMaxInactiveInterval() //對象默認的有效時間
 session.setMaxInactiveInterval(60*5)   //設置session的有效時間爲5分鐘
 session.getMaxInactiveInterval()  //修改有效時間

購物車例題:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="shop.jsp" method="post">
<p>各種球類大甩賣</p>
<p>
	<input type="checkbox" name="ball" value="籃球">籃球
	<input type="checkbox" name="ball" value="足球">足球
	<input type="checkbox" name="ball" value="乒乓球">乒乓球
</p>
<p>
	<input type="submit"value="確認">
	<a href="meat.jsp">買點別的</a>
	<a href="shop.jsp">購物車</a>
	</p>
	<%
	    request.setCharacterEncoding("utf-8");
		String b[]= request.getParameterValues("meat");
    	if(b!=null)
			session.setAttribute("b",b);
	%>
</form>
</body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章