SpringBoot(四)关于Session
接上文,我们已经实现了接受Requests以及转发/重定向。「登录」功能基本完成得差不多了,根据以往学习JSP的经历,接下来该处理Session和cookie了,于是我网上查询了一下,主要和几个关键词有关,下面一一介绍
HttpServletRequest
@GetMapping("/s1")
public void getSession1(HttpServletRequest request) {
request.getSession().setAttribute("a", 1.0);
}
HttpSession
//设置
@GetMapping("/s2")
public void getSession(HttpSession session) {
session.setAttribute("a", 2.0);
}
//获取
@GetMapping("/see")
public Double show(HttpSession session) {
return (Double) session.getAttribute("a");
}
//删除
@RequestMapping("/clean")
public void getSs(HttpSession session) {
session.removeAttribute("a");
}
@SessionAttributes
这里有两个点,一个是@SessionAttributes(value = “a”),一个是ModelAndView。
前者是专门用来设置session的,后者是存放数据和页面的。
ModelAndView常用两种方法,一个是ModelAndView(“a”),一个是ModelAndView(“a”,“key”,value)。
其中,‘a’为要跳转的页面的模板,后面两个为数据键值对。
@SessionAttributes(value = "a")
public class LoginSession {
@RequestMapping("/s3")
public ModelAndView getSession3(HttpSession session) {
session.setAttribute("a", 3.0);
return new ModelAndView("s");
}
@RequestMapping("/s4")
public ModelAndView getSession4() {
double x = Math.random();
return new ModelAndView("s", "a", 4.0);
}
@RequestMapping("/cc")
public ModelAndView getClean(SessionStatus sessionStatus){
//删除
sessionStatus.setComplete();
return new ModelAndView("s");
}
}
注意
一个类里面不要同时出现@SessionAttributes和HttpSession,否则会干扰Session消除的。
有@SessionAttributes存在,session.removeAttribute()无法使用,必须使用 sessionStatus.setComplete()。
所以两者尽量不要放在一起。
因为我是自学的,可能不是弄得很清楚,所以我觉得最好还是使用Session,等我以后更厉害我会更新的.