Spring MVC 请求映射和限定示例
@Controller
默认返回页面地址
@Controller
public class Test{
@RequestMapping("/index.page")
public String index(){
// 会返回 src/main/resources/templates/index.html 文件
return "index";
}
}
@RestController
@Controller 和 @ResponseBody 的结合体
@RestController
public class Test{
@RequestMapping("/index.page")
public String index(){
// 返回字符串 index
return "index";
}
}
@RequestMapping
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
// 这三个货互为别名
String name() default "";
@AliasFor("path")
String[] value() default {};
@AliasFor("value")
String[] path() default {};
// 指定请求方式 RequestMethod。请求不合法响应 405
RequestMethod[] method() default {};
// 限定参数。参数不匹配响应 400
String[] params() default {};
// 限定 header
String[] headers() default {};
// 限定请求类型,content-type,MediaType,不匹配响应 415
String[] consumes() default {};
// 响应什么数据
String[] produces() default {};
}
一些示例
@RestController
public class Test3{
// 请求 url 参数必须有 age,http://localhost:8080/hello?age=18
@RequestMapping(value="/hello", params="age")
public void test1(int age){
}
// 请求参数必须有 age 并且值必须为 18,必须携带 username,gender 不能为1(不带 gender 也相当于!=1)
@RequestMapping(value="/hello2", params={"age=18","username","gender!=1"})
public void test1(int age, String username, int gender){
}
// 请求中请求有必须要有 token 参数
@RequestMapping(value="/hello3", headers="token")
public void test1(@RequestHeader("token") String age){
}
// 当请求的 content-type 是 MediaType.APPLICATION_JSON_VALUE 才会走这个方法
@PostMapping(value = "/hello4", consumes = MediaType.APPLICATION_JSON_VALUE)
public String hello(@RequestBody MyRequestBody requestBody) {
return "Received name: " + requestBody.getName();
}
// 返回 json,所以方法返回值要是一个对象
@GetMapping(value = "/hello5", produces = MediaType.APPLICATION_JSON_VALUE)
public MyResponseBody hello() {
return new MyResponseBody("Hello, World!");
}
}
class MyResponseBody {
private String message;
public MyResponseBody(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
REST Ful
@GetMapping
:获取资源@PostMapping
:创建资源@PutMapping
:更新整个资源@DeleteMapping
:删除资源@PatchMapping
:更新资源部分信息
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具