Spring MVC 输出模型数据
来源:互联网 发布:大数据搜索引擎技术 编辑:程序博客网 时间:2024/06/10 02:26
Spring MVC 提供了以下几种途径输出模型数据(默认情况:模型数据会自动保存到request域对象中):
- ModelAndView: 处理方法返回值类型为ModelAndView 时, 方法体即可通过该对象添加模型数据
- Map及Model: 入参为org.springframework.ui.Model、org.springframework.ui.ModelMap 或 java.uti.Map 时,处理方法返回时,Map中的数据会自动添加到模型中。
- @SessionAttributes: 将模型中的某个属性暂存到 HttpSession 中,以便多个请求之间可以共享这个属性
- @ModelAttribute: 方法入参标注该注解后, 入参的对象就会放到数据模型中
- ModelAndView:在测试方法中创建ModelAndView返回
控制器处理方法的返回值如果为ModelAndView, 则其既包含视图信息,也包含模型数据信息。
- Index.jsp
<a href="springmvc/TestModelAndView">TestModelAndView</a></br>
- 测试方法
@RequestMapping("/TestModelAndView") public ModelAndView testModelAndView() { // 1.创建一个modelandview对象,提供一个视图的信息 // 因为ModelAndView 里面包含两部分信息:一个model,还有一个是view ModelAndView mv = new ModelAndView("success"); // 2.是向modelAndView中添加模型数据,现在下面的数据会默认保存到requet域对象 mv.addObject("name", "xiaomi"); // 3.返回modelAndView return mv; }
- Success.jsp
request域 name的信息: ${requestScope.name}<br>
- Map:一般作为测试方法的入参
- Spring MVC 在调用方法前会创建一个隐含的模型对象作为模型数据的存储容器。
- 如果方法的入参为Map或Model类型,Spring MVC会将隐含模型的引用传递给这些入参。在方法体内,开发者可以通过这个入参对象访问到模型中的所有数据,也可以向模型中添加新的属性数据。
- Index.jsp
<a href="springmvc/TestMap">TestMap</a></br>
- 测试方法
@RequestMapping("/TestMap") public String testMap(Map<String, Object> map) { // 如果方法 的入参是一个map对象,那么map对象中的模型数据会自动加入到request域对象中 map.put("gender", "女"); map.put("age", 19); return success; }
- Success.jsp
request域 gender的信息: ${requestScope.gender}<br>request域 age的信息: ${requestScope.age}<br>
- @SessionAttributes
- 若希望在多个请求之间共用某个模型属性数据,则可以在控制器类上标注一个@SessionAttributes,Spring MVC将在模型中对应的属性存到 HttpSession中。
- @SessionAttributes 除了可以通过属性名指定需要放到会话中的属性外,还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中
@SessionAttributes(types=User.class)会将隐含模型中所有类型为User.class 的属性添加到会话中。
@SessionAttributes(value={“user1”, “user2”})会将隐含模型中key类型为user1和user2的属性添加到会话中。
@SessionAttributes(types={User.class,Dept.class})
@SessionAttributes(value={“user1”, “user2”},types={Dept.class})
Request域中也会有
- Index.jsp
<a href="springMVC2/TestSessionAttribute">TestSessionAttribute</a></br>
- 测试方法
@RequestMapping("/TestSessionAttribute")public String testSessionAttribute(Map<String, Object> map) {User user = new User();user.setUsername("小米");user.setAge(18);user.setPassword("123123");// map中的数据会默认添加request域对象中map.put("user", user);return SUCCESS;}
- 测试类class上添加@SessionAttributes
@SessionAttributes(value={"user"}, types={String.class})@RequestMapping("/springmvc")@Controllerpublic class SpringMVCTest{}
注意:@SessionAttributes只能够添加在类上,不能添加在方法上
- Success.jsp
request域 name的信息: ${requestScope.name}<br>request域 gender的信息: ${requestScope.gender}<br>request域 age的信息: ${requestScope.age}<br>request域 user的数据:${requestScope.user}</br>session域 user的数据:${sessionScope.user}</br>
- ModelAttribute
Spring MVC在调用目标处理方法前,会先逐个调用在方法上标注了@ModelAttribute 的方法。
ModelAttribute的作用:
- 放在功能处理方法(指用@ModelAttribute修饰的方法),用于将多个请求参数绑定到一个命令对象,从而简化绑定流程,而且自动暴露为模型数据用于视图页面展示时使用;
- Index.jsp
<a href="springMVC2/TestSessionAttribute">TestSessionAttribute</a></br><a href="springMVC2/updateUser?id=1">updateUser</a></br><a href="springMVC2/deleteUser?id=1">deleteUser</a></br>
- 测试类
@RequestMapping("/TestSessionAttribute")public String testSessionAttribute(Map<String, Object> map) {User user = new User();user.setUsername("张三");user.setAge(17);user.setPassword("123");// map中的数据会默认添加request域对象中map.put("user", user);return SUCCESS;}@RequestMapping("/testUser")public String testUser(User user){System.out.println(user);return SUCCESS;}//更新用户@RequestMapping("/updateUser")public String updateUser(Integer id,User user) {System.out.println(user);// 找到了这个用户,就模拟更新了user.setUsername("赵薇");System.out.println("更新了该用户");return SUCCESS;}//删除用户@RequestMapping("/deleteUser")public String deleteUser(Integer id,User user) {System.out.println(user);// 找到了这个用户,就模拟删除了System.out.println("删除了该用户");return SUCCESS;}
代码执行流程:
1. 执行 @ModelAttribute 注解修饰的方法: 从数据库中取出对象, 把对象放入到了 Map 中. 键为: user
2. SpringMVC 从 Map 中取出 User 对象, 并把表单的请求参数赋给该 User 对象的对应属性.
3. SpringMVC 把上述对象传入目标方法的参数.
0 0
- Spring MVC 输出模型数据
- Spring mvc输出模型数据的方式
- Spring MVC处理模型数据
- 处理模型数据 Spring mvc ModelAndView
- Spring mvc 中处理模型数据 ModelAndView
- Spring MVC--7.处理模型数据
- Spring MVC 传递模型数据到视图中方法总结
- spring mvc 输出 json
- Spring Mvc 输出 Json
- Spring MVC 模型数据处理
- Spring(四):spring mvc模型数据传递、请求参数处理
- spring mvc数据校验
- Spring MVC数据转换
- spring mvc数据绑定
- spring mvc数据绑定
- spring mvc数据绑定
- Spring MVC 数据验证
- Spring MVC 数据绑定
- PAT1025 反转链表
- SRM573 Div1
- OpenCV学习笔记(08):opencv3.2+cmake3.8+VS2013,编译opencv_contrib
- C语言写递归复制文件夹和文件
- 4月10日,MyThread,每日20行。
- Spring MVC 输出模型数据
- POJ3670Eating Together(LIS最长(非)上升(下降)子序列模板)
- ubuntu16.04 上安装 ICE
- Java从汉字到拼音--pinyin4j使用
- node.js项目改进之路由分发系统下路由命名
- UVA 1605 Building for UN 机智题。。
- caffe中DATA层crop_size解释
- CUDA编程优化及学习心得(持续更新)
- 通过文件配置Oracle网络服务,提示无法修改tnsname.ora文件解决办法