当前位置: 首页>前端>正文

springmvc统一增加响应头 springmvc数据响应

作为一个完整的Servlet程序,一定要有响应。当我们给方法加上@RequestMapping来设置映射地址,此方法就可以作为一个servlet程序来使用了我们设置的返回值就是作为响应的数据,此处记录一下了解的数据响应方式

文章目录

  • 大概分类
  • 页面跳转
  • 直接返回字符串
  • 使用模型视图(ModelAndView)对象返回
  • 回写数据
  • 直接返回字符串
  • 对于返回中文出现乱码的问题
  • 返回对象之JSON字符串
  • mvc的注解驱动
  • 返回对象或集合之注解驱动

大概分类

一. 页面跳转

  1. 直接返回字符串
    即这种的
  2. 通过ModelAndView对象返回

二. 回写数据

  1. 直接返回字符串
  2. 返回对象或集合

页面跳转

直接返回字符串

springmvc统一增加响应头 springmvc数据响应,springmvc统一增加响应头 springmvc数据响应_springmvc统一增加响应头,第1张

就前面演示的那种

使用模型视图(ModelAndView)对象返回

ModelAndView,即Model和View,Model指的是数据模型,即我们的数据可以存放到这里面,View是视图,即我们可以通过这个设置我们要返回的视图

springmvc统一增加响应头 springmvc数据响应,springmvc统一增加响应头 springmvc数据响应_spring_02,第2张

这里有三种使用ModelAndView的方式,第一种直接在方法中创建ModelAndView对象,然后使用,这里同一个ModelAndView可以同时存储数据和设置视图

第二种直接在方法中创建一个形参,然后我们在方法体中就不需要再次创建了,当MVC运行到这里,会自动创建一个对应的参数,并传递给我们

第三个,我们用的是Model对象,并不是ModelAndView对象,那么我们这个对象只能存储数据,所以后面我们通过返回字符串的方式来返回视图

当然对应的也有一个View对象对于MVC框架,常用的框架,他们基本上给我们都准备好了,我们可以直接使用 这句话什么意思呢?看例子

springmvc统一增加响应头 springmvc数据响应,springmvc统一增加响应头 springmvc数据响应_spring_03,第3张

当我们需要一些常用对象,我们可以直接在方法的形参中写一个对应的形参,MVC会自动帮我们创建并注入

回写数据

直接返回字符串

在JavaWeb基础中,我们直接这样response.getWriter().print(""); 在MVC中,我们这样写:

springmvc统一增加响应头 springmvc数据响应,springmvc统一增加响应头 springmvc数据响应_springmvc统一增加响应头_04,第4张

在方法上标注一个注解@ResponseBody,表示此方法的返回值仅作为字符串返回到页面上,这个注解的另一层作用就是使此方法不进行页面跳转

springmvc统一增加响应头 springmvc数据响应,springmvc统一增加响应头 springmvc数据响应_mvc_05,第5张

对于返回中文出现乱码的问题

我们可以在此方法的@RequestMapping()的形参中加入这个东西produces = “application/json; charset=utf-8”,后面的charset=utf-8表示用UTF-8编码集,就返回值不为乱码了

返回对象之JSON字符串

有多种方式

  1. 最基本的
    直接用相关的JSON工具包,把对象进行转换
  2. 配置处理器映射器。什么是处理器映射器?就是和视图解析器差不多的MVC组件,其作用是将控制器执行结果ModelandView返回给DispatcherServlet。我们这里对其进行配置,可以使我们在方法中返回对象的时候,有处理器把我们对象转换为JSon字符串然后返回。
    他的配置方法就和前面配置视图处理器差不多
    我们来先看他的源码:这里有个set方法,此方法设置的东西就是处理我们响应数据的地方
    我们来bean注入一个我们想要的东西:

springmvc统一增加响应头 springmvc数据响应,springmvc统一增加响应头 springmvc数据响应_spring_06,第6张

注入这个东西,我们在方法中配合@ResponseBody就可直接返回对象,然后处理器把我们的对象转换为JSon字符串进行返回

mvc的注解驱动

在方法上添加@ResponseBody就可以返回son格式的字符串,但是这样配置比较麻烦,配的代码比较多,因此,我们可以使用mvc的注解驱动代替上述配置。
就是这个东西:<mvc:annotation-driven/>
放在我们的Spring-mvc配置文件中(跟context命名空间一样,这里也需要引入mvc命名空间)
解释:
在SpringMVC的各个组件中,处理器映射器、处理器适配器、视图解析器称为SpringMVC 的三大组件。
使用<mvcannotation-driven>自动加载RequestMappingHandlerMapping (处理映射器)和
RequestMappingHandlerAdapter (处理适配器),可用在Spring xml.xm配置文件中使用
<mvcannotation-driven>替代注解处理器和适配器的配置
同时使用<mvcannotation-driven>默认底层就会集成jackson进行对象或集合的ison格式字符串的转换。

返回对象或集合之注解驱动

由上,这里我们有一个终极方案可以返回对象或者集合或者字符串

springmvc统一增加响应头 springmvc数据响应,springmvc统一增加响应头 springmvc数据响应_mvc_07,第7张

配置文件中把前面配置处理器映射器注掉,直接使用一个<mvc:annotation-driven/>。然后,我们的配置文件就是配好了

再来看具体的测试:

  1. 返回对象
    方法体就两行代码
  2. 返回集合
    如此简单


https://www.xamrdz.com/web/2mh1928909.html

相关文章: