SpringMVC学习 -- ModelAndView , Model , ModelMap , Map 及 @SessionAttributes 的使用
输出模型数据:
- ModelAndView:处理方法返回值类型为 ModelAndView 时 , 其中包含视图和模型信息。方法体即可通过该对象添加模型数据 , 即 SpringMVC 会把 ModelAndView 中的 model 模型放入到 request 域对象中。
- Map, Model, ModelMap:目标方法的入参中包含 Map, Model, ModelMap 类型的数据, 返回值是 String 类型,Spring MVC 会自动把 Map, Model, ModelMap转化成模型信息放入到 request 域对象中,把返回的 String 类型数据转化成视图信息。
- @SessionAttributes:只能定义在 Class, interface , enum 上。@SessionAttributes 除了可以通过属性名指定需要放到会话中的属性外,还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中。Spring MVC 将在模型中对应的属性暂存到 HttpSession 中。
- value:指定的属性名。可以是 String[] 类型的数据。
- type:模型属性对应的类型。可以是 Class<?>[] 类型的数据。
- @ModelAttribute:方法入参标注该注解后 , 入参的对象就会放到数据模型中(暂时不太懂)。
package com.itdoc.springmvc.entities; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView; import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map; /**
* @BLOG http://www.cnblogs.com/goodcheap
* @DESCRIBE
* @AUTHOR WángChéngDá
* @DATE 2017-03-09 13:55
*/
@Controller
/**
* @SessionAttributes 只能定义在 Class, interface , enum 上。
* @SessionAttributes 除了可以通过属性名指定需要放到会话中的属性外,
* 还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中。
* Spring MVC 将在模型中对应的属性暂存到 HttpSession 中。
* •value:指定的属性名。可以是 String[] 类型的数据。
* •type:模型属性对应的类型。可以是 Class<?>[] 类型的数据。
*/
//@SessionAttributes(value = {"time", "names"}, types = {String.class, User.class})
public class TestModelAndView { public static final String SUCCESS = "success"; @ModelAttribute
public void getUser(@RequestParam(value = "id", required = false) Integer id,
Map map) {
System.out.println("I am TestModelAndView's getUser method...");
if (id != null) {
//模拟从数据库获取对象
User user = new User(1, "Tom", 12, "123456", "a@aaa.com");
System.out.println("从数据库中获取一个对象: " + user);
map.put("user", user);
}
} @RequestMapping(value = "/updateUser", method = RequestMethod.POST)
public String updateUser(User user) {
System.out.println("修改: " + user);
return SUCCESS;
} @RequestMapping("/getModel")
public String getModel(Model model) {
model.addAttribute("names", Arrays.asList("Tom", "Jack", "Lucy", "Mark"));
model.addAttribute("time", new Date());
model.addAttribute("school", "东北财经大学");
model.addAttribute("user", new User("Tom", 13));
return SUCCESS;
} @RequestMapping("/getModelMap")
public String getModelMap(ModelMap modelMap) {
List<String> strings = Arrays.asList("Tom", "Jack", "Lucy", "Mark");
modelMap.put("names", Arrays.asList("Tom", "Jack", "Lucy", "Mark"));
modelMap.put("time", new Date());
modelMap.put("school", "东北财经大学");
modelMap.put("user", new User("Tom", 13));
return SUCCESS;
} /**
* 目标方法的入参中包含 Map, Model, ModelMap 类型的数据, 返回值是 String 类型,
* Spring MVC 会自动把 Map, Model, ModelMap 转化成模型信息放入到 request 域对象中,
* 把返回的 String 类型数据转化成视图信息。
*
* @param map
* @return
*/
@RequestMapping("/getMap")
public String getMap(Map<String, Object> map, String name) {
map.put("names", Arrays.asList("Tom", "Jack", "Lucy", "Mark"));
map.put("time", new Date());
map.put("school", "东北财经大学");
map.put("user", new User("Tom", 13));
return SUCCESS;
} /**
* 目标的返回值是 ModelAndView, 其中包含视图和模型信息。
* SpringMVC 会把 ModelAndView 中的 model 模型放入到 request 域对象中。
*
* @return
*/
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView() {
String viewName = SUCCESS;
ModelAndView mv = new ModelAndView(viewName);
mv.addObject("names", Arrays.asList("Tom", "Jack", "Lucy", "Mark"));
mv.addObject("time", new Date());
mv.addObject("school", "东北财经大学");
mv.addObject("user", new User("Tom", 13));
System.out.println(mv);
return mv;
}
}
SpringMVC学习 -- ModelAndView , Model , ModelMap , Map 及 @SessionAttributes 的使用的更多相关文章
- springMVC数据模型model,modelmap,map,@ModelAttribute的相互关系
结论: a.注解方法中形参为model,modelmap,map一个或几个时,他们指向的引用对象相同即他们的值相同. b.当使用@ModelAttribute注解请求参数时,springmvc自动将该 ...
- SpringMVC学习四(@ModelMap @RequestBody等等的说明)
参考如下 http://www.cnblogs.com/HD/p/4107674.html http://www.cnblogs.com/qiankun-site/p/5774325.html @re ...
- spring学习之springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序
spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void.下面将对具体的一一进行说明: ModelAn ...
- springMVC:modelandview,model,controller,参数传递
转载:http://blog.csdn.net/wm5920/article/details/8173480 1.web.xml 配置: copy <> ></> & ...
- SpingMVC ModelAndView, Model,Control以及参数传递
1.web.xml 配置: <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class& ...
- SpingMVC ModelAndView, Model,Control以及参数传递总结
1.web.xml 配置: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <servlet> <servlet-name>dispatcher& ...
- ModelAndView存取数Model、Map、ModelMap
1.从名字上看ModelAndView中的Model代表模型,View代表视图,这个名字就很好地解释了该类的作用.(对应mvc配置,寻找模型,返回视图.) 2.业务处理器调用模型层处理完用户请求后,把 ...
- springboot中model,modelandview,modelmap的区别与联系
springboot 中Model,ModelAndView,ModelMap的区别与联系 Model是一个接口,它的实现类为ExtendedModelMap,继承ModelMap类 public c ...
- SpringMVC Map Model ModelMap 和 ModelAndView
代码: package com.gaussic.controller; import com.gaussic.model.AccountModel; import org.springframewor ...
随机推荐
- python2.7练习小例子(四)
4):题目:输入某年某月某日,判断这一天是这一年的第几天? 程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于2时需考虑多加一天. ...
- phpMyAdmin出现错误 Access denied for user 'root'@'localhost' (using password: NO)
今天安装wmpp,之后启动后点击phpMyAdmin 报拒绝连接错误:#1045 - Access denied for user 'root'@'localhost' (using password ...
- LeetCode:5. Longest Palindromic Substring(Medium)
原题链接:https://leetcode.com/problems/longest-palindromic-substring/description/ 1. 题目要求:找出字符串中的最大回文子串 ...
- 美年健康股票成交量和K线关系
看下美年健康的股票,这次主要是研究下成交量和K线的关系,以最后5天为例子,股票下跌成交量降低,说明抛压很小,在最后3天,价格突破的时候,成交量是平时的两倍,说明有机构买入, 业绩部分还可以,全民健身是 ...
- centos redis 安装 php-redis扩展安装 及使用
前提:centos7.php7 安装redis-server 1:yum install redis 编译安装php-redis 扩展 1:下载编译安装 wget https://codeload.g ...
- Ubuntu 首次给root用户设置密码
用过ubuntu的人都知道,刚安装好root用户是没有密码的,没有密码我们就没法用root用户登录.给root用户设置密码输入命令sudo passwd root,然后系统会让你输入密码,这时输入的密 ...
- C++学习010-将某个地址转化为指针
如果需要将某个具体的地址转化为指针,可以直接使用类型那个转换来是实现. 实例如下 int main() { void* pData = (void*)(0x004001); std::cout < ...
- 8.0 TochAction各种用法
1.滑动---TouchAction 支持相对坐标.绝对坐标.Element 注意看顶部的导入TouchAction这个库.. #实例化 action = TouchAction(driver) # ...
- Thymeleaf 使用时的标签
1 . onclick事件 <a th:onclick="'javascript:more()'" ></a> 2.引入CSS样式 <link t ...
- 论文翻译--StarCraft Micromanagement with Reinforcement Learning and Curriculum Transfer Learning
(缺少一些公式的图或者效果图,评论区有惊喜) (个人学习这篇论文时进行的翻译[谷歌翻译,你懂的],如有侵权等,请告知) StarCraft Micromanagement with Reinforce ...