SpringMVC—处理模型数据

说明

  SpringMVC 提供了以下几种途径输出模型数据:
  – ModelAndView: 处理方法返回值类型为 ModelAndView时, 方法体即可通过该对象添加模型数据
  – Map及Model:入参为org.springframework.ui.Model、org.springframework.ui.ModelMap 或 Java.uti.Map 时,处理方法返回时,Map中的数据会自动添加到模型中。
  – @SessionAttributes: 将模型中的某个属性暂存到HttpSession 中,以便多个请求之间可以共享这个属性
  – @ModelAttribute: 方法入参标注该注解后, 入参的对象就会放到数据模型中。

ModelAndView

说明

  一旦Controller处理完客户请求,则返回ModelAndView对象给DispatcherServlet前端控制器。ModelAndView中包含了模型(Model)和视图(View)。从宏观角度考虑,DispatcherServlet是整个Web应用的控制器;从微观角度考虑,Controller是单个Http请求处理过程中的控制器,而ModelAndView是Http请求过程中返回的模型和视图。
  即,控制器处理方法的返回值如果为ModelAndView,则其中既包含视图信息,也包含模型数据信息

示例

  1.创建ModelAndView,并传入模型数据  

  

  2.编写JSP页面,进行测试

  

说明:SpringMVC会把ModelAndView中的Model中的数据方法Request域对象中。 

Map及Model

说明:

  Spring MVC 在内部使用了一个org.springframework.ui.Model 接口存储模型数据。

  Spring MVC 在调用方法前会创建一个隐含的模型对象作为模型数据的存储容器。

  如果方法的入参为 Map 或 Model 类型,Spring MVC 会将隐含模型的引用传递给这些入参。在方法体内,开发者可以通过这个入参对象访问到模型中的所有数据,也可以向模型中添加新的属性数据。

示例:

  

使用MODEL:

  这里传入的Map实际为BindingAwareModelMap,所以我们定义参数用Map即可。  

  

说明:

  并且在这里我们也是可以使用Model类型的。
  

@SessionAttribute

  若希望在多个请求之间共用某个模型属性数据,则可以在控制器类上标注一个 @SessionAttributes,Spring MVC将在模型中对应的属性暂存到 HttpSession 中。

 说明:

    注意这个注解只能放到类的上面

  1.首先使用Map将模型数据存到请求域中,然后在类定义处使用@SessionAttributes,拷贝到Session中。

  

  2.编写JSP页面及测试

  

  

补充

  @SessionAttributes 除了可以通过属性名指定需要放到会话中的属性外,还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中
  – @SessionAttributes(types=User.class) 会将隐含模型中所有类型为 User.class 的属性添加到会话中。
  – @SessionAttributes(value={“user1”, “user2”})
  – @SessionAttributes(types={User.class, Dept.class})
  – @SessionAttributes(value={“user1”, “user2”},types={Dept.class})

@ModelAttribute

说明:

  前面谈到SpringMVC在每次调用请求处理方法时,都会创建Model类型的一个实例。如果准备使用此实例,则可以在方法中添加一个Model类型的参数。还可以使用在方法中添加@ModelAttribute注释类型来访问Model实例

  可以用@ModelAttribute来注释方法参数:带有@ModelAttribute注解的方法会将其输入或创建的参数对象添加到Model对象中(若方法中没有显式添加)。

  可以用@ModelAttribute标注一个非请求的处理方法:被@ModelAttribute注释的方法会在此controller每个方法执行前被执行。  

基本用法:

  1.在方法上使用@ModelAttribute

  @Controllerpublic class UserDao{.....@ModelAttributepublic User addUser(User user){return new User(201702,"MrSaber");}.....}

说明:

 @ModelAttribute 注解的方法可以返回一个 对象或者一个void类型。如果返回一个对象则默认添加到Model中。若方法返回一个void类型,则还必须自行将实例添加到Model中。

  @Controllerpublic class UserDao{.....@ModelAttributepublic void addUser(User user,Model model){...model.addAttribute(user);}.....}    

  2.在方法参数上使用@ModelAttribute.

@RequestMapping("/save")
public String save(@ModelAttribute("newUser") User user) {  user.setUsername("U love me");  userService.save(user);  return "result";
} 

说明:

   输入或创建的User实例将用newUser键值添加到Model对象中。如果未定义将默认用小写名称作为键。

转载于:https://www.cnblogs.com/MrSaver/p/6395684.html

