@RequstMapping、@GetMapping、@PostMapping三者区别联系
@RequestMapping
一般情况下都是用@RequestMapping(method=RequestMethod.),因为@RequestMapping可以直接替代以上两个注解。
@GetMapping
是一个组合注解,用于将HTTP GET请求映射到特定处理程序方法的注释。是@RequestMapping(method = RequestMethod.GET)的缩写。
@PostMapping
是一个组合注解,用于将HTTP POST请求映射到特定处理程序方法的注释。是@RequestMapping(method = RequestMethod.POST)的缩写。
Get方法
获取资源信息,就像数据库查询一样,不会修改和增加数据
POST方法
向服务器提交数据,比如完成表单数据的提交,将数据提交给服务器处理
PUT方法
让服务器用请求的主体部分来创建一个由所请求的URL命名的新文档;如果那个文档存在的话,就用这个主体来代替它。
DELETE方法
请求服务器删除指定URL所对应的资源。但是,客户端无法保证删除操作一定会被执行,因为HTTP规范允许服务器在不通知客户端的情况下撤销请求。
番外篇:
“@RequestMapping”请求路径映射,如果标注在某个controller的类级别上,则表明访问此类路径下的方法都要加上其配置的路径;最常用是标注在方法上,表明哪个具体的方法来接受处理某次请求。
@Controller @RequestMapping(value="/book") public class BookController { @RequestMapping(value="/title") public String getTitle(){ return "title"; } @RequestMapping(value="/content") public String getContent(){ return "content"; }
由于BookController类加了value="/book"的“@RequestMapping”的注解,所有相关路径都要加上"/book",即请求的url分别为:
- http://localhost:8080/book/title
- http://localhost:8080/book/content
"@RequestMapping"的value值前后是否有“/”对请求的路径没有影响,即value="book" 、"/book"、"/book/"其效果是一样的
"@RequestMapping" 的属性
- value: 指定请求的实际url
1. 普通的具体值。如前面的value="/book"。
2. 含某变量的一类值
@RequestMapping(value="/get/{bookId}") public String getBookById(@PathVariable String bookId,Model model){ model.addAttribute("bookId", bookId); return "book"; }
路径中的bookId可以当变量,@PathVariable 注解即提取路径中的变量值
3.ant风格
@RequestMapping(value="/get/id?"):可匹配“/get/id1”或“/get/ida”,但不匹配“/get/id”或“/get/idaa”;
@RequestMapping(value="/get/id*"):可匹配“/get/idabc”或“/get/id”,但不匹配“/get/idabc/abc”;
@RequestMapping(value="/get/id/*"):可匹配“/get/id/abc”,但不匹配“/get/idabc”;
@RequestMapping(value="/get/id/**/{id}"):可匹配“/get/id/abc/abc/123”或“/get/id/123”,也就是Ant风格和URI模板变量风格可混用;
4. 含正则表达式的一类值
@RequestMapping(value="/get/{idPre:\\d+}-{idNum:\\d+}"):可以匹配“/get/123-1”,但不能匹配“/get/abc-1”,这样可以设计更加严格的规则。
可以通过@PathVariable 注解提取路径中的变量(idPre,idNum)
5. 或关系
@RequestMapping(value={"/get","/fetch"} )即 /get或/fetch都会映射到该方法上
- method: 指定请求的method类型, GET、POST、PUT、DELETE等;
@RequestMapping(value="/get/{bookid}",method={RequestMethod.GET,RequestMethod.POST}) - params
@RequestMapping(params="action=del"),请求参数包含“action=del”,如:http://localhost:8080/book?action=del - headers
@RequestMapping(value="/header/id", headers = "Accept=application/json"):表示请求的URL必须为“/header/id 且 请求头中必须有“Accept =application/json”参数即可匹配。