Spring MVC 处理模型数据(@ModelAttribute)
SpringMVC中的模型数据是非常重要的,因为MVC中的控制(C)请求处理业务逻辑来生成数据模型(M),而视图(V)就是为了渲染数据模型的数据。
- ModelAndView:处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据。
- @ModelAttribute:方法入参标注该注解后,入参的对象就会放到数据模型中。
- Map及Model:入参为org.springframework.ui.Model、org.springframework.uiModelMap或java.util.Map时,处理方法返回时,Map中的数据会自动添加到模型中。
- @SessionAttributes:将模型中的某个属性暂存到HttpSession中,以便多个请求之间可以共享这个属性。
我觉得@ModelAttribute其实相当于我们自己手动操作封装对象的过程,比如说:在Servlet中,本来是要我们自己从request中获取请求参数,然后进行封装成对象,根据这个封装好的对象进行业务逻辑操作,最终从Dao层获取到返回的数据,我们再把这些数据封装成对象,返回给视图jsp。视图jsp就可以使用el表达式等方式直接调用。@ModelAttribute就是解决了我们自己手动操作封装对象、传递对象给视图的操作。
- 可以在方法入参上使用@ModelAttribute注解
- 还可以在方法定义中使用@ModelAttribute注解
- 放在方法入参上使用:
//UserController.java在方法入参处使用@ModelAttribute
@RequestMapping(value="/model")
public String handleModel(@ModelAttribute("user") User user){
user.setUserId("1000");
return "/user/createSuccess";
}
SpringMVC 将请求消息绑定到User对象中,然后再以“user”为键将User对象放到模型中。在准备对视图进行渲染前,SpringMVC还会进一步将模型中的数据转储到视图的上下文中以暴露给视图对象。对于JSP视图来说,SpringMVC会将模型数据转储到ServletRequest的属性列表中(即通过ServletRequest#setAttribute(String name,Object o )保存)。handleModel()返回的逻辑视图名为 /user/createSuccess,对应createSuccess.jsp视图对象,这样createSuccess.jsp就可以使用${user.userName}等方式顺利访问到模型中的数据了。
@ModelAttribute("user")
public User getUser(){ <---1//访问UserController中的任何一个请求处理方法前,
User user = new User(); //SpringMVC先执行该方法,并将返回值以user为键添加到模型中
user.setUserId("1001");
return user;
}
@RequestMapping(value="/model")
public String handleModel(@ModelAttribute("user") User user){ <---2 //在此,模型数据会赋给User的入参,
user.setUserName("tom"); //然后再根据HTTP请求消息进一步填充覆盖user对象
return "/user/showUser";
}
SpringMVC中的模型数据是非常重要的,因为MVC中的控制(C)请求处理业务逻辑来生成数据模型(M),而视图(V)就是为了渲染数据模型的数据。
- ModelAndView:处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据。
- @ModelAttribute:方法入参标注该注解后,入参的对象就会放到数据模型中。
- Map及Model:入参为org.springframework.ui.Model、org.springframework.uiModelMap或java.util.Map时,处理方法返回时,Map中的数据会自动添加到模型中。
- @SessionAttributes:将模型中的某个属性暂存到HttpSession中,以便多个请求之间可以共享这个属性。
我觉得@ModelAttribute其实相当于我们自己手动操作封装对象的过程,比如说:在Servlet中,本来是要我们自己从request中获取请求参数,然后进行封装成对象,根据这个封装好的对象进行业务逻辑操作,最终从Dao层获取到返回的数据,我们再把这些数据封装成对象,返回给视图jsp。视图jsp就可以使用el表达式等方式直接调用。@ModelAttribute就是解决了我们自己手动操作封装对象、传递对象给视图的操作。
- 可以在方法入参上使用@ModelAttribute注解
- 还可以在方法定义中使用@ModelAttribute注解
- 放在方法入参上使用:
//UserController.java在方法入参处使用@ModelAttribute@RequestMapping(value="/model")publicString handleModel(@ModelAttribute("user")User user){ user.setUserId("1000");return"/user/createSuccess";}SpringMVC 将请求消息绑定到User对象中,然后再以“user”为键将User对象放到模型中。在准备对视图进行渲染前,SpringMVC还会进一步将模型中的数据转储到视图的上下文中以暴露给视图对象。对于JSP视图来说,SpringMVC会将模型数据转储到ServletRequest的属性列表中(即通过ServletRequest#setAttribute(String name,Object o )保存)。handleModel()返回的逻辑视图名为 /user/createSuccess,对应createSuccess.jsp视图对象,这样createSuccess.jsp就可以使用${user.userName}等方式顺利访问到模型中的数据了。
@ModelAttribute("user")publicUser getUser(){ <---1//访问UserController中的任何一个请求处理方法前,User user =newUser(); //SpringMVC先执行该方法,并将返回值以user为键添加到模型中 user.setUserId("1001");return user;} @RequestMapping(value="/model")publicString handleModel(@ModelAttribute("user")User user){ <---2 //在此,模型数据会赋给User的入参, user.setUserName("tom"); //然后再根据HTTP请求消息进一步填充覆盖user对象return"/user/showUser";}Spring MVC 处理模型数据(@ModelAttribute)的更多相关文章
- Spring MVC 处理模型数据
SpringMVC 处理模型数据: 1 controller接收pojo: <form action="save" method="get"> &l ...
- ajax使用向Spring MVC发送JSON数据出现 org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported错误
ajax使用向Spring MVC发送JSON数据时,后端Controller在接受JSON数据时报org.springframework.web.HttpMediaTypeNotSupportedE ...
- Spring MVC前后端数据交互总结
控制器 作为控制器,大体的作用是作为V端的数据接收并且交给M层去处理,然后负责管理V的跳转.SpringMVC的作用不外乎就是如此,主要分为:接收表单或者请求的值,定义过滤器,跳转页面:其实就是ser ...
- Spring MVC返回json数据给Android端
原先做Android项目时,服务端接口一直是别人写的,自己拿来调用一下,但下个项目,接口也要自己搞定了,我想用Spring MVC框架来提供接口,这两天便抽空浅学了一下该框架以及该框架如何返回json ...
- Spring MVC @InitBinder 数据绑定 & 数据格式化 & 数据校验
1 数据绑定 2 数据格式化 修改绑定的字段等等操作 日期 - 接收表单日期字符串格式内容.,在实体类加入@DateTimeFormat 数值 原理: DefautFormattingConversi ...
- Spring MVC之JSON数据交互和RESTful的支持
1.JSON概述 1.1 什么是JSON JSON(JavaScript Object Notation,JS对象标记)是一种轻量级的数据交换格式.它是基于JavaScript的一个子集,使用了C.C ...
- Spring MVC 返回json数据 报406错误 问题解决方案
将jackson jar包改为jackson-databind-2.5.0.jar jackson-core-2.5.0.jar jackson-annotations-2.5.0.jar(这个版 ...
- Spring MVC生成JSON数据
以下示例演示如何使用Spring Web MVC框架生成JSON数据格式.首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发基于动态表单的Web应用程序: ...
- spring mvc 返回json数据的四种方式
一.返回ModelAndView,其中包含map集 /* * 返回ModelAndView类型的结果 * 检查用户名的合法性,如果用户已经存在,返回false,否则返回true(返回json数据,格式 ...
随机推荐
- 冒泡排序java代码
冒泡排序就是依次取出最大数,然后依次交换放到数组最后边. 直观写法: public long[] sort(long[] a){ int n = a.length - 1; // Step:1 选出最 ...
- 深入理解PHP内核(二)概览-PHP生命周期与Zend引擎
本文参考自<深入理解PHP内核>,地址:https://github.com/reeze/tipi 本文链接:http://www.orlion.ml/232/ 1.SAPI接口 SAPI ...
- 深入理解javascript作用域系列第三篇——声明提升(hoisting)
× 目录 [1]变量 [2]函数 [3]优先 前面的话 一般认为,javascript代码在执行时是由上到下一行一行执行的.但实际上这并不完全正确,主要是因为声明提升的存在.本文是深入理解javasc ...
- Yii的学习(1)--安装配置
之前在sina博客写过Yii的文章,来到博客园之后,没再写过关于Yii的文章,正好端午假期没啥事,就结合以前的博客,Yii的官方文档,再加上最近的关于Yii的收获总结一下,写个系列~~ Yii是一个基 ...
- Web 开发人员和设计师必读文章推荐【系列二十九】
<Web 前端开发精华文章推荐>2014年第8期(总第29期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- Windows Azure Active Directory (1) 前言 - 基于声明的验证和授权
<Windows Azure Platform 系列文章目录> 在我们介绍整套系统架构之前,我们需要首先定义一些基本的概念. 用户及其属性: 用户值得是要使用某项服务的个体.用户一般都有一 ...
- java并发编程读书笔记(1)-- 对象的共享
1. 一些原则 RIM(Remote Method Invocation):远程方法调用 Race Condition:竞态条件 Servlet要满足多个线程的调用,必须是线程安全的 远程对象,即通过 ...
- 【Swift学习】Swift编程之旅---集合类型之数组(六)
swift提供了3种主要的集合类型,array,set,dictionary.本节介绍array. 数组是存储有序的相同类型的集合,相同的值可以多次出现在不同的位置. 注意: swift的Array类 ...
- 个人作业-Week2:案例分析
截止时间:2016年9月25日24:00. 很多同学有误解,软件工程课是否就是理论课?或者是几个牛人拼命写代码,其他人打酱油的课?要不然就是学习一个程序语言,搞一个职业培训的课? 都不对, 软件工程有 ...
- C# 视频流操作
发送视频流 void SendVideoBuffer(object bufferIn) { try { TcpClient tcp = ); NetworkStream ns = tcp.GetStr ...