top
2021.7.31

SpringMVC:HttpMessageConverter

HttpMessageConverter:报文信息转换器,将请求报文转换成java对象,或将java对象转换成相应报文.

HttpMessageConverter:提供了两个注解和两个类型:@RequestBody,@ResponseBody,RequestEntity,ResoinseEntity

1.@RequestBody注解获取请求信息

html

<form th:action="@{/testRequestBody}" method="post">
    username:<input type="text" name="username"><br>
    password:<input type="password" name="ped"><br>
    <input type="submit" value="测试@RequestBody">
</form>

控制器方法:

 

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

form表单输入 aaaaaaa - 123456

 

控制台输出:

2.RequestEntity类型表示完整的请求报文信息

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

输出:

 

请求头:[host:"localhost:8080", connection:"keep-alive", content-length:"25", 
cache-control:"max-age=0", sec-ch-ua:""Chromium";v="21", " Not;A Brand";v="99"", 
sec-ch-ua-mobile:"?0", sec-ch-ua-platform:""Windows"", upgrade-insecure-requests:"1", 
origin:"http://localhost:8080", 
user-agent:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36", 
accept:"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", 
sec-fetch-site:"same-origin", sec-fetch-mode:"navigate", sec-fetch-user:"?1", sec-fetch-dest:"document", 
referer:"http://localhost:8080/web_04_war_exploded/", 
accept-encoding:"gzip, deflate, br", accept-language:"zh-CN,zh;q=0.9", Content-Type:"application/x-www-form-urlencoded;charset=UTF-8"]
请求体:username=123123&ped=12345

 3.通过@ResponseBody响应浏览器数据

此前通过HttpServletResponse响应浏览器数据

    //通过HttpServletResponse相应浏览器数据
    @RequestMapping("/testHttpServletResponse")
    public void testHttpServletResponse(HttpServletResponse httpServletResponse) throws IOException {
        httpServletResponse.getWriter().println("he,response");
    }

通过ResponseBody响应浏览器数据

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

这里return的不是视图名称,而是直接作为响应报文的响应体响应到浏览器

@ResponseBody处理json和ajax

SpringMVC:处理json和Ajax

@RestController注解

@RestController注解是SpringMVC提供的一个复合注解,标识在控制器的类上,就相当于为类添加

了@Controller注解,并且为其中的每个方法添加了一个@ResponseBody注解

4.ResponseEntity

ResponseEntity用于控制器方法的返回值类型,该控制器方法的返回值就是响应到浏览器的响应报文

使用ResponseEntity实现文件下载功能

 

 

 

阅读剩余
THE END
icon
0
icon
打赏
icon
分享
icon
二维码
icon
海报
发表评论
评论列表

赶快来坐沙发