三种参数接收方式的区别 :
@RequestParam 用于接收url地址传参或表单传参
@RequestBody 用于接收json数据
@PathVariable 用于接收路径参数,使用{参数名称}描述路径参数
java
package com.wu.controller;
import com.wu.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
public class UserController {
@RequestMapping(value = "/users", method = RequestMethod.POST)
@ResponseBody
public String save(@RequestBody User user) {
System.out.println("user save ==> " + user);
return "{'module':'user save'}";
}
@RequestMapping(value = "/users/{id}", method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Integer id) {
System.out.println("user delete ==> " + id);
return "{'module':'user delete'}";
}
@RequestMapping(value = "/users", method = RequestMethod.PUT)
@ResponseBody
public String update(@RequestBody User user) {
System.out.println("user update ==> " + user);
return "{'module':'user update'}";
}
@RequestMapping(value = "/users/{id}", method = RequestMethod.GET)
@ResponseBody
public String getById(@PathVariable Integer id) {
System.out.println("user getById ==> " + id);
return "{'module':'user getById'}";
}
@RequestMapping(value = "/users", method = RequestMethod.GET)
@ResponseBody
public String getAll() {
System.out.println("user getAll");
return "{'module':'user getAll'}";
}
}
以图书信息管理为例进行代码优化
@RestController注解
类型 :类注解
位置 :基于SpringMvc的RESTful开发控制器类定义上方
作用:设置当前控制器类为RESTful风格,等同于@Controller与@ResponseBody两个注解组合功能
RESTful快速开发
名称 :@GetMapping(GET) @PostMapping(POST) @PutMapping(PUT) @DeleteMapping(DELETE)
类型 :方法注解
位置 :基于SpringMVC的RESful开发控制器方法定义上方
作用:设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作
java
package com.wu.controller;
import com.wu.domain.Book;
import org.springframework.web.bind.annotation.*;
//@Controller
//@ResponseBody
@RestController // 将上方两个注解合二为一
@RequestMapping("/books")
public class BookController {
// @RequestMapping(method = RequestMethod.POST)
@PostMapping
public String save(@RequestBody Book book) {
System.out.println("book save ==> " + book);
return "{'module':'book save'}";
}
// @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@DeleteMapping("/{id}")
public String delete(@PathVariable Integer id) {
System.out.println("book delete ==> " + id);
return "{'module':'book delete'}";
}
// @RequestMapping(method = RequestMethod.PUT)
@PutMapping
public String update(@RequestBody Book book) {
System.out.println("book update ==> " + book);
return "{'module':'book update'}";
}
// @RequestMapping(value = "/{id}", method = RequestMethod.GET)
@GetMapping("/{id}")
public String getById(@PathVariable Integer id) {
System.out.println("book getById ==> " + id);
return "{'module':'book getById'}";
}
// @RequestMapping(method = RequestMethod.GET)
@GetMapping
public String getAll() {
System.out.println("book getAll");
return "{'module':'book getAll'}";
}
}