@RequestMapping 属性详解 - SpringMVC 高手进阶,2021 金九银十
[](
)1、name
此处 name 属性,相当于方法的注释,使方法更易理解
@RequestMapping(value = "login",name = "用户登录")
@ResponseBody
public String login() {
return "success";
}
官方文档说:它能让你非常方便的在 JSP 页面上使用它,形如这样子可以直接通过静态页面调用:
<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
...
<a href="${s:mvcUrl('PAC#getAddress').arg(0,'US').buildAndExpand('123')}">Get Address</a>
[](
)2、value
@Controller
@RequestMapping("user") //此处如果不省略,则为 @RequestMapping(value="user")
public class UserController {
@RequestMapping("login")
@ResponseBody
public String login() {
return "success";
}
}
指定请求的实际地址,指定的地址可以是 URI 模板模式(Template Pattern);
由于 value 属性是 @RequestMapping 注释的默认属性,因此如果只有唯一的属性,则可以省略该属性名,如果有超过一个属性,则必须写上 value 属性名称。即如下两个标注含义一样
@RequestMapping(value="login")
@RequestMapping("login")
value 属性支持通配符匹配:
@RequestMapping(value="login/*");
即:http://localhost:8080/login/1 或者 http://localhost:8080/login/hahaha 都能够正常访问该接口
此处通过 URL:http://localhost:8080/user/login 进行访问,将由 login()方法进行处理
[](
)3、path
与 value 同义,path(value)(path 和 value 互相引用,参见 RequestMapping 接口源码)
path 属性,和 1 中的 value 属性使用一致,两者都是用来作为映射使用的。
@RequestMapping(value=“login”)、@RequestMapping(path=“login”),这两种情况都能对 login()方法进行访问
path 属性支持通配符匹配:
@RequestMapping(path="login/*");
即:http://localhost:8080/login/1 或者 http://localhost:8080/login/abc 都能够正常访问
[](
)4、method
指定请求类型, 如 GET、POST、PUT、DELETE 等;
@RequestMapping(value = "login",method = RequestMethod.GET)
@ResponseBody
public String login() {
return "success";
}
以上方法表示,该方法只支持 GET 请求。
此处也可以为
@RequestMapping(value = "login",method = {RequestMethod.GET,RequestMethod.POST})
说明该方法可以同时支持 GET 和 POST 请求。
如果没有 method 属性,则说明该方法支持全部的 HTTP 请求。
[](
)5、params
该属性指定,请求中必须包含 params 属性规定的参数时,才能执行该请求
@RequestMapping(value = "login",params = "flag")
@ResponseBody
public String login() {
return "success";
}
以上方法,说明请求中必须包含 flag 参数才能执行该请求,flag 参数值不做要求
http://localhost:8080/login?flag=xxx // 正常访问
http://localhost:8080/login // 无法访问
@RequestMapping(value = "login",params = "flag=true")
@ResponseBody
public String login() {
return "success";
}
以上方法,说明请求中必须包含 flag 参数,而且参数值必须为 true 才能执行该请求
http://localhost:8080/login?flag=true // 正常访问
http://localhost:8080/login?flag=false // 无法访问
http://localhost:8080/login // 无法访问
[](
)6、headers
用于 HTTP 协义交互的信息被称为 HTTP 报文,客户端发送的 HTTP 报文被称为请求报文,服务器发回给客户端的 HTTP 报文称为响应报文,报文由报文头部和报文体组成。
请求头部(Request
Headers):请求头包含许多有关客户端环境和请求正文的信息,例如浏览器支持的语言、请求的服务器地址、客户端的操作系统等。
响应头部(Rsponse Headers):响应头也包含许多有用的信息,包括服务器类型、日期、响应内容的类型及编码,响应内容的长度等等。
该属性指定,请求中必须包含某些指定的 header 值,才能够让该方法处理请求
如 Chrome 浏览器:
可以通过点击 F12(进入开发者模式)---->Network---->Name 中点击网页---->右侧查看 Headers 即可,下边是我电脑中的一个请求头部示例:
Request Headers
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:JSESSIONID=210075B5E521CWE3CDE938076295A57A
Host:localhost:8080
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93
// 表示只接收本机发来的请求
评论