接收请求体和请求行,设置响应体 处理ajax请求 处理json格式请求

这篇具有很好参考价值的文章主要介绍了接收请求体和请求行,设置响应体 处理ajax请求 处理json格式请求。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.将请求体或者请求头转为java对象(String)

@RequestBody 获取请求体(只有post请求才有请求体)

@RequestEntity 获取请求体和请求头

 2.设置响应体

原生的servlet

通过json方式来响应一个类

响应一个类(只这样写会报错,http是存在于浏览器和服务器之间的第三方协议,无法直接解析java中的类,只能传输字符串或者json格式)

解决方式:

步骤一  导入这个依赖,可以自动将java的类转为json格式的字符串 ,

步骤二  开启mvc的注解驱动(在处理静态资源时开启过)

浏览器显示结果:{"uname":"123","pwd":"123"}

处理ajax请求

控制器类接收ajax请求参数 


1.将请求体或者请求头转为java对象(String)

@RequestBody 获取请求体(只有post请求才有请求体)

<form th:action="@{/testRequestBody}" method="post">
    用户名:<input type="text" name="username"><br>
    密码:<input type="password" name="password"><br>
    <input type="submit">
</form>
@RequestMapping("/testRequestBody")
public String testRequestBody(@RequestBody String requestBody){
    System.out.println("requestBody:"+requestBody);
    return "success";
}

输出:

接收请求体和请求行,设置响应体 处理ajax请求 处理json格式请求

@RequestEntity 获取请求体和请求头

    @RequestMapping("/test_requestentity_post") //查看post请求的整个请求报文
//    注意rRequestEntity后面一定要写泛型,<string>
//    否则,请求头中设置数据格式的Content-Type会使用默认的 application/x-www-form-urlencoded,报415错误
//    post请求会报错,get因为没有请求体,不报错 ,ajax好像可以专门设置请求的编码
    public String test_requestentity_post(RequestEntity<String> requestentity)
    {
        System.out.println(requestentity.getHeaders());
        System.out.println(requestentity.getBody());
        return "success";
    }

<form th:action="@{/test_requestentity_post}" method="post">
    <input type="text" name="uname">
    <input type="text" name="pwd">
    <input type="submit" value="提交查看post的请求头和请求体">
</form>

输出:接收请求体和请求行,设置响应体 处理ajax请求 处理json格式请求

 2.设置响应体

原生的servlet

原生的servlet是通过PrintWriter来设置响应体的

  @RequestMapping(value="/yuanshengPrintWrite")
    public  String test_yuanshengPrintWrite(HttpServletResponse response) throws IOException {
        response.setHeader("Content-type", "text/html;charset=UTF-8");
        PrintWriter print=response.getWriter();
        print.write("<h1>原生方式添加请求体</h1>");
        return "success";
    }

接收请求体和请求行,设置响应体 处理ajax请求 处理json格式请求

浏览器收到响应体之后,不管响应体是什么(可能是一个页面,可能是一个字符串),都直接在浏览器页面打印,请求一个页面比如"success",页面经过thymeleaf解析(解析的是  th:text赋值  th:each循环等)之后的html标签内容,作为响应体响应,之后在浏览器原封不动的打印出响应体的内容(当然,html标签会被解析之后打印)。

使用@reponseBody设置响应体

注意:这个方法不同于原生方式在响应体中附加东西,这个方法直接设置响应体,你响应体就要变成  "success"这个字符串  接收请求体和请求行,设置响应体 处理ajax请求 处理json格式请求

@RequestMapping(value="/ResponseBody_test")
    @ResponseBody
    public String test_zhujie()
    {
        return "success";
    }

3.通过json方式来响应一个类

响应一个类(只这样写会报错,http是存在于浏览器和服务器之间的第三方协议,无法直接解析java中的类,只能传输字符串或者json格式)

