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类:
结果: