HttpSession讲解
2024-10-22 05:14:35
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:常用方法示例:
登录界面:
<%@ 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> SessionId:<%=session.getId() %>
<br><br> IsNew:<%=session.isNew() %>
<br><br> MaxInactiveInterval:<%=session.getMaxInactiveInterval() %>
<br><br> CreateTime:<%=session.getCreationTime() %>
<br><br> LastAccessTime<%=session.getLastAccessedTime() %>
<br><br> <%
Object username = session.getAttribute("username");
if(username==null){
username="";
}
%> <form action="hello.jsp" method="post"> userName:<input type="text" name="userName" value="<%=username %>"/>
<input type="submit" value="Submit"/> </form> </body>
</html>
展示界面:
<%@ 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> SessionId:<%=session.getId() %>
<br><br> IsNew:<%=session.isNew() %>
<br><br> MaxInactiveInterval:<%=session.getMaxInactiveInterval() %>
<br><br> CreateTime:<%=session.getCreationTime() %>
<br><br> LastAccessTime<%=session.getLastAccessedTime() %>
<br><br> Hello:<%=request.getParameter("userName") %>
<br><br> <%
session.setAttribute("username", request.getParameter("userName"));
%> <a href="login.jsp">重新登陆</a>
<a href="logout.jsp">注销</a> </body>
</html>
注销界面:
<%@ 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> SessionId:<%=session.getId() %>
<br><br> IsNew:<%=session.isNew() %>
<br><br> MaxInactiveInterval:<%=session.getMaxInactiveInterval() %>
<br><br> CreateTime:<%=session.getCreationTime() %>
<br><br> LastAccessTime<%=session.getLastAccessedTime() %>
<br><br> Bye:<%=request.getParameter("userName") %>
<br><br> <%
session.invalidate();
%> <br><br>
<a href="login.jsp">重新登陆</a> </body>
</html>
首次进入登陆界面的时候:
在userName中输入名称Lily后点击登录:
当再次点击重新登陆时利用session进行数据回显由于session没有被注销,所以session不变:
当点击注销按钮后,登录时的session失效,原session对象被销毁:
当再次点击重新登陆或者是刷新界面后,会创建新的session:
最新文章
- ref out
- FreeBSD_11-系统管理——{Part_0-基础}
- 实战 SQL Server 2008 数据库误删除数据的恢复
- IOS开发-cell的动态高度
- leetcode题解:Tree Level Order Traversal II (二叉树的层序遍历 2)
- 基于Ubuntu 15.04 LTS编译Android5.1.0源代码 (转)
- Eclipse使用Maven创建Web项目
- volley使用与解析(一)
- DIV以及图片水平垂直居中兼容多种浏览器
- CF 192 DIV.2
- ECharts模拟迁徙案例
- Oracle 表操作
- windows类书的学习心得
- gmock
- SpringBoot(五)Springmvc+Mybatis+mysql
- windows上测试磁盘io性能
- ORB(oriented FAST and rotated BRIEF)特征提取与检测
- (O)JS高阶函数应用——函数节流
- C# 多线程task
- python之random库