1. 程式人生 > 實用技巧 >JSP常用內建物件——session物件

JSP常用內建物件——session物件

1.session物件定義

session物件用於儲存特定的使用者會話所需的資訊。當用戶在應用程式的Web頁之間跳轉時,儲存在sesion物件中的變數將不會丟失,而是在整個使用者會話中一直存在。

當用戶請求來自應用程式的Web頁時,如果該使用者還沒有會話,則Web伺服器將自動建立一個session物件。當會話過期或被放棄後,伺服器將終止該會話。

具體解釋為:

session物件用來儲存每個使用者的資訊,以便跟蹤每個使用者的操作狀態。其中,session資訊儲存在容器裡,session的ID儲存在客戶計算機的Cookie中。使用者首次登入系統時容器會給使用者分配一個位於一個的session id標識用於區別其他的使用者。當用戶退出系統時,這個session就會自動消失。

當一個使用者首次訪問伺服器上的一個JSP頁面時,JSP引擎產生一個session物件,同時分配一個String型別的ID號,JSP引擎同時將這個ID號傳送到客戶端,存放在Cookie中,這樣session物件和使用者之間就建立了一一對應的關係。當用戶再訪問連線該伺服器的其他頁面時,不再分配給使用者新的session物件。直到關閉瀏覽器後,伺服器端該使用者的session物件才取消,和使用者的對應關係也一併消失。當重新開啟瀏覽器再連線到該伺服器時,伺服器會為該使用者再建立一個新的session物件。

2.session物件常用的方法

(1)setAttribute(String name,java.lang.Object value):用於設定指定名字的屬性值,並且

(2)getAttribute(String name):用於獲取與指定名字相聯絡的屬性,如果屬性不存在,將會返回null;

(3)getAttributeNames():用於返回session物件中儲存的每一個屬性物件,結果集是一個Enumeration類的例項;

(4)removeAttribute(String name):用於刪除指定的屬性(包含屬性名、屬性值)。如果在有效時間內,使用者做出新的請求,那麼伺服器就會將其看作一個新的使用者,此時,伺服器將建立一個新的session,舊的session資訊將會丟失;

3.session物件應用例項

(1)實現獲取頁面的訪問次數

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding
="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% int number=1000; //從session物件獲取number Object obj=session.getAttribute("number"); if(obj==null){ //設定session物件的變數值 session.setAttribute("number",String.valueOf(number)); //String.valueOf(number)是將number轉化成String字串型別 }else{ //取得session物件中的number變數 number=Integer.parseInt(obj.toString()); //Integer.parseInt()是把()裡的內容轉換成整數。 //obj.toString()是將obj物件轉化為一個字串並返回結果。 //統計頁面訪問次數 number+=1; //設定session物件的number變數值 session.setAttribute("number",String.valueOf(number)); } %> 你是第<%=number %>個使用者訪問本網站 </body> </html>

對應結果的圖片為

不斷重新整理獲得的結果為

(2)session綜合方法例項

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<hr>
session的建立時間是:<%=session.getCreationTime() %>&nbsp
<%=new Date(session.getCreationTime()) %>
<br>
session的Id號:<%=session.getId()%>
<br>
客戶最近一次訪問時間是:<%=session.getLastAccessedTime() %>&nbsp
<%=new java.sql.Time(session.getLastAccessedTime()) %>
<br>
<%=session.getMaxInactiveInterval() %>
<br>
是否新建立的session:<%=session.isNew()?"是":"否" %>
<hr>
<%
    session.setAttribute("name","星火天涯");
    session.setAttribute("password","666666");
%>
姓名:<%=session.getAttribute("name") %>
<br>
密碼:<%=session.getAttribute("password") %>
<br>
ID號:<%=session.getId() %>
<br>
<%
    session.setMaxInactiveInterval(500);
%>
最大有效時間:<%=session.getMaxInactiveInterval() %>
<br>
<%
    session.removeAttribute("name");
%>
姓名:<%=session.getAttribute("name") %>
<hr>
</body>
</html>

對應的結果圖片為

重新整理獲得的結果為

(3)模擬網上購物,建立登入頁面——login.jsp,購物頁面——shop.jsp,結賬頁面——account.jsp

登入頁面——login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登入頁面</title>
</head>
<body>
<%
    session.setAttribute("customer","客戶");
    //為customer變數傳值“客戶”
%>
<h3>請先登入後購物:</h3>
<hr>
<form action="shop.jsp" method="get">
客戶名:<input type="text" name="loginName">
    <input type="submit" value="提交">
</form>
</body>
</html>

購物頁面——shop.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>購物頁面</title>
</head>
<body>
<%
    String na=request.getParameter("loginName");
    session.setAttribute("name",na);
%>
<h3>請輸入想購買的商品:</h3>
<hr>
<form action="account.jsp" method="get">
要購買的商品:<input type="text" name="goodsName">
    <input type="submit" value="購物">
</form>
</body>
</html>

結賬頁面——account.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>結賬</title>
</head>
<body>
<%
    String gn=request.getParameter("goodsName");
    session.setAttribute("goods",gn);
    String 客戶=(String)session.getAttribute("customer");
    String 姓名=(String)session.getAttribute("name");
    String 商品=(String)session.getAttribute("goods");
%>
<h3>結賬資訊:</h3>
<hr>
<%=客戶 %>的姓名是:<%=姓名 %>
<br>
你購買的是商品是:<%=商品 %>
</body>
</html>