springboot后端获取session https://blog.csdn.net/qq_52696994/article/details/129971298
1、退出清空session
@RequestMapping("/logout")
public String logout(HttpServletRequest request, HttpSession session){
Integer userid = (Integer)session.getAttribute("adminId");
Object username = session.getAttribute("admin");
if(StringUtils.isEmpty(userid) && StringUtils.isEmpty(username)){
return "redirect:/login.html";
}
request.getSession().removeAttribute("adminId");
request.getSession().removeAttribute("admin");
request.getSession().getServletContext().removeAttribute("user_token");
return "redirect:/login.html";
}
引用:https://blog.csdn.net/weixin_43863007/article/details/88406486
2 、springboot后端获取session https://blog.csdn.net/qq_52696994/article/details/129971298
ServletContext、Session、Request区别 切记一定要看
https://blog.csdn.net/m0_61547956/article/details/125248953?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169102304416800211527931%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=169102304416800211527931&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-13-125248953-null-null.142^v92^chatgptT0_1&utm_term=getServletContext%28%29.getAttribute%E5%92%8Csession.getAttribute&spm=1018.2226.3001.4187
```javascript
一、全局共享 随服务器关闭结束
ServletContext:是Servlet上下文,针对所有客户端,相当于一个全局变量,只要服务器不关闭,所有用户都可以访问,共享数据,比如统计聊天室在线人数。
(1) 设置session HttpServletRequest request
request.getServletContext().setAttribute("adminId", admin.getAdminId());
request.getServletContext().setAttribute("accountType", admin.getAccountType());
request.getServletContext().setAttribute("admin", admin);
存:request.getServletContext().setAttribute(mobile,code);
取: String codeInSession = (String) request.getServletContext().getAttribute(mobile);
(2) 获取session
@AuthIgnore
@RequestMapping("/getInfo")
public R getInfo( HttpServletRequest request){
Integer adId = (Integer) request.getServletContext().getAttribute("adminId");
School dataInfo = schoolService.selectByAdminId(adId);
List<School> userList = new ArrayList<>();
userList.add(dataInfo);
return R.ok().put("rows", userList).put("total", 1);
}
二、session是一次会话,针对一个用户(浏览器),从打开到关闭会话结束,有的人说的session从浏览器打开到关闭并不是session生命周期结束了,在服务端还有,只是在客户端浏览器关闭,会话cookie结束,所以我们下次再去访问服务器就不是带的同一个sessionid。
request针对一个请求,请求转发,用完就扔
session 存取
HttpServletRequest request (方法里)
存 session
HttpSession session = request.getSession();
session.setAttribute("adminId", admin.getAdminId());
session.setAttribute("accountType", admin.getAccountType());
session.setAttribute("admin", admin);
取 session
Admin admin2 = (Admin) session.getAttribute("admin");
https://blog.csdn.net/qq_32233421/article/details/50948856?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2-50948856-blog-86488565.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2-50948856-blog-86488565.pc_relevant_default&utm_relevant_index=4
Servelete
存取session值
HttpServletRequest request
request.setCharacterEncoding(“UTF-8”);
response.setContentType(“text/html;charset=UTF-8”);
request.getSession().setAttribute(“admin”, “系统管理员”);
获取session值
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
String userSession = request.getSession().getAttribute(“userId”);
获取工程名
${pageContext.request.contextPath}
前端获取值
${admin}
存session
HttpServletRequest request (方法参数)
request.getSession().setAttribute(“admin”, admin);
取 session
HttpServletRequest request (方法参数)
Object admin = session.getAttribute(“admin”);