使用 SpringMVC 编写常见的 Web 应用,一般会涉及到页面访问权限方面的知识,包括用户的登录,用户的注册和用户的注销等操作。在 Spring 家族中有一款专门应对这方面的组件,叫做 Spring Security,不过由于网络上可供参考的材料太少,Spring Security 不是特别流行。所以在使用 SrpingMVC 编写 Web 应用的时候,可以手动操作 session ,来识别用户,控制用户的访问权限。
SpringMVC中设置 session
SpringMVC中设置 session 方式比较简单,需要在 Spring MVC 中的页面控制器(Controller)中进行设置。一般来讲,session 只需要在用户相关的页面控制器中申明即可。
设置步骤:
1.设置注解
注解为@SessionAttributes("userInfo")
,注解中的值即为要设置的 session 的名称;注解的位置在整个类的类名之前,与注解@Controller
位置相同。
2.代码中添加入session内容
为session中添加内容与再 Model 中添加页面传递参数一样,唯一要求就是,设置 Model 的名称要与注解中声明的名称一样。例如可以这样写
- model.addAttribute("userInfo", res.getUser());
这样名为 userInfo 的 session 就设置成功了。
简单的例子如下:
- @Controller
- @RequestMapping("/user")
- @SessionAttributes("userInfo")
- public class UserController {
- @Autowired
- UserEntryImpl userEntry;
- Logger log = Logger.getLogger(this.getClass());
- // 显示登陆页面
- @RequestMapping("/login")
- public String login(Model model) {
- return "login.page";
- }
- // 处理登陆动作
- @RequestMapping(value = "dologin", method = RequestMethod.POST)
- public @ResponseBody RespLogin dologin(@Valid ReqUserLogin user, Model model) {
- RespLogin res = new RespLogin();
- res = userEntry.login(user);
- // 判断数据库中是否有正确返回
- if (res.getCode() == "0") {
- // 设置session
- model.addAttribute("userInfo", res.getUser());
- }
- return res;
- }
- }
SpringMVC 中读取session
设置完成了 session 之后,便可以在整个 web 会话中随时访问session。
1.在 class 类中取出 session
class 中取出的形式依然是通过 Model,代码如下:
- model.asMap().get("userInfo");
这里使用了 Model 中的asMap()
方法,将值转换为 Map,然后根据名称取出。
2.在 jsp 页面中取出 session
jsp 页面中直接使用 sessionScope 内的方法可以方便的取出。这是一个 EL 表达式,所以要用 ${} 来装饰。案例中是取出 userInfo 类中的用户名:username.
- ${sessionScope.userInfo.username}
SpringMVC 中注销session
注销可以借助 SessionStatus 参数,直接使用其中的setComplete()
方法,案例如下:
- // 用户登出动作
- @RequestMapping(value = "/logout", method = RequestMethod.GET)
- public String logout(SessionStatus sessionStatus) {
- sessionStatus.setComplete();
- return "login.page";
- }
感谢你的赏识与认可

支付宝

微信支付
使用手机访问这篇文章
本文许可协议 © CC BY-NC-SA 4.0 转载请注明来源
专业!
qqqqq加
支持支持