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的数据响应的主要内容,如果未能解决你的问题,请参考以下文章

SpringMVC--10配置过滤器以及Json

springmvc json数据交互

SpringMVC响应json数据

Spring MVC 学习笔记 --- [SpringMVC的数据响应(Ajax提交请求后,用JSON格式响应数据)]

学习笔记——SpringMVC消息转换器概述;使用消息转换器处理请求报文;使用消息转换器处理响应报文;使用消息转换器处理Json格式数据

DEBUG关于SpringMVC的返回响应体文本json两种数据的乱码问题