@SessionAttribute和@ModelAttribute详解
来源:互联网 发布:mysql mac安装包 编辑:程序博客网 时间:2024/06/07 15:04
spring允许我们有选择地指定Model中的哪些属性需要转存到session中,以便下一个请求可通过Session来访问到这些属性。这一功能是通过类定义处标注@SessionAttributes注解来实现的。
@Controller@RequestMapping(value = "login")@SessionAttributes("mysession")//定义把Model中的mysession属性的值绑定到Session中public class LoginController { @RequestMapping(method = RequestMethod.POST) public String login(@ModelAttribute User user, ModelMap model) { String viewName = ""; boolean check = true; if (check) { model.addAttribute("mysession", "123"); viewName = "redirect:/home"; } else { viewName = "redirect:/"; } return viewName; }}
这样我们不但可以在请求所对应的JSP视图页面中通过request.getAttribute()和session.getAttribute()获取mysession,还可以在下一个请求所对应的JSP视图页面中通过session.getAttribute()或ModelMap#get()访问到这个属性。
这里我们仅将一个ModelMap的属性放入Session中,其实@SessionAttributes允许指定多个属性。你可以通过字符串数组的方式指定多个属性,如 @SessionAttributes({“attr1”,”attr2”})。此外,@SessionAttributes还可以通过属性类型指定要 session化的ModelMap属性,如@SessionAttributes(types=User.class),当然也可以指定多个类,如 @SessionAttributes(types = {User.class,Dept.class}),还可以联合使用属性名和属性类型指定:@SessionAttributes(types = {User.class,Dept.class},value={“attr1”,”attr2”})。
范例2:通过@ModelAttribute绑定
我们使用@ModelAttribute把表单自动绑定到对象上,那这个对象也可以通过@ModelAttribute(“”)绑定到Session中。
@Controller@RequestMapping(value = "login")@SessionAttributes("user")//此处定义需要绑定到session中的model名称public class LoginController {@RequestMapping(method = RequestMethod.POST)public String login(@ModelAttribute("user") User user, ModelMap model){ //@ModelAttribute将绑定到session中 String viewName = ""; boolean check = true; if (check) { viewName = "redirect:/home"; } else { viewName = "redirect:/"; } return viewName; }}
范例3:@SessionAttributes清除
@SessionAttributes需要清除时,使用SessionStatus.setComplete();来清除。注意,它只清除@SessionAttributes的session,不会清除HttpSession的数据。故如用户身份验证对象的session一般不同它来实现,还是用session.setAttribute等传统的方式实现。
@Controller@RequestMapping(value = "login")@SessionAttributes("mysession")// 定义把Model中的mysession属性的值绑定到Session中public class LoginController { @RequestMapping(method = RequestMethod.POST) public String login(@ModelAttribute User user, ModelMap model, SessionStatus sessionStatus) { String viewName = ""; boolean check = true; if (check) { model.addAttribute("mysession", "1233"); viewName = "redirect:/home"; } else { viewName = "redirect:/"; } sessionStatus.setComplete(); return viewName; }}
- @SessionAttribute和@ModelAttribute详解
- ModelAttribute,SessionAttribute
- Springmvc @ModelAttribute和@SessionAttribute的区别
- springmvc注解之@SessionAttribute和@ModelAttribute
- Spring MVC下的SessionAttribute和ModelAttribute使用分析
- Spring Mvc那点事---(6)Spring Mvc @ModelAttribute属性和@SessionAttribute属性
- @SessionAttribute
- @SessionAttribute
- 详解@ModelAttribute
- 详解@ModelAttribute
- modelAttribute 详解
- [@Controller]4 详解@ModelAttribute
- [@Controller]4 详解@ModelAttribute
- @ModelAttribute使用详解
- @ModelAttribute使用详解
- [@Controller]4 详解@ModelAttribute
- @ModelAttribute运用详解
- Spring MVC @ModelAttribute 详解
- jquery接收url地址传的值
- UIBezierPath和CAShapeLayer 简单画圆
- Java中的Socket的用法
- 常用 音频视频格式
- 函数及递归《算法入门经典》第四章(由于能力和时间有限没有做习题)
- @SessionAttribute和@ModelAttribute详解
- 过滤器第一篇【介绍、入门、简单应用】
- Java Web | 入门与安装
- [LeetCode]530. Minimum Absolute Difference in BST
- 设计模式(十四)中介者模式
- 自动释放池什么时候创建,什么时候销毁?
- Problem--281A--Codeforces--Word Capitalization
- 百度地图JS关于规划路线偏离预警的解决方式
- BufferedOutputStream