HttpSession講解,
1:session進行身分識別驗證的原理:
當用戶端第一次訪問伺服器的時候,此時用戶端的請求中不攜帶任何標識給伺服器,所以此時伺服器無法找到與之對應的
session,所以會建立session對象,當伺服器進行響應的時候,伺服器會將session標識放到回應標頭的Set-Cookie中,會以
key-value的形式返回給用戶端,例:JSESSIONID=7F149950097E7B5B41B390436497CD21;其中JSESSIONID是固定的,
而後面的value值對應的則是給該用戶端新建立的session的ID,之後瀏覽器再次進行伺服器訪問的時候,用戶端會將此key-value
放到cookie中一併請求伺服器,伺服器就會根據此ID尋找對應的session對象了;(當瀏覽器關閉後,會話結束,由於cookie消
失所以對應的session對象標識消失,而對應的session依然存在,但已經成為報廢資料等待GC回收了)
對應session的ID可以利用此方法得到:session.getId();
2:session的生命週期:
比方說可以通過這樣的方式使用:
3:常用方法樣本:
登入介面:
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body>10 11 SessionId:<%=session.getId() %>12 <br><br>13 14 IsNew:<%=session.isNew() %>15 <br><br>16 17 MaxInactiveInterval:<%=session.getMaxInactiveInterval() %>18 <br><br>19 20 CreateTime:<%=session.getCreationTime() %>21 <br><br>22 23 LastAccessTime<%=session.getLastAccessedTime() %>24 <br><br>25 26 <%27 Object username = session.getAttribute("username");28 if(username==null){29 username="";30 }31 %>32 33 <form action="hello.jsp" method="post">34 35 userName:<input type="text" name="userName" value="<%=username %>"/>36 <input type="submit" value="Submit"/>37 38 </form>39 40 </body>41 </html>
展示介面:
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body>10 11 12 SessionId:<%=session.getId() %>13 <br><br>14 15 IsNew:<%=session.isNew() %>16 <br><br>17 18 MaxInactiveInterval:<%=session.getMaxInactiveInterval() %>19 <br><br>20 21 CreateTime:<%=session.getCreationTime() %>22 <br><br>23 24 LastAccessTime<%=session.getLastAccessedTime() %>25 <br><br>26 27 Hello:<%=request.getParameter("userName") %>28 <br><br>29 30 <%31 session.setAttribute("username", request.getParameter("userName"));32 %>33 34 <a href="login.jsp">重新登陸</a>35 36 <a href="logout.jsp">登出</a>37 38 </body>39 </html>
登出介面:
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body>10 11 12 SessionId:<%=session.getId() %>13 <br><br>14 15 IsNew:<%=session.isNew() %>16 <br><br>17 18 MaxInactiveInterval:<%=session.getMaxInactiveInterval() %>19 <br><br>20 21 CreateTime:<%=session.getCreationTime() %>22 <br><br>23 24 LastAccessTime<%=session.getLastAccessedTime() %>25 <br><br>26 27 Bye:<%=request.getParameter("userName") %>28 <br><br>29 30 <%31 session.invalidate();32 %>33 34 <br><br>35 <a href="login.jsp">重新登陸</a>36 37 </body>38 </html>
首次進入登陸介面的時候:
在userName中輸入名稱Lily後點擊登入:
當再次點擊重新登陸時利用session進行資料回顯由於session沒有被登出,所以session不變:
當點擊登出按鈕後,登入時的session失效,原session對象被銷毀:
當再次點擊重新登陸或者是重新整理介面後,會建立新的session: