SpringMVC数据输出相关知识总结
作者:油炸冰可乐 发布时间:2022-04-06 10:35:06
标签:SpringMVC,数据,输出
一、数据输出
SpringMVC将数据携带给页面的储存工具,有三种,map,ModelMap,model,它们在底层实质还是使用到了BindingAwareModelMap,对数据进行存储:
此外,也可以使用ModelAndView携带数据回传页面,实现代码如下
/**
* 向页面回传数据显示 handle01/02/03
* 使用 model map modelMap 回传数据 放置在request中
*/
@RequestMapping("/handle01")
public String handler01(Map<String, String> map) {
map.put("msg","你好1!");
return "success";
}
@RequestMapping("/handle02")
public String handler02(Model model) {
model.addAttribute("msg","你好2");
return "success";
}
@RequestMapping("/handle03")
public String handler03(ModelMap modelMap) {
modelMap.addAttribute("msg","你好3");
return "success";
}
/**
* modelAndView 携带数据
*/
@RequestMapping("/handle04")
public ModelAndView handler(){
ModelAndView mv = new ModelAndView("success");
mv.addObject("msg","你好04");
return mv;
}
二、@ModelAttribute注解
使用@ModelAttribute注解,可以得到请求参数中的某个对象,而不是自己new出来的对象,所有带有ModelAttribute注解的方法都会提前于目标方法运行,将对象放置在request域中,然后在目标方法中获取,代码示例:
// 先于目标方法执行,获取了数据库中的斗个对象的信息
@ModelAttribute
public void hahaMyModelAttribute(Map<String, Object> map){
Book book = new Book(100, "西游记", "吴承恩", 98, 10, 98.98);
System.out.println("数据库中查到的图书信息是:"+book);
map.put("haha", book);
b1 = book;
o1 = map;
System.out.println("modelAttribute方法...查询了图书并给你保存起来了...他用的map的类型:"+map.getClass());
}
}
// 目标方法,在目标方法中使用查询到的对象
@RequestMapping("/updateBook")
public String updateBook(@ModelAttribute("haha")Book book,Map<String, Object> model){
o2 = model;
b2 = book;
Object haha = model.get("haha");
//System.out.println("传入的model:"+model.getClass());
System.out.println("o1==o2?"+(o1 == o2));
System.out.println("b1==b2?"+(b1 == b2)+"-->"+(b2 == haha));
System.out.println("页面要提交过来的图书信息:"+book);
return "success";
}
这样做的好处在于,避免了全字段修改,不给值的地方Spring会默认使用null进行代替,这回在修改之前每个键值对都有值。
来源:https://blog.csdn.net/Wang_Pro/article/details/117434617


猜你喜欢
- 1. 开方:Math.sqrt(x);2. x的a方:Math.pow(x,a);3. 绝对值:Math.abs(x);4. BigInte
- IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智
- 本文实例讲述了C# WinForm控件对透明图片重叠时出现图片不透明的简单解决方法。分享给大家供大家参考,具体如下:在Winform中如果将
- 在上篇文章给大家介绍了IntelliJ IDEA设置显示内存指示器和设置内存大小的方法,感兴趣的朋友可以点击阅读,今天给大家分享IDEA 设
- 今天做项目的时候,遇到一个问题,如果我调用某个服务的接口,但是这个服务挂了,同时业务要求这个接口的结果是必须的,那我该怎么办呢,答案是通过h
- 目录一 、递归算法简介二 、Fibonacci数列和阶乘1、 Fibonacci数列2、阶乘三 、汉诺塔问题 四 、排列组合1、输
- springboot连接sqllite的坑2021-01-04 13:54:14.178 SvUSService [main] ERROR
- 开发一款App,总会遇到各种各样的需求和业务,这时候选择一个简单好用的轮子,就可以事半功倍前言 Intent intent =
- 1. 需要准备:apache-maven-3.2.3.zip包 Repository.rar本地仓库
- 本文实例讲解了Android自动提取短信验证码解决方案,分享给大家供大家参考,具体内容如下主要功能及优点1.收到验证码短信后,自动提取短信中
- 导入表格的主要思路就是:首先从前端页面上传文件,这里先区分一下Multipartfile和File,前者代表的是HTML中form data
- 声明一个可变数量的参数: Static int Add(params int[] values) { int sum = 0; if(val
- 目录项目说明零,准备工作Github地址一,项目背景及系统结构二,持久层设计三,Model层四,DAO(Data Access Object
- @Value取值为NULL的问题在spring mvc架构中,如果希望在程序中直接使用properties中定义的配置值,通常使用一下方式来
- 我们今天来聊下如何做实时通讯(先给知识点,实现原理,最后给出实现实时通信的具体代码--使用工具 android studio)现在先说下用到
- 简介本文我们将会讨怎么在Spring Boot中使用Properties。使用Properties有两种方式,一种是java代码的注解,一种
- 本文实例讲述了Jexcel实现按一定规则分割excel文件的方法。分享给大家供大家参考。具体如下:现有一个excel文档,需要读取它并按照一
- 我们平时在开发系统时,一般我们的系统工程会被分为多个模块,一个原因是方便协同开发,系统间解耦,另外一个很重要的原因是:别的系统需要依赖我们系
- WCF实例(带步骤) <xmlnamespace prefix ="o" ns ="urn:schema
- 本文实例演示了visual C#下一个类的定义及实现方法,虽然是一个较为基础的C#代码实例,对于新手来说仍然有很好的参考价值。具体的实例代码