SpringMVC的数据响应

SpringMVC的数据响应方式主要有页面跳转和回写数据

页面跳转:直接返回字符串

即https://www.cnblogs.com/maomaodesu/p/12268886.html中主要介绍的方式。

页面跳转:通过ModelAndView对象返回

UserController类

设置模型数据时往request域中存储数据,这样可以在转发到页面时通过EL获取数据

默认转发到success.jsp

UserController类的另一种方式

功能上类似ModelAndView的有Model,Map,ModelMap,request(不推荐)等,使用方法一致,都是存储到request域,用哪个都行。

success.jsp中使用EL表达式

EL只能从域中取值,因此是从request中取得的数据

效果:

回写数据:直接返回字符串

在没有SpringMVC时我们使用response对象,现在可以通过SpringMVC框架注入的response对象,使用response.getWriter().print("hello world")回写数据,此时不需要视图跳转,业务方法返回值是void,这种方式不通用。

UserController类(使用response对象):

现在的做法是需要返回字符串时,通过@ResponseBody告知SpringMVC框架

UserController类(使用@ResponseBody注解):

@ResponseBody

标注在方法上,用于表示把该方法的返回值直接写回客户端

标注在类上,相当于把该类的所有方法都标注了此注解

@RestController相当于@Controller+@ResponseBody

效果:

发现是有乱码的,为什么SpringMVC会出现中文乱码,SpringMVC把字符串返回时默认情况下会走字符串Http消息转换器StringHttpMessageConverter,通过这个转换器把字符串转换成Http消息返回到浏览器。这个转换器中的默认字符集DEFAULT_CHARSET是ISO-8859-1是一个北欧的字符集,不包含中文,所以我们要更改它的字符集。因此我们在spring-mvc.xml的中设置我们将要使用到的消息转换器。

conversionService自定义类型转换器

自定义DateConverter类实现Converter接口

在spring-mvc.xml里声明自定义的转换器,声明后默认的DateConverter就会被覆盖

配置spring-mvc.xml来修正乱码:需要使用上面声明转换器conversionService

回写数据:返回对象或集合(对象转成json字符串然后返回)

SpringMVC默认会把对象自动转换为json字符串然后写回,底层默认使用Jackson作为转换器(这里就不配置了,用默认的)

在pom.xml中引入jar包

SpringMVC的注解驱动同时集成Jackson转换器,就不需要手动配置转换器了

UserController类:

结果:

posted @ 2020-02-08 16:05  卯毛  阅读(560)  评论(0编辑  收藏  举报