前言
本章来讲解RequestMapping注解的用法,帮助大家进一步了解RequestMapping注解各种各样的使用方式,本章节测试工具使用Postman,不再提供JSP代码。
一、普通用法及类结构
package org.example.springmvc.params.controller;
import com.alibaba.fastjson2.JSONObject;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* Create by zjg on 2024/4/27
*/
@RestController
@RequestMapping("/mapping/")
public class MappingController {
@RequestMapping("mapping01")
public void mapping01(){
System.out.println("这是一个普通的请求");
}
}
二、method
//method
@RequestMapping(value = "mapping02",method = RequestMethod.GET)
public void mapping02(){
System.out.println("GET请求可以访问");
}
@RequestMapping(value = "mapping03",method = RequestMethod.POST)
public void mapping03(){
System.out.println("POST请求可以访问");
}
@RequestMapping(value = "mapping04",method = {RequestMethod.GET,RequestMethod.POST})
public void mapping04(){
System.out.println("GET和POST请求可以访问");
}
三、params
//params
@RequestMapping(value = "mapping05",params = {"name"})
public void mapping05(String name){
System.out.println("请求携带name参数可以访问"+name);
}
@RequestMapping(value = "mapping06",params = {"!name"})
public void mapping06(){
System.out.println("请求不携带name参数可以访问");
}
@RequestMapping(value = "mapping07",params = {"name=张三"})
public void mapping07(String name){
System.out.println("请求携带name值为张三参数可以访问"+name);
}
@RequestMapping(value = "mapping08",params = {"name!=张三"})
public void mapping08(){
System.out.println("请求携带name值不为张三参数可以访问");
}
四、headers
//headers
@RequestMapping(value = "mapping09",headers ={"Host=localhost"} )
public void mapping09(){
System.out.println("请求头携带Host=localhost可以访问");
}
@RequestMapping(value = "mapping10",headers ={"!Referer"} )
public void mapping10(){
System.out.println("请求头未携带Referer可以访问");
}
五、consumes
//consumes
@RequestMapping(value = "mapping11",consumes ={"application/x-www-form-urlencoded"} )
public void mapping11(){
System.out.println("请求内容类型为application/x-www-form-urlencoded可以访问");
}
六、produces
//produces
@RequestMapping(value = "mapping12",produces ={"application/json"} )
public JSONObject mapping12(){
System.out.println("响应内容类型为application/json");
JSONObject jsonObject = new JSONObject();
jsonObject.put("code",200);
jsonObject.put("data","");
jsonObject.put("message","请求成功");
return jsonObject;
}
七、通配符
//通配符?,*,**
@RequestMapping(value = "mapping13?")
public void mapping13(){
System.out.println("请求url向后模糊匹配一位可以访问");
}
@RequestMapping(value = "mapping14*")
public void mapping14(){
System.out.println("请求url向后模糊匹配任意位字符可以访问(直到路径分隔符为止)");
}
@RequestMapping(value = "mapping15/**")
public void mapping15(){
System.out.println("请求url向后模糊匹配任意位字符可以访问(无视路径分隔符)");
}
八、路径变量
//路径变量
@RequestMapping(value = "mapping16/{id}")
public void mapping16(@PathVariable String id){
System.out.println("请求url中的路径变量"+id);
}
九、扩展
@RequestMapping也有特定于HTTP方法的快捷方式变体:
- @GetMapping
- @PostMapping
- @PutMapping
- @DeleteMapping
- @PatchMapping
总结
以下是Content-Type常用类型的表格展示:
Content-Type 类型 | 描述 | 常见用途 |
---|---|---|
text/plain | 纯文本格式 | 用于传输简单的文本信息 |
text/html | HTML格式 | 用于表示网页内容 |
application/json | JSON格式 | 用于数据交换,常见于Restful风格的服务端接口 |
application/xml | XML格式 | 用于SOAP和RESTful API之间的数据交换,以及XML文件的处理 |
image/jpeg | JPEG图片格式 | 用于发送和接收JPEG图片 |
image/png | PNG图片格式 | 用于发送和接收PNG图片 |
audio/mpeg | MPEG音频格式 | 用于发送和接收音频文件 |
video/mp4 | MP4视频格式 | 用于发送和接收视频文件 |
multipart/form-data | 表单数据格式 | 用于包含表单数据的请求,特别是当需要上传文件时 |
application/x-www-form-urlencoded | 表单编码格式 | 用于简单的表单数据提交 |