控制器方法接收user是 springmvc在处理请求时,将json格式的参数填到user类中,不是直接传输user类

 return user 是错的,浏览器不能解析java类

    @RequestMapping("/test_responseBody_user")
    @ResponseBody
    //会报错,不能直接响应一个类
    public User test_responseBody_user(User user) {
        System.out.println(user);
        return user;
    }

解决方式:

步骤一  导入这个依赖,可以自动将java的类转为json格式的字符串 ,

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.12.1</version>
        </dependency>

步骤二  开启mvc的注解驱动(在处理静态资源时开启过)

​​​​​​​<mvc:annotation-driven />

浏览器显示结果:
{"uname":"123","pwd":"123"}

4.处理ajax请求

一个正常的请求,响应体是什么,他就显示什么,比如响应体是html标签,就将html页面解析之后在页面展示,如果是字符串,就直接将字符串在页面显示

但是ajax请求,接收到的响应体是存放进一个data变量中,并不会将响应体在页面显示,如下

因为ajax是不提交整个页面,就能完成浏览器和服务器数据间的交互,所以不能进行页面的跳转,如下,是一个ajax请求,

div id="app">
    <a @click="testAxios" th:href="@{/testAxios}">springmvc处理ajax</a>
</div>
<script type="text/javascript" th:src="@{/static/js/vue.js}"></script>
<script type="text/javascript" th:src="@{/static/js/axios.min.js}"></script>
<script type="text/javascript">
    new Vue({
        el:"#app",
        methods:{
            testAxios:function (event) {
                axios({
                    method:"post",
                    url:event.target.href,
                    params:{
                        username:"admin",
                        password:"123456"
                    }
                }).then(function (response) {
                    alert(response.data);
                });
                event.preventDefault();
            }
        }
    });
</script>

如果,我在控制类中写如下代码,强行让ajax请求返回一个页面

    @RequestMapping("/testAxios")
    public String testAxios(String username, String password){
        System.out.println(username+","+password);
        return "success";
    }

虽然响应体是一个页面,但是ajax的回调函数只是把它放到一个变量中,并不能在屏幕显示这个响应体

接收请求体和请求行,设置响应体 处理ajax请求 处理json格式请求

直接输出success页面的所有内容(ajax的回调函数写了alert)如果没写回调函数,就什么都不会发生

接收请求体和请求行,设置响应体 处理ajax请求 处理json格式请求

在控制器类中加入@responseBody

不返回页面了,返回一个字符串(实际上ajax就是干这个的,不提交整个页面,就能完成浏览器和服务器数据间的交互)

    @RequestMapping("/testAxios")
    @ResponseBody
    public String testAxios(String username, String password){
        System.out.println(username+","+password);
        return "hello ,i am spring MVC go back";
    }

 接收请求体和请求行,设置响应体 处理ajax请求 处理json格式请求

控制器类接收ajax请求参数 

 控制器类接收ajax的请求参数和接收post请求 get请求是一样的,可以直接用属性接收,或者用类接收,或者接收多个同名参数,或者用request接收,上面在控制台的输出

接收请求体和请求行,设置响应体 处理ajax请求 处理json格式请求

5、@RestController注解

@RestController注解是springMVC提供的一个复合注解,标识在控制器的类上,就相当于为类添加了@Controller注解,并且为其中的每个方法添加了@ResponseBody注解

6、ResponseEntity

ResponseEntity用于控制器方法的返回值类型,该控制器方法的返回值就是响应到浏览器的响应报文文章来源地址https://www.toymoban.com/news/detail-404093.html

