SpringMVC--06 响应和数据模型

Posted Moon&&Dragon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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--06 响应和数据模型的主要内容,如果未能解决你的问题,请参考以下文章

如何通过简单的模拟模型生成人工数据集,用于具有二元响应和 4-5 特征的分类分析? [关闭]

一旦通过身份验证,HTTP 1.1 授权标头就会随每个请求一起发送到域内的每个资源

10.FastAPI响应体

模型数据库中的异构类型

没有得到猫鼬模型的响应。find()查询

在 ServiceStack 的元数据页面上提供响应模型示例 JSON 数据