• 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类:

    结果:

  • 相关阅读:
    Java安全之Filter权限绕过
    Java学习之struts2使用
    Java学习之Hibernate框架使用
    Java学习之Maven使用
    .Net Core3.1中SameSite的使用方法、遇到的问题以及解决办法
    .Net Core 3.1简单搭建微服务
    在VM虚拟机中安装FTP服务
    Hyper-V中的虚拟机(Centos)安装FTP服务
    Docker相关操作
    .Net Core 3.1 服务端配置跨域
  • 原文地址:https://www.cnblogs.com/maomaodesu/p/12283730.html
Copyright © 2020-2023  润新知