栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

接收请求体和请求行,设置响应体

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

接收请求体和请求行,设置响应体

1.将请求体或者请求头转为java对象(String) @RequestBody 获取请求体(只有post请求才有请求体)

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

输出:

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

输出:

 2.设置响应体 原生的servlet

浏览器收到响应体之后,不管响应体是什么(可能是一个页面,可能是一个字符串),都直接作出响应,请求一个页面比如"success",页面经过thymeleaf解析之后的html内容,作为响应体响应。

    @RequestMapping("/test_serlvet")
// 返回值设置为null ,页面依旧会跳转,跳转到请求的地址  
跳转到: // http://localhost:8080/Springmvc_demo4/test_serlvet 不报错 public String test_serlvet(HttpServletResponse response) throws IOException { PrintWriter out= response.getWriter(); // 浏览器收到响应体后,不管响应体是什么(可能是一个页面,可能是一个字符串),都直接进行显示 // 正常返回一个页面,比如"success',页面经过thymeleaf解析之后,作为响应体响应 // 这是在响应体中添加了一个字符串success,浏览器收到响应体,将响应体显示,并不是直接在浏览器中输出了success out.println("success123"); return "sucess"; }
响应一个类(只这样写会报错,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;
    }
解决方式: 1.导入这个依赖,可以自动将java的类转为json格式的字符串 ,
        
            com.fasterxml.jackson.core
            jackson-databind
            2.12.1
        
2.开启mvc的注解驱动(在处理静态资源时开启过)
​​​​​​​
浏览器显示结果:
{"uname":"123","pwd":"123"} 处理ajax请求

因为ajax是请求不刷新页面,所以不能进行页面的跳转,如下,是一个ajax请求

div id="app">
    springmvc处理ajax



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

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

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

在控制器类中加入@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的请求参数和接收post请求 get请求是一样的,可以直接用属性接收,或者用类接收,或者接收多个同名参数,或者用request接收,如上

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/856864.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号