SpringMVC的数据响应
Posted 楠黎倾风
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMVC的数据响应相关的知识,希望对你有一定的参考价值。
4.SpringMVC的数据响应
4.1.SpringMVC的数据响应方式(理解)
1.页面跳转
-
直接返回字符串
-
通过ModelAndView对象返回
2.回写数据
-
直接返回字符串(解析json数据)
-
返回对象或集合
4.2.SpringMVC的数据响应-页面跳转-返回字符串形式(应用)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OxdfClO3-1671702092565)(C:\\Users\\紫轩蝶泪\\AppData\\Roaming\\Typora\\typora-user-images\\image-20220916113108020.png)]
WEB-INF是受饱保护的文件夹,外部很难访问到里面的内容。
4.3.SpringMVC的数据响应-页面跳转-返回ModelAndView形式1(应用)
在Controller中方法返回ModelAndView对象,并且设置视图名称
@RequestMapping(value = "/login2") //请求地址
public ModelAndView login2()
/**
* Model:模型,作用封装数据
* View:视图:作用展示数据
* */
ModelAndView modelAndView = new ModelAndView();
//设置模型数据
modelAndView.addObject("username", "楠木");
//设置视图名称
modelAndView.setViewName("login");
return modelAndView;
4.4.SpringMVC的数据响应-页面跳转-返回ModelAndView形式2(应用)
在Controller中方法形参上直接声明ModelAndView,无需在方法中自己创建,在方法中直接使用该对象设置视图,同样可以跳转页面,SpringMVC自己会给方法中传入参数
@RequestMapping(value = "/login3") //请求地址
public ModelAndView login3(ModelAndView modelAndView)
/**
* Model:模型,作用封装数据
* View:视图:作用展示数据
* */
//设置模型数据
modelAndView.addObject("username", "楠羽");
//设置视图名称
modelAndView.setViewName("login");
return modelAndView;
@RequestMapping(value = "/login4") //请求地址
public String login4(Model model)
/**
* Model:模型,作用封装数据
* View:视图:作用展示数据
* */
//设置模型数据
model.addAttribute("username", "楠慧");
return "login";
4.5.SpringMVC的数据响应-页面跳转-返回ModelAndView3(应用)
在Controller方法的形参上可以直接使用原生的HttpServeltRequest对象,只需声明即可
@RequestMapping(value = "/login5") //请求地址
public String login5(HttpServletRequest request)
request.setAttribute("username", "楠楠");//设置域对象
return "login";
SpringMVC--06 响应和数据模型
SpringMVC–06 响应和数据模型
7.1 @ResponseBody
- 直接响应数据,不涉及到视图
- 可以返回标准的字符串和结构化数据(XML/JSON)
- 会被
StringHttpMessageConverter
影响
7.2 数据模型
SpringMVC提供的在特定作用域内封装数据的组件
7.2.1 Model
我们可以通过Model对象来绑定参数,返回的字符串就是viewName,因为我们没有加
@ResponseBody
Model是一个接口,它的实现类是
ExtendedModelMap
,该实现继承了ModelMap
@GetMapping("/model")
// Model可以在参数列表中声明
public String modelTest(Model model)
// 默认的是请求作用域
model.addAttribute("name","晓龙");
return "login";
7.2.2 ModelMap
ModelMap是继承于LinkedHashMap,它有自身的方法和map的方法
@GetMapping("/modelMap")
public String modelMapTest(ModelMap mMap)
mMap.addAttribute("name","月月");
return "login";
7.2.3 ModelAndView
使用ModelAndView可以在设置参数的同时,也去设置视图的名字,这时候我们需要返回这个ModelAndView交给视图解析器去处理。
它的底层本质其实还是通过ModelMap来存储数据
源码:
public ModelMap getModelMap() // 在存储数据时还是通过ModelMap if (this.model == null) this.model = new ModelMap(); return this.model;
方式一:参数列表声明
@GetMapping("/modelAndView")
// 我们可以通过SpringMVC交给我们一个ModelAndView
public ModelAndView modelAndViewTest(ModelAndView modelAndView)
// 绑定参数
modelAndView.addObject("name","MoonAnd龙");
// 设置视图name
modelAndView.setViewName("login");
// 返回ModelAneView
return modelAndView;
方式二:实例对象
@GetMapping("/modelAndView2")
public ModelAndView modelAndViewTest2()
// 实例ModelAndView对象
ModelAndView modelAndView = new ModelAndView();
// 绑定参数
modelAndView.addObject("name","MoonAnd龙2");
// 设置视图name
modelAndView.setViewName("login");
// 返回ModelAndView
return modelAndView;
7.2.4 参数作用域
SpringMVC的模型组件在默认情况下都是在请求作用域级别的,我们可以通过对应的注解将里面声明的数据提级别。
-
@SessionAttributes
作用在类上的注解,通过names属性来绑定我们需要提升为会话级别的数据@Controller // 将sessionName属性提升到session级别 @SessionAttributes("sessionName") public class ModelController @GetMapping("/modelAndView2") public ModelAndView modelAndViewTest2() ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("name","MoonAnd龙2"); // 将sessionName提升到了session级别 modelAndView.addObject("sessionName","MoonAnd龙2Session"); modelAndView.setViewName("login"); return modelAndView;
以上是关于SpringMVC的数据响应的主要内容,如果未能解决你的问题,请参考以下文章
Spring MVC 学习笔记 --- [SpringMVC的数据响应(Ajax提交请求后,用JSON格式响应数据)]
学习笔记——SpringMVC消息转换器概述;使用消息转换器处理请求报文;使用消息转换器处理响应报文;使用消息转换器处理Json格式数据