SpringMVC:学习笔记(4)——处理模型数据相关推荐

  1. SpringMVC学习笔记

    文章目录 SpringMVC学习笔记 Spring MVC 什么是 MVC 设计模式? Spring MVC 的核心组件 Spring MVC 的工作流程 如何使用? Spring MVC 注解 Sp ...

  2. JavaEE 企业级分布式高级架构师(四)SpringMVC学习笔记(4)

    SpringMVC学习笔记 高级应用篇 ControllerAdvice @ControllerAdvice @ModelAttribute 作用于方法 作用于方法参数 @InitBinder @Ex ...

  3. springmvc学习笔记二:重定向,拦截器,参数绑定

    springmvc学习笔记二:重定向,拦截器,参数绑定 Controller方法返回值 返回ModelAndView controller方法中定义ModelAndView对象并返回,对象中可添加mo ...

  4. SpringMVC学习笔记_01

    SpringMVC学习笔记_01 1.JAVAEE体系结构 JAVAEE体系结构图如下所示: 2.什么是springmvc? 什么是mvc? Model1 Model2 SpringMVC是什么? S ...

  5. springmvc学习笔记(10)-springmvc注解开发之商品改动功能

    springmvc学习笔记(10)-springmvc注解开发之商品改动功能 springmvc学习笔记(10)-springmvc注解开发之商品改动功能 标签: springmvc springmv ...

  6. springmvc学习笔记(19)-RESTful支持

    springmvc学习笔记(19)-RESTful支持 标签: springmvc springmvc学习笔记19-RESTful支持 概念 REST的样例 controller REST方法的前端控 ...

  7. SpringMVC:学习笔记(5)——数据绑定及表单标签

    SpringMVC--数据绑定及表单标签 理解数据绑定 为什么要使用数据绑定 基于HTTP特性,所有的用户输入的请求参数类型都是String,比如下面表单: 按照我们以往所学,如果要获取请求的所有参数 ...

  8. springmvc学习笔记(17)-上传图片

    2019独角兽企业重金招聘Python工程师标准>>> springmvc学习笔记(17)-上传图片 标签: springmvc [TOC] 本文展示如何在springmvc中上传图 ...

  9. SpringMVC学习笔记(二)常用注解

    SpringMVC学习笔记(二)常用注解 1.RequestParam 作用: 把请求中指定名称的参数给控制器中的形参赋值. 属性: value:请求参数中的名称. required:请求参数中是否必 ...

最新文章

  1. Java对象的生命周期与作用域的讨论(转)
  2. python selenium模块使用出错解决,Message: 'geckodriver' executable needs to be in PATH
  3. Domino+Qucikplace+Sametime构建企业办公平台图文攻略(四)
  4. gcc 4.4.2 安装
  5. 6.MongoDB之索引
  6. win8.1 uefi引导
  7. HeadFirstJava 11异常处理
  8. 2. Zigbee应用程序框架开发指南 - 应用程序框架结构
  9. Mysql数据库用户密码暴力破解
  10. EXCEL转PDF最便捷的方法
  11. 看了这个,再也不怕流量劫持了!
  12. MySQL基础(二)
  13. 【每日新闻】工信部部长苗圩:软件是新一代信息技术的灵魂
  14. 印孚瑟斯被 IDC MarketScape 报告评为领导者
  15. 鸿蒙系统手机模拟器,鸿蒙系统2.0手机版
  16. Python分析淘宝月饼销售数据,五仁月饼王者地位不可动摇
  17. unity 发光字体_Unity 游戏开发技巧集锦之创建自发光材质
  18. JS如何实现电子签名
  19. golang学习之 go 读写 txt
  20. spring成神之路第二十九篇:BeanFactory 扩展(BeanFactoryPostProcessor、BeanDefinitionRegistryPostProcessor)...

热门文章

  1. QTP中使用ExecuteFile加载vbs脚本
  2. Ubuntu 16.04 LTS下编译GPU版tensorflow
  3. 技术正文 history命令添加时间---测试磁盘写入速度
  4. 元数据交换绑定的秘密
  5. This Jenkins instance appears to be offline
  6. LINUX-Shell第一课
  7. Android启动过程深入解析【转】
  8. JavaScript强化教程——javascript性能优化
  9. 用image控件不能正常显示Sql server2000数据库中的图片
  10. 软件测试面试必备的一些基础理论概念