SpringMVC进阶

1. ajax异步交互

springMVC默认使用MappingJackson2HttpMessageConverter对json数据进行格式转换,需要导入Jackson的包并同时配置处理器适配器和处理器映射器

   <!-- 导入Jackson包-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.8</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.8</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.0</version>
        </dependency>
<!-- 配置处理器适配器和处理器映射器 ,可以对json格式解析,进行了方法的增强-->
    <mvc:annotation-driven />
<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2021/7/17
  Time: 17:19
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>ajax</title>
</head>
<body>
<script src="${pageContext.request.contextPath}/js/jquery-3.5.1.js"></script>
<button id="btn1">ajax异步处理</button>
<script>
    $("#btn1").click(function () {
    //请求地址
        let url ="${pageContext.request.contextPath}/ajax";
        // 请求数据
            let data='[{"id":1,"username":"张三"},{"id":2,"username":"李四"}]';
            $.ajax({
                type:'POST',
                url:url,
                data:data,
                contentType:'application/json:charset=utf-8',
                success:function (resp) {
                    alert(JSON.stringify(resp));
                }
            })
    })
</script>
</body>
</html>
  • @RequestBody:当使用ajax提交并制定contentType为json格式时,需要通过HttpMessageConverter接口将json格式转为对应的POJO对象
  • @ResponseBody:当将POJO对象返回时,通过HttpMessageConverter接口转换为制定的json,xml格式等,通过response响应给客户端
 @RequestMapping("/ajax")
    @ResponseBody
    public List<User> ajax(@RequestBody List<User> list){
        System.out.println(list);
        return list;
    }

2. RESTful

  • Restful是一种软件架构风格,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件,能更简洁更有层次的实现缓存机制
  • Restful风格的请求是使用“url+请求方式”表示一次请求目的的,HTTP协议中的操作方式为GET,POST,PUT,DELETE
客户端请求 原来风格URL地址 RESTful风格URL地址
查询所有 /user/findAll GET /user
根据ID查询 /user/findById?id=1 GET /user/{1}
新增 /user/save POST /user
修改 /user/update PUT /user
删除 /user/delete?id=1 DELETE /user/{1}
  • @PathVariable:用于接受RESTful请求地址中的占位符的值
  • @RestController=@Controller+@ResponseBody,简化开发,前端通过ajax与服务器进行异步交互,处理器将json数据返回
 @GetMapping("/user/{id}")// 等同于@RequestMapping(path = "/user/{id}",method = RequestMethod.GET)
    // @Controller + @ResponseBody 的作用等同于   @RestController
    public String find(@PathVariable Integer id){
        return "findbyId:"+id;
    }

    @PostMapping(value = "/user")
// @ResponseBody
    public String post() {
        return "post";
    }

    @PutMapping(value = "/user")
// @ResponseBody
    public String put() {
        return "put";
    }

    @DeleteMapping(value = "/user/{id}")
// @ResponseBody
    public String delete(@PathVariable Integer id) {
        return "delete:"+ id;
    }

 

上一篇:@ResponseBody,@RequestBody的使用


下一篇:【SpringMVC 从 0 开始】HttpMessageConverter 报文信息转换器