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; }