@RequestMapping 参数说明

  value:定义处理方法的请求的 URL 地址。(重点)

  method:定义处理方法的 http method 类型,如 GET、POST 等。(重点)

  params:定义请求的 URL 中必须包含的参数。或者不包含某些参数。(了解)

  headers:定义请求中 Request Headers 必须包含的参数。或者不包含某些参数。(了解)

@RequestMapping 的用法

  @RequestMapping 有两种标注方式,一种是标注在类级别上,一种是标注在方法级别上。标注在方法上时,value 表示访问该方法的 URL 地址。标注在类上时,value 相当于一个命名空间,即访问该 Controller 下的任意方法都需要带上这个命名空间。例如:

Java代码

 1 @Controller
2 @RequestMapping("/example")
3 public class ExampleController {
4
5 @RequestMapping
6 public String execute(){
7 return "example_page";
8 }
9
10 @RequestMapping("/todo")
11 public String doSomething(){
12 return "example_todo_page";
13 }
14
15 }

  1:/example.action:执行的是 execute() 方法。execute() 方法的 @RequestMapping 注解缺省 value 值,在这种情况下,当访问命名空间时默认执行的是这个方法。方法级别上的 @RequestMapping 标注是必须的,否则方法无法被正确访问。

  2:/example/todo.action执行的是 doSomething() 方法。类级别上的 @RequestMapping 标注不是必须的,在不写的情况下,方法上定义的 URL 都是绝对地址,否则,方法上定义的 URL 都是相对于它所在的 Controller 的。

@RequestMapping(method):指定页面请求方式

1 @RequestMapping(value = "/register", method = RequestMethod.GET)
2 public String register(){
3 return "example_register_page";
4 }

  method 的值一旦指定,那么,处理方法就只对指定的 http method 类型的请求进行处理。 这里方法/register只能使用get请求,使用post请求无法访问

1 @RequestMapping(value = "/register", method = RequestMethod.GET)
2 public String register1(){
3 return "example_register_get_page";
4 }
5
6 @RequestMapping(value = "/register", method = RequestMethod.POST)
7 public String register2(){
8 return "example_register_post_page";
9 }

  可以为多个方法映射相同的 URI,不同的 http method 类型,Spring MVC 根据请求的 method 类型是可以区分开这些方法的。当 /example/register.action 是以 GET 的方式提交的时候,Spring MVC 调用 register1() 来处理请求;若是以 POST 的方式提交,则调 register2() 来处理提交的请求。

  method 若是缺省没指定,并不是说它默认只处理 GET 方式的请求,而是它可以处理任何方式的 http method 类型的请求。指定 method 是为了细化映射 ( 缩小处理方法的映射范围 ),在 method 没有指定的情况下,它的映射范围是最大的。

@RequestMapping(params)

  与 method 相类似,作用是为了细化映射。只有当 URL 中包含与 params 值相匹配的参数的请求,处理方法才会被调用。

 1 @RequestMapping(value = "/find", params = "target")
2 public String find1(){
3 return "example_find1_page";
4 }
5
6 @RequestMapping(value = "/find", params = "!target")
7 public String find2(){
8 return "example_find2_page";
9 }
10
11 @RequestMapping(value = "/search", params = "target=product")
12 public String search1(){
13 return "example_search1_page";
14 }
15
16 @RequestMapping(value = "/search", params = "target!=product")
17 public String search2(){
18 return "example_search2_page";
19 }

  find1():请求的 URL 中必须要有 target 参数,才能够到达此方法。如 /example/find.action?target 或 /example/find.action?target=x 等

  find2():请求的 URL 中必须不能有 target 参数,才能够到达此方法。如 /example/find.action 或 /example/find.action?q=x 等

  search1():请求的 URL 中必须要有 target=product 参数,才能够到达此方法。如 /example/search.action?target=product 等

  search2():请求的 URL 中必须不能有 target=product 参数,才能够到达此方法。如 /example/search.action?target=article 等

@RequestMapping(headers)

  headers 的作用也是用于细化映射。只有当请求的 Request Headers 中包含与 heanders 值相匹配的参数,处理方法才会被调用。

