写点什么

@RequestMapping 属性详解 - SpringMVC 高手进阶,2021 金九银十

用户头像
极客good
关注
发布于: 刚刚

[](

)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";


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


}


以上方法,说明请求中必须包含 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


// 表示只接收本机发来的请求

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
@RequestMapping属性详解 - SpringMVC高手进阶,2021金九银十