5. Estilo RESTful de SpringMVC e interacción asíncrona ajax
Springmvc usa MappingJackson2HttpMessageConverter para convertir datos json de forma predeterminada y necesita agregar
el paquete jackson; al mismo tiempo, use <mvc:annotation-driven />
<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>
1. Anotación @RequestBody
Esta anotación se usa para la declaración de parámetros formales del método Controller.Cuando se envía usando ajax y especificando contentType como json, se convertirá en el objeto POJO correspondiente a través de la interfaz HttpMessageConverter.
<input type="text" id="username" name="username" />
<input type="text" id="age" name="age" />
<button id="btn" >button2</button>
<script>
$("#btn").click(function () {
let url = '${pageContext.request.contextPath}/user/ajaxRequest';
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));
}
})
})
@RequestMapping("/ajaxRequest")
@ResponseBody
public List<User> ajaxRequest(@RequestBody List<User> list){
System.out.println(list);
return list;
}
2. @cuerpo de respuesta
Esta anotación se utiliza para convertir el objeto devuelto por el método Controller en datos en el formato especificado a través de la interfaz HttpMessageConverter, como: json, xml, etc., y responder al cliente a través de Response.
/*
@RequestMapping
produces = "application/json;charset=utf-8" 响应返回数据的mime类型和编码,默认为
json
*/
@RequestMapping(value = "/ajaxRequest")
@ResponseBody
public List<User> ajaxRequest(@RequestBody List<User> list) {
System.out.println(list);
return list;
}
3. Qué es RESTful
Restful es un estilo arquitectónico de software y un estilo de diseño, no un estándar, pero solo proporciona un conjunto de principios y restricciones de diseño. Utilizado principalmente para el software de interacción cliente-servidor, el software diseñado en base a este estilo puede ser más conciso, más jerárquico y más fácil de implementar mecanismos de almacenamiento en caché.
Las solicitudes de estilo tranquilo usan "url + método de solicitud" para indicar el propósito de una solicitud. Los cuatro verbos en el protocolo HTTP que indican el método de operación son los siguientes:
-
OBTENER: leer (Leer)
-
POST: Nuevo (Crear)
-
PUT:更新(Actualizar)
-
ELIMINAR: Eliminar
4. Implementación del código
- @PathVariable se
usa para recibir el valor del marcador de posición en la dirección de solicitud RESTful - @RestController El
estilo RESTful se usa principalmente para el desarrollo de proyectos de separación de front-end y back-end. El front-end interactúa con el servidor de forma asincrónica a través de ajax. Nuestro procesador generalmente devuelve datos json, por lo que @RestController se usa para reemplazar @Controller y @ Anotaciones de ResponseBody.
// @Controller
@RestController
public class RestFulController {
@GetMapping(value = "/user/{id}")
// 相当于 @RequestMapping(value = "/user/{id}",method = RequestMethod.GET)
// @ResponseBody
public String get(@PathVariable Integer id) {
return "get:" + 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;
}
}