关于SpringBoot中HttpSession(Http会话)基本用法记录
1、获取HttpSession的方法
HttpServletRequest.getSession()方法获取当前的HttpSession
简单翻译一下,便于大家理解
HttpServletRequest:Http程序请求
getSession:获取对话
2、设置(补充了获取)session(会话)的属性
使用HttpSession.setAttribute()方法设置会话的属性,会话值可以是任何对象
@GetMapping("/setValue)
public String setValue(HttpServletRequest request){
HttpSession session = request.getSession();
session.setAttribute("key","value");
return "ok";
}
对上面的代码简单解释一下:
HttpServletRequest
公共接口类HttpServlentRequest继承自ServletRequest。客户端浏览器发出的请求被封装成为一个HttpServletRequest对象。对象包含了客户端请求信息包括:请求的地址、请求的参数、提交的数据,上传文件客户端的ip甚至是客户端的操作系统都包含在其中。
补充:HttpServletResponse继承了ServletResponse接口,并提供与Http协议有关的方法,这些方法的主要功能是设置Http的状态码和管理cookie
HttpSession
HttpSession服务端技术
服务器会为每一个用户创建一个独立的HttpSession
HttpSession的原理
当用户第一次访问Servlet时,服务器端会给用户创建一个独立的Session,并且生成一个SessionID,这个SessionID在响应浏览器的时候会被装进cookie中,从而保存到浏览器中。
当用户再一次访问Servlet时,请求中会携带者cookie中的SessionID去访问,服务端会根据这个SessionId去查看是否有对应的Session对象,有就拿出来使用,没有就执行第一步。
补充:域的作用范围
Context>Session>Request
Session:只要会话不结束就存在,但是Session有默认的存活时间(30分钟)--》这一点可以考虑用来做信息失效的验证
3、request.getSession
获取客户端传来的数据
4、session.setAttribute
设置session的信息
补充:session.getAttribute,用法跟set趋同,根据key获取value
3、java提供的WebUtils工具
设置session
WebUtils.setSessionAttribute(request,"key","value")
获取session
WebUtils.getSessionAttribute(request,"key")
4、获取所有会话的属性
使用Enumberation e = session.getAttributeNames()获取所有会话名称,然后使用HttpSession.getAttribute()方法获取会话属性
简单解释一下:Enumberation枚举类
public String getAll(HttpServletRequest request){
HttpSession session = request.getSession();
Enumberation e = session.getAttributeNames();
while(e.hasMoreElements()){
Object key=e.nextElement();
session.getAttribute(key.toString());
}
return "ok";
}