java_springMVC_session 心已赠人 2022-05-25 04:22 183阅读 0赞 **session的含义找度娘,这里说说常用的用法** 1) **用于登录:** 在登录时设置session; @RequestMapping("/dologin") @ResponseBody **public** String dologin(HttpServletRequest request, String username, String password)\{ request.getSession().setAttribute("username", username); **return** "true"; \} 在拦截器中获取session: String userId = (String)request.getSession().getAttribute("username"); **if** (userId != **null**)\{ **return** **true**; \}**else**\{ response.sendRedirect(request.getContextPath()+"/user/login"); \} **return** **false**; 在同一个浏览器下访问,如果没有登录过则会获取不到session,跳转到登录页面。如果登录过,则不受影响。 注:上面的代码只是个小例子,没有区分用户。完善一点的做法是登录时创建一个guid写入session,使用map将guid和用户信息存起来,拦截器中获取session中的guid,从而获取用户信息再进行业务判断。 2) **用于传参:** 设置session后可以在页面中直接获取。如上面登录时设置了username属性。在页面中可直接获取: <p> session:username----$\{username\} </p> 只要登录过(request调用过session的setAttribute方法)。 在其他任何页面都可以通过$\{username\}获取session中的值。 3) **用于注销:** 清空session中的所有信息: @RequestMapping("/loginout") **public** String loginout(HttpServletRequest request)\{ // 清除session 的所有属性 //request.getSession().invalidate(); // 清除单个session 的属性值 request.getSession().removeValue("username"); // 清除单个session 的属性 //request.getSession().removeAttribute("username"); **return** "user/login"; \} 上面的三种清除方式都可以达到注销的目的,清除属性的值最符合业务场景。 访问:[http://localhost:8080/springMVC3/user/loginout][http_localhost_8080_springMVC3_user_loginout]后,当前页面跳到登录页面。 其他页面也无法访问,因为拦截器中已获取不到session中的内容,跳到登录页面。 [http_localhost_8080_springMVC3_user_loginout]: http://localhost:8080/springMVC3/user/loginout
还没有评论,来说两句吧...