到了这里,关于接收请求体和请求行,设置响应体 处理ajax请求 处理json格式请求的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt 使用HTTP请求网络API并接收返回的JSON格式的数据

    引入网络模块: mainwindow.h: mainwindow.cpp:

    2024年02月13日
    浏览(37)
  • .NET Web API设置响应输出的Json数据格式的两种方式

    在ASP.NET Core Web API中设置响应输出Json数据格式有两种方式,可以通过添加 System.Text.Json 或 Newtonsoft.Json JSON序列化和反序列化库在应用程序中全局设置接口响应的Json数据格式,本文示例使用的是新的Minimal API模式。 System.Text.Json System.Text.Json是 .NET Core 3.0 及以上版本中内置的 J

    2024年01月18日
    浏览(34)
  • Spring MVC学习随笔-Ajax集成(JSON格式返回数据)、拦截器(MyInterceptor)、全局异常处理(GlobalExceptionResolver)

    学习视频:【编程不良人】继spring之后快速入门springmvc,面对SpringMVC不用慌 引入相关依赖 开发控制器 日期格式修正 可以正常响应 拦截器 :Interceptor 拦截 中断 类似于javaweb中的Filter,不过没有Filter那么强大 作用 Spring MVC的拦截器是一种用于在请求处理过程中进行预处理和后处

    2024年02月05日
    浏览(38)
  • Spring/SpringBoot 过滤器修改、获取http 请求request中的参数 和 response返回值,比如修改请求体和响应体的字符编码

    通过自定义filter,RequestWrapper,ResponseWrapper 处理请求和响应数据,比如修改请求体和响应体的字符编码 1.request 和 response 中的数据都是 存在流中的(缓存中)获取一次就没有了,需要重新写回去。所以需要两个包装类分别继承HttpServletRequestWrapper 和 HttpServletResponseWrapper 对 r

    2024年02月15日
    浏览(31)
  • Ajax的请求响应

    Ajax的全称是Asynchronous JavaScript and XML,即异步的JavaScript和XML(传输储存数据)。它是一种在不重新加载整个页面的情况下更新部分页面的技术。 Ajax的原理 1.用户通过页面上的操作(如点击按钮)触发JavaScript函数的执行; 2.JavaScript函数通过XMLHttpRequest对象向服务器发送请求;

    2024年04月27日
    浏览(20)
  • Http请求响应 Ajax 过滤器

    10/10/2023 近期总结:         最近学的后端部署,web服务器运行,各种请求响应,内容很多,学的很乱,还是需要好好整理,前面JavaSE内容还没有完全掌握,再加上一边刷题,感觉压力很大哈哈。看群友们都在说找工作难,又会被打击,不过感觉一切都以实力说话,提升自己

    2024年02月07日
    浏览(32)
  • jackson库收发json格式数据和ajax发送json格式的数据

    一、jackson库收发json格式数据   jackson库是maven仓库中用来实现组织json数据功能的库。 json格式  json格式一个组织数据的字符文本格式,它用键值对的方式存贮数据,json数据都是有一对对键值对组成的,键只能是字符串,用双引号包括;值可以是字符串,数字,布尔表达式

    2024年02月13日
    浏览(36)
  • 异步请求(Ajax,axios,json)

    同步/异步请求 表单(前端)向后端发送请求,属于同步请求 同步 : 发一个请求, 给一个回应, 会用回应的内容 覆盖 掉浏览器中内容,这样会打断前端其他的正常操作,在现在的前端中,显得不太友好。 异步 : 不同步 前端正常输入时,可以同时与后端进行交互,后端响应的数据

    2024年02月12日
    浏览(39)
  • 4、SpringBoot接收和响应xml报文请求

    平时开发的接口,基本是使用 json 格式的请求报文。然而,有时候也避免不了有 xml 报文请求的场景,最近就遇到了这种情况,在此记录下。另外,工程中使用的是 controller-service……这种结构。 xml请求报文: ?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" ? req   tel15556905765/tel   activityid/ac

    2024年02月12日
    浏览(23)
  • 【Java】数据交换 Json 和 异步请求 Ajax

     🎄欢迎来到@边境矢梦°的csdn博文,本文主要讲解Java 中 数据交换和异步请求 JsonAjax 的相关知识🎄 🌈我是边境矢梦°,一个正在为秋招和算法竞赛做准备的学生🌈 🎆喜欢的朋友可以关注一下 🫰🫰🫰 ,下次更新不迷路🎆 Ps: 月亮越亮说明知识点越重要 (重要性或者难度

    2024年02月13日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包