1 @RequestMapping(value = "/specify", headers = "accept=text/*")
2 public String specify(){
3 return "example_specify_page";
4 }

  请求的 Request Headers 中 Accept 的值必须匹配 text/* ( 如 text/html ),方法才会被调用。

@RequestMapping支持Ant风格的通配符

通配符 说明 示例
? 匹配一个任意字符 /a/?b 可以匹配/a/ab;/a/cb。但不能匹配/a/acb之类
* 匹配任意长度的字符 /a/ *b可以匹配/a/cb;/a/acb。但不能匹配/a/cb/vb
** 匹配多层路径 可以匹配/a/ab;/a/acb;/a/ab/abc/…/…

Spring MVC @RequestMapping注解详解的更多相关文章

  1. Spring MVC @RequestMapping注解详解(2)

    @RequestMapping 参数说明 value:定义处理方法的请求的 URL 地址.(重点) method:定义处理方法的 http method 类型,如 GET.POST 等.(重点) pa ...

  2. Spring IoC 公共注解详解

    前言 本系列全部基于 Spring 5.2.2.BUILD-SNAPSHOT 版本.因为 Spring 整个体系太过于庞大,所以只会进行关键部分的源码解析. 什么是公共注解?公共注解就是常见的Java ...

  3. Spring IoC @Autowired 注解详解

    前言 本系列全部基于 Spring 5.2.2.BUILD-SNAPSHOT 版本.因为 Spring 整个体系太过于庞大,所以只会进行关键部分的源码解析. 我们平时使用 Spring 时,想要 依赖 ...

  4. Spring MVC测试框架详解——服务端测试

    随着RESTful Web Service的流行,测试对外的Service是否满足期望也变的必要的.从Spring 3.2开始Spring了Spring Web测试框架,如果版本低于3.2,请使用sp ...

  5. spring mvc+myBatis配置详解

    一.spring mvc Spring框架(框架即:编程注解+xml配置的方式)MVC是Spring框架的一大特征,Spring框架有三大特征(IOC(依赖注入),AOP(面向切面),MVC(建模M- ...

  6. SpringMVC @RequestMapping注解详解

    @RequestMapping 参数说明 value:定义处理方法的请求的 URL 地址.(重点) method:定义处理方法的 http method 类型,如 GET.POST 等.(重点) pa ...

  7. <mvc:annotation-driven />注解详解

    <mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案.<mvc:annotation-dri ...

  8. spring集成spring mvc 和hibernate详解

    1.配置IOC容器 <!-- 配置IOC容器 --> <context-param> <param-name>contextConfigLocation</p ...

  9. Spring mvc请求处理流程详解(一)之视图解析

      本文链接:https://blog.csdn.net/lchpersonal521/article/details/53112728 前言 Spring mvc框架相信很多人都很熟悉了,关于这方面 ...

随机推荐

  1. Python爬虫入门教程 10-100 图虫网多线程爬取

    图虫网-写在前面 经历了一顿噼里啪啦的操作之后,终于我把博客写到了第10篇,后面,慢慢的会涉及到更多的爬虫模块,有人问scrapy 啥时候开始用,这个我预计要在30篇以后了吧,后面的套路依旧慢节奏的, ...

  2. Intent简介-Android开发

    一.Intent介绍: Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述 ...

  3. .netcore2.0+pgsql 脚手架

    mystaging介绍 这是一个 .netcore+pgsql 的脚手架,可以一键生成实体对象和业务层接口,让开发人员无需关注底层变动,专注编写业务代码,它可以让你使用 .netcore2.0的新特性 ...

  4. shell初识

    今天写blog才发现以前还有没写起的,我的天,我是睡着了么... 1,什么是shell? shell是unix/Linux系统的一个用充当内核与用户之间的接口的软件,它读取用户的输入命令,发送给内核让 ...

  5. .NET Core GC 的设计

    此文章转载自:http://www.cnblogs.com/zkweb/p/6288457.html 作者: Maoni Stephens ( @maoni0) - 2015 提示: 推荐看 The ...

  6. Django 系列博客(十四)

    Django 系列博客(十四) 前言 本篇博客介绍在 html 中使用 ajax 与后台进行数据交互. 什么是 ajax ajax(Asynchronous Javascript And XML)翻译 ...

  7. 在win10系统开启linux子系统

    1. 2.重启计算机 3.在winstore下载和安装 ubuntu 4.查看当前win10子系统的linux版本 lsb_release -a 5.设置root账号密码, 在终端输入命令 sudo ...

  8. X级联动

    前端数据 @{ ViewBag.Title = "Index"; } <script src="~/Scripts/jquery-1.10.2.js"&g ...

  9. [Go] golang无缓冲通道实现工作池控制并发

    展示如何使用无缓冲的通道创建一个goroutine池,控制并发频率1.无缓冲通道保证了两个goroutine之间的数据交换2.当所有的goroutine都忙的时候,能够及时通过通道告知调用者3.无缓冲 ...

  10. 使用nssm部署windows服务启动应用

    swoole和workerman他们都可以实现即时通信的功能,这里我简单的就workman作为windows服务器启动为例说哈吧.直接进入正题: 下载这个聊天室项目 workerman聊天室 http ...