原理:
1 使用session来传递用户信息
2 set方,通过Model.setAttribute写入
另外加入@SessionAttribute (FIXME)
3 get方,通过Session.getAttribute获得
根据《spring mvc 学习指南》(林仪明等翻译,第50页)。每个请求处理方法可以有多个不同类型的参数,如果需要HttpSession对象,就可以添加HttpSession作为参数。
代码例子
set的例子
/** * 登录Controller */ @Controller @SessionAttributes("username") public class LoginController extends BaseController { public static boolean isValidate=false; /** * 管理登录 */ /** * 登录成功,进入管理首页 */ @RequiresUser @RequestMapping(value = "") public String index(HttpServletRequest request, final HttpServletResponse response,Model model) { User user = UserUtils.getUser(); // 未登录,则跳转到登录页 if (user.getId() == null) { return "redirect:" + "/login"; } //传出用户名 model.addAttribute("username", user.getName()); return "modules/sys/sysIndex"; }
@RequiresPermissions("sys:user:edit") @RequestMapping(value = "save") public String save(Work work, HttpServletRequest request, Model model, RedirectAttributes redirectAttributes, HttpSession session) { //用户名是在登录时设置的,参考LoginController.java:index() String username = (String)session.getAttribute("username"); if(username.isEmpty()) { } if (!beanValidator(model, work)) { return form(work, model); } // 保存用户信息 //systemService.saveUser(user); // 清除当前用户缓存 //if (user.getLoginName().equals(UserUtils.getUser().getLoginName())) { // UserUtils.getCacheMap().clear(); //} addMessage(redirectAttributes, MessageUtils.getInstance() .getMessage("save.work", "保存任务")+" '"+ work.getWorkName() +"' "+ MessageUtils.getInstance().getMessage("success", "成功")); return "redirect:" + "/work/mywork/?repage"; }