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     &nbsp;&nbsp;&nbsp;&nbsp;
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:

原文地址:https://www.cnblogs.com/lubolin/p/7527555.html