返回顶部
首页 > 资讯 > 精选 >SpringMVC HttpMessageConverter报文信息转换器怎么使用
  • 786
分享到

SpringMVC HttpMessageConverter报文信息转换器怎么使用

2023-06-30 17:06:54 786人浏览 薄情痞子
摘要

这篇“springMVC HttpMessageConverter报文信息转换器怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面

这篇“springMVC HttpMessageConverter报文信息转换器怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“springmvc HttpMessageConverter报文信息转换器怎么使用”文章吧。

    SpringMVC HttpMessageConverter报文信息转换器

    HttpMessageConverter 是报文信息转换器,作用有 2 个:

    将请求报文转换为Java对象:请求报文是从浏览器发送到服务器,发送到服务器中就是 request 对象

    将Java对象转换为响应报文:响应报文是服务器响应给浏览器的,服务器中用的java,浏览器不能解析java,所以要转换成响应报文给浏览器。

    其中,HttpMessageConverter 提供了两个注解:@RequestBody@ResponseBody。还有两个类型:RequestEntityResponseEntity

    最常用的还是用来将Java对象转换为响应报文的两个:@ResponseBodyResponseEntity

    至于获取请求参数,或者请求头什么的,前面已经有过好几种方法了,没必要再使用这里的 @RequestBodyRequestEntity

    一、@RequestBody

    @RequestBody可以获取请求体,需要在控制器方法设置一个形参,使用@RequestBody进行标识,当前请求的请求体就会为当前注解所标识的形参赋值。

    比如这有一个页面表单,用来发送请求。

    <fORM th:action="@{/testRequestBody}" method="post">    用户名:<input type="text" name="username">    密码:<input type="passWord" name="password">    <input type="submit"></form>

    对应的有个控制器处理这个请求:

    @RequestMapping("/testRequestBody")public String testRequestBody(@RequestBody String requestBody){    System.out.println("requestBody:"+requestBody);    return "success";}

    这里要补充一个 success.html 以供跳转。

    然后我们在表单中输入 username=admin,password=123456,提交后,查看控制台的输出:

    requestBody:username=admin&password=123456

    username=admin&password=123456这个就是请求体的内容了。

    二、RequestEntity

    RequestEntity是封装请求报文的一种类型,包含了请求头和请求体

    使用时,需要在控制器方法的形参中设置该类型的形参,当前请求的请求报文就会赋值给该形参。

    接着,就可以通过getHeaders()获取请求头信息,通过getBody()获取请求体信息。

    复制一下上面的表单,请求地址换一下:

    <form th:action="@{/testRequestEntity}" method="post">    用户名:<input type="text" name="username"><br>    密码:<input type="password" name="password"><br>    <input type="submit"></form>

    然后补充一个控制器方法:

    @RequestMapping("/testRequestEntity")    public String testRequestEntity(RequestEntity<String> requestEntity){        System.out.println("请求头:"+requestEntity.getHeaders());        System.out.println("请求体:"+requestEntity.getBody());        return "success";    }

    输入表单提交测试一下:

    SpringMVC HttpMessageConverter报文信息转换器怎么使用

    三、@ResponseBody

    1.不使用 @ResponseBody

    在不使用@ResponseBody这个注解的时候,使用servlet apihttpservletResponse 也是可以响应给浏览器的。

    比如:

    @RequestMapping("/testResponse")    public void testResponse(HttpServletResponse response) throws IOException {        response.getWriter().print("hello, response");    }

    前端写一个超链接测试一下:

    <a th:href="@{/testResponse}" rel="external nofollow" >使用HttpServletResponse响应浏览器</a>

    SpringMVC HttpMessageConverter报文信息转换器怎么使用

    点击超链接。

    SpringMVC HttpMessageConverter报文信息转换器怎么使用

    2.使用 @ResponseBody

    使用@ResponseBody则可以标识一个控制器方法,可以将该方法的返回值直接作为响应报文的响应体响应到浏览器。

    @RequestMapping("/testResponseBody")    @ResponseBody    public String testResponseBody(){        return "success";    }

    这里的控制器方法增加了@ResponseBody

    • 如果没有这个注解,返回的 "success",会匹配要跳转的页面。

    • 加上之后, "success"则不再代表视图名称,而是直接返回给浏览器的响应体。

    继续增加超链接测试一下:

    <a th:href="@{/testResponseBody}" rel="external nofollow" >使用 @testResponseBody 响应浏览器</a>

    注意,为了区分效果,success.html 里我修改下内容:

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body><h2>这是 success.html 页面</h2></body></html>

    OK,现在点击超链接,页面显示 success。

    SpringMVC HttpMessageConverter报文信息转换器怎么使用

    接着,我去掉控制器里的 @ResponseBody,再重新部署点击超链接试试。

    SpringMVC HttpMessageConverter报文信息转换器怎么使用

    跳转到了 success.html 页面。

    所以,使用@ResponseBody还是很方便的,我们需要返回给浏览器什么数据,直接在控制器方法里 return 即可。

    3. springMVC 处理 JSON

    上面示例响应的是个字符串,对于浏览器来说就直接显示了。如果我要响应一个对象呢?

    比如,新建一个 User 类,设置好构造方法,set 和 get:

    public class User {    private Integer id;    private String username;    private String password;    private Integer age;    private String sex;... ...

    编写控制器:

    @RequestMapping("/testResponseUser")    @ResponseBody    public User testResponseUser() {        return new User(1001, "大周", "123456", 11, "男");    }

    直接返回一个 User 对象。

    为了测试,继续在前端页面增加一个超链接:

    <a th:href="@{/testResponseUser}" rel="external nofollow" >响应浏览器User对象</a>

    重新部署,点击测试,报错了。

    SpringMVC HttpMessageConverter报文信息转换器怎么使用

    这里还需要转换的步骤,把 User 对象转换成 json 格式的字符串。

    在 pom.xml 中加入依赖 jackson

    <!--对象转化json 响应给浏览器-->    <dependency>        <groupId>com.fasterxml.jackson.core</groupId>        <artifactId>jackson-databind</artifactId>        <version>2.12.1</version>    </dependency>

    另外,检查一下 springMVC.xml 配置文件中的注解驱动是否开启:

    <!--开启 mvc 的注解驱动-->    <mvc:annotation-driven />

    重新部署,点击超链接。

    SpringMVC HttpMessageConverter报文信息转换器怎么使用

    响应正常。

    4. springMVC 处理 ajax

    使用ajax发送请求,跟上面点击超链接发送请,也只是发送请求方式不同而已,对于服务器来说,都是一样处理。

    ajax的优点就是页面不刷新的情况下,可以与服务器进行交互。

    继续在前端页面增加内容,新增一个超链接,绑定一个点击事件@click

    <div id="app"><a th:href="@{/testAjax}" rel="external nofollow"  @click="testAjax">springMVC 处理ajax</a><br></div>

    这里需要用到静态资源 Vue.min.jsaxiOS.min.js,下载后放到WEBapp\static\js下。

    SpringMVC HttpMessageConverter报文信息转换器怎么使用

    通过vue和axios处理点击事件:

    <!--引入--><script type="text/javascript" th:src="@{/static/js/vue.min.js}"></script><script type="text/javascript" th:src="@{/static/js/axios.min.js}"></script><script>    new Vue({        el: "#app",        methods: {            testAjax: function (event) {                axios({                    method: "post",                    url: event.target.href,                    params: {                        username: "admin",                        password: "123456"                    }                }).then(function (response) {                //    请求处理成功后要执行的                    alert(response.data)  // response.data 获取到响应的数据                });                event.preventDefault();  // 取消超链接的默认行为            }        }    });</script>

    增加对于的请求控制器:

    @RequestMapping("/testAjax")    @ResponseBody    public String testAjax(String username, String password) {        System.out.println("username:" + username + ",password:" + password);        return "hello, Ajax";    }

    重新部署之前,记得Maven 重新打包一下。

    另外,springMVC 配置文件中记得放开静态资源的访问:

    <!--放开静态资源的访问-->    <mvc:default-servlet-handler />

    重新部署,点击超链接。

    SpringMVC HttpMessageConverter报文信息转换器怎么使用

    四、@RestController 注解

    这是以后会经常用的注解。

    @RestController注解是 springMVC 提供的一个复合注解。

    标识在控制器的类上,就相当于为类添加了@Controller注解,并且为其中的每个方法添加了@ResponseBody注解。

    五、ResponseEntity

    ResponseEntity用于控制器方法的返回值类型。

    该控制器方法的返回值就是响应到浏览器的响应报文,后面的下载上传文件的示例中会使用到。

    以上就是关于“SpringMVC HttpMessageConverter报文信息转换器怎么使用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

    --结束END--

    本文标题: SpringMVC HttpMessageConverter报文信息转换器怎么使用

    本文链接: https://lsjlt.com/news/330368.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • SpringMVC HttpMessageConverter报文信息转换器怎么使用
      这篇“SpringMVC HttpMessageConverter报文信息转换器怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面...
      99+
      2023-06-30
    • SpringMVC HttpMessageConverter报文信息转换器
      目录SpringMVC HttpMessageConverter报文信息转换器一、@RequestBody二、RequestEntity三、@ResponseBody1.不使用 @R...
      99+
      2024-04-02
    • SpringMVC HttpMessageConverter消息转换器怎么使用
      今天小编给大家分享一下SpringMVC HttpMessageConverter消息转换器怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所...
      99+
      2023-07-06
    • SpringMVC之消息转换器HttpMessageConverter
      这篇文章主要介绍SpringMVC之消息转换器HttpMessageConverter,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!摘要SpringMVC使用消息转换器实现请求报文和对象、对象和响应报文之间的自动转换...
      99+
      2023-05-30
      springmvc httpmessageconverter
    • HttpMessageConverter报文信息转换器的深入讲解
      目录前言HttpMessageConverter 介绍一、@RequestBody 请求体注解1.1、表单提交模拟1.2、控制器方法示例二、RequestEntity 请求封装对象2...
      99+
      2024-04-02
    • SpringMVC中如何使用消息转换器HttpMessageConverter与@ResponseBody注解
      小编给大家分享一下SpringMVC中如何使用消息转换器HttpMessageConverter与@ResponseBody注解,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去...
      99+
      2023-06-02
    • 如何实现HttpMessageConverter报文信息转换器的深入分析
      如何实现HttpMessageConverter报文信息转换器的深入分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言HttpMessageConverter,报文信息...
      99+
      2023-06-26
    • SpringBoot HttpMessageConverter消息转换器如何使用
      本篇内容介绍了“SpringBoot HttpMessageConverter消息转换器如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能...
      99+
      2023-07-02
    • SpringMVCHttpMessageConverter报文信息转换器
      目录1、@RequestBody2、RequestEntity3、@ResponseBody4、SpringMVC处理json5、@RestController注解6、Respons...
      99+
      2023-01-14
      SpringMVC HttpMessageConverter SpringMVC报文信息转换器
    • 详解自定义SpringMVC的Http信息转换器的使用
      在SpringMVC中,可以使用@RequestBody和@ResponseBody两个注解,分别完成请求报文到对象和对象到响应报文的转换,底层这种灵活的消息转换机制。使用系统默认配置的HttpMessageConverter进行解析,然后...
      99+
      2023-05-30
      springmvc 转化器
    • 怎么使用spring的消息转换器
      这篇文章给大家介绍怎么使用spring的消息转换器,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。具体内容如下//domainpackage com.crazy.goods.tools;public class Phon...
      99+
      2023-05-31
      spring
    • RabbitMQ消息转换器怎么应用
      本文小编为大家详细介绍“RabbitMQ消息转换器怎么应用”,内容详细,步骤清晰,细节处理妥当,希望这篇“RabbitMQ消息转换器怎么应用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在SpringAMQP的发...
      99+
      2023-07-05
    • springmvc怎么自定义类型转换器
      要自定义类型转换器,首先需要创建一个实现了Converter接口的转换器类,然后在Spring MVC的配置文件中注册这个转换器。 ...
      99+
      2024-04-02
    • JavaEE开发之SpringMVC中的自定义消息转换器与文件上传
      本篇博客我们继续的来聊SpringMVC的东西,下方我们将会聊到js、css这些静态文件的加载配置,以及服务器推送的两种实现方式。当然我们在服务器推送时,会用到jQuery的东西,所以我们先聊一下如何加载静态资源文件,然后我们再聊如何实现服...
      99+
      2023-05-31
      springmvc 转换器 文件上传
    • SpringBootHttpMessageConverter消息转换器的使用详解
      目录消息转化器的作用消息转化器的主要方法默认配置的消息转化器注意事项消息转化器的作用 将请求报文转化为Java对象将Java对象转化为响应报文 消息转化器的主要方法 getSuppo...
      99+
      2024-04-02
    • WCF数据报信息交换模式怎么实现
      本篇内容介绍了“WCF数据报信息交换模式怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在所有的WCF服务中,有一些服务使用了非常典型...
      99+
      2023-06-17
    • FTP服务器报错信息怎么办
      FTP服务器报错信息怎么办,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 其实在近日很多人问小编,说FTP报错了信息究竟怎么办,想要知道详细的内容就可...
      99+
      2023-06-07
    • 怎么使用API给微信用户发文本消息
      这篇文章主要介绍“怎么使用API给微信用户发文本消息”,在日常操作中,相信很多人在怎么使用API给微信用户发文本消息问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用API给微信用户发文本消息”的疑惑有所...
      99+
      2023-06-04
    • 使用python怎么获取文件的部分信息
      这篇文章将为大家详细讲解有关使用python怎么获取文件的部分信息,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python有哪些常用库python常用的库:1.requesuts;2.sc...
      99+
      2023-06-14
    • 怎么使用Docker来更改文件中的信息
      要使用Docker来更改文件中的信息,可以通过以下步骤实现: 创建一个Docker容器:使用Docker命令创建一个容器,并将要修...
      99+
      2024-04-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作