第一部分、概述

/**映射URL到控制器类或处理程序*/
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {

/**
* 指定映射名称
* 支持控制器和方法
* 同时支持控制器和方法时,使用"#"分隔
*/
String name() default "";

/**
* 路径映射
* 指定的地址可以是uri模板,别名为path,如:@RequestMapping("/foo"),@RequestMapping(path="/foo")
* 支持控制器和方法,当其用于控制器映射时,该控制器所有方法映射均继承本映射
*/
@AliasFor("path")
String[] value() default {};

/**
* 仅支持Servlet运行环境:路径映射URIs(如:"/myPath.do")
* 支持Ant风格的路径模式
* 在控制器的方法这一层级,支持相对路径(如:"edit.do")
* 在控制器层级,可包含占位符(如:/${connect})
* 当其用于控制器映射时,该控制器所有方法映射均继承本映射
*/
@AliasFor("value")
String[] path() default {};

/**
* HTTP请求方式(谓词类型):GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE.
* 支持控制器和方法,当其用于控制器映射时,该控制器所有方法映射均继承本映射
*/
RequestMethod[] method() default {};

/**
* 请求参数限定:限制客户端发送的请求参数为某些特定值或不为某些值。
* 使用方式:"myParam=myValue" 、"myParam!=myValue"
* 支持控制器和方法,当其用于控制器映射时,该控制器所有方法映射均继承本映射
*/
String[] params() default {};

/**
* 请求头部
* 使用方式:"My-Header=myValue" 、"My-Header!=myValue"
* 如:RequestMapping(value = "/something", headers = "content-type=text/*")
* 支持控制器和方法,当其用于控制器映射时,该控制器所有方法映射均继承本映射
*/
String[] headers() default {};

/**
* 请求媒体类型(消耗型媒体类型)(text/html、text/plain、application/json;charset=UTF-8、application/octet-stream等等)
* 如:consumes = "text/plain"、consumes = {"text/plain", "application/*"}
* 支持控制器和方法,当其用于控制器映射时,该控制器所有方法映射均重写本映射
*/
String[] consumes() default {};

/**
* 响应媒体类型(生产型媒体类型)(text/html、text/plain、application/json;charset=UTF-8、application/octet-stream等等)
* 如:consumes = "text/plain"、consumes = {"text/plain", "application/*"}
* 支持控制器和方法,当其用于控制器映射时,该控制器所有方法映射均重写本映射
*/
String[] produces() default {};

}

第二部分:路径相关

1、只注解方法

默认为根路径

访问路径:http://localhost:8080/auth/index.do

/**
* @功能 权限控制器
* @作者 Davee.Yuan
* @日期 2017-01-16
*/
@Controller
public class SsoController {   //@Autowired
  //private AuthService authService;   @RequestMapping(value = "/index.do", method = RequestMethod.GET)
  public ModelAndView index() {
    ModelAndView mv = new ModelAndView("login");
    return mv;
  }
}

  

2、同时注解控制器和方法

用根路径和方法路径叠加

访问路径:http://localhost:8080/auth/sso/index.do

/**
* @功能 权限控制器
* @作者 Davee.Yuan
* @日期 2017-01-16
*/
@Controller
@RequestMapping("/sso")
public class SsoController { //@Autowired
//private AuthService authService; @RequestMapping(value = "/index.do", method = RequestMethod.GET)
public ModelAndView index() {
ModelAndView mv = new ModelAndView("login");
return mv;
}
}

  

3、value为空

控制器上@RequestMapping的value为空 或者 没有@RequestMapping修饰,使用站点根路径
方法上@RequestMapping的value为空,使用控制器根路径
以上前提:web.xml上放行默认路径,<url-pattern>/</url-pattern>

访问路径:http://localhost:8080/auth/sso

/**
* @功能 权限控制器
* @作者 Davee.Yuan
* @日期 2017-01-16
*/
@Controller
public class SsoController { //@Autowired
//private AuthService authService; @RequestMapping
public ModelAndView index() {
ModelAndView mv = new ModelAndView("login");
return mv;
}
}

  

4、路径变量占位符
使用@PathVariable 注释方法参数的值绑定到一个URI模板变量

访问路径:http://localhost:8080/auth/sso/index/1

/**
* @功能 权限控制器
* @作者 Davee.Yuan
* @日期 2017-01-16
*/
@Controller
@RequestMapping("/sso")
public class SsoController { //@Autowired
//private AuthService authService; @RequestMapping("/index/{id}")
public ModelAndView index(@PathVariable int id) {
ModelAndView mv = new ModelAndView("login");
return mv;
}
}

  

4.1)路径模板可以使用正则表达式
  如:@RequestMapping(value="/index/{id:\\d{3}}/{name:[a-z]{3}}")
  对应访问路径:http://localhost:8080/auth/sso/index/123/ass

4.2)矩阵变量@MatrixVariable
  矩阵变量可以出现在任何路径段,每个矩阵变量用“;”分隔
  暂时未用到,用到的时候再说吧,个人不倾向于在地址中传递这么复杂的东西

4.3)Ant风格路径模式
  如/myPath/*.do,/myPath/*/auth/{uid}

第三部分:谓词类型
用于约束请求类型,包含:GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE,支持控制器和方法,当其用于控制器映射时,该控制器所有方法映射均继承本映射。一般标识方法。

/**
* @功能 权限控制器
* @作者 Davee.Yuan
* @日期 2017-01-16
*/
@Controller
@RequestMapping("/sso")
public class SsoController { //@Autowired
//private AuthService authService; @RequestMapping(value="/index.do",method= RequestMethod.POST,RequestMethod.GET})
public ModelAndView index(@PathVariable int id,@PathVariable String name) {
ModelAndView mv = new ModelAndView("login");
return mv;
}
}

  

第四部分:参数限定
映射请求的参数,限制客户端发送的请求参数为某些特定值或不为某些值。
访问路径:http://localhost:8080/auth/sso/index.do?id=1&name=bbb
http://localhost:8080/auth/sso/index.do?id=1&name=aaa

/**
* @功能 权限控制器
* @作者 Davee.Yuan
* @日期 2017-01-16
*/
@Controller
@RequestMapping("/sso")
public class SsoController { //@Autowired
//private AuthService authService; @RequestMapping(value="/index.do"
,method={RequestMethod.POST,RequestMethod.GET}
,params={"id=1","name!=aaa"})
public ModelAndView index() {
ModelAndView mv = new ModelAndView("login");
return mv;
}
}

  

第五部分:头部限定
映射请求的头部,限制客户端发送的请求头部信息必须包含某些值或不为某些值。
如:

/**
* @功能 权限控制器
* @作者 Davee.Yuan
* @日期 2017-01-16
*/
@Controller
@RequestMapping("/sso")
public class SsoController { //@Autowired
//private AuthService authService; @RequestMapping(value="/index.do"
,method={RequestMethod.POST,RequestMethod.GET}
,params={"id=1","name!=aaa"}
,headers="Host=localhost:8080"
)
public ModelAndView index() {
ModelAndView mv = new ModelAndView("login");
return mv;
}
}

  

第六部分:Content-Type限定
请求:@RequestMapping(value = "/action8",consumes="text/plain")
响应:@RequestMapping(value = "/action8",consumes="text/html")

如:

/**
* @功能 权限控制器
* @作者 Davee.Yuan
* @日期 2017-01-16
* @说明 http://localhost:8080/auth/index
*/
@Controller
@RequestMapping("/sso")
public class SsoController { //@Autowired
//private AuthService authService; @RequestMapping(value="/index.do"
,method={RequestMethod.POST,RequestMethod.GET}
,params={"id=1","name!=aaa"}
,headers="Host=localhost:8080"
,produces="text/html"
)
public ModelAndView index() {
ModelAndView mv = new ModelAndView("login");
return mv;
}
}

  

第七部分:其他
您准备用么?

Spring MVC之RequestMapping的更多相关文章

  1. Spring mvc中@RequestMapping 6个基本用法

    Spring mvc中@RequestMapping 6个基本用法 spring mvc中的@RequestMapping的用法.  1)最基本的,方法级别上应用,例如: Java代码 @Reques ...

  2. Spring MVC 解读——@RequestMapping (2)(转)

    转自:http://my.oschina.net/HeliosFly/blog/214438 Spring MVC 解读——@RequestMapping 上一篇文章中我们了解了Spring如何处理@ ...

  3. Spring MVC 解读——@RequestMapping (1)(转)

    转自:http://my.oschina.net/HeliosFly/blog/212329 Spring MVC 解读——@RequestMapping 为了降低文章篇幅,使得文章更目标化,简洁化, ...

  4. Spring mvc中@RequestMapping 6个基本用法小结

    Spring mvc中@RequestMapping 6个基本用法小结 小结下spring mvc中的@RequestMapping的用法. 1)最基本的,方法级别上应用,例如: @RequestMa ...

  5. 转:Spring mvc中@RequestMapping 6个基本用法小结

    Spring mvc中@RequestMapping 6个基本用法小结 发表于3年前(2013-02-17 19:58)   阅读(11698) | 评论(1) 13人收藏此文章, 我要收藏 赞3 4 ...

  6. Spring MVC中@RequestMapping注解使用技巧(转)

    @RequestMapping是Spring Web应用程序中最常被用到的注解之一.这个注解会将HTTP请求映射到MVC和REST控制器的处理方法上. 在这篇文章中,你将会看到@RequestMapp ...

  7. Spring mvc中@RequestMapping 6个基本用法小结(转载)

    小结下spring mvc中的@RequestMapping的用法. 1)最基本的,方法级别上应用,例如: @RequestMapping(value="/departments" ...

  8. Spring MVC之@RequestMapping 详解

    (转自:http://blog.csdn.net/walkerjong/article/details/7994326) 引言: 前段时间项目中用到了RESTful模式来开发程序,但是当用POST.P ...

  9. Spring MVC之@RequestMapping 详解(转)

    引言: 前段时间项目中用到了REST风格来开发程序,但是当用POST.PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没有加任何注解),查看了提交方式为application/j ...

  10. Spring mvc中@RequestMapping 6个基本用法整理

    继续整理,这个是前段时间用jsp开发的一个站点,说起来php程序员去做jsp程序确实有些小不适应,但是弄完后绝对对于这种强类型语言而比收获还是颇多的. 1,最基本的,方法级别上应用 @RequestM ...

随机推荐

  1. meta 常用标签总结

    声明:并非原创 meta元素工有3个可选属性(http-equiv.name.scheme)和一个必选属性(content),content定义与http-equiv或name属性相关的元信息 可选属 ...

  2. [LeetCode] Magical String 神奇字符串

    A magical string S consists of only '1' and '2' and obeys the following rules: The string S is magic ...

  3. css link import

    link和@import的区别   页面中使用CSS的方式主要有3种:行内添加定义style属性值,页面头部内嵌调用和外面链接调用,其中外面引用有两种:link和@import.外部引用CSS两种方式 ...

  4. SD卡的控制方法(指令集和控制时序)

    1.SD卡的命令格式: SD卡的指令由6字节(Byte)组成,如下: Byte1:0 1 x x x x x x(命令号,由指令标志定义,如CMD39为100111即16进制0x27,那么完整的CMD ...

  5. 利用XShell 上传和下载文件

    原文:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=28977986&id=4292781 借助XShell,使用li ...

  6. Java 六种异常处理的陋习(转)

    Java 六种异常处理的陋习 原文链接:  http://www.cnblogs.com/Android-and-android/archive/2013/05/02/3054469.html 你觉得 ...

  7. 用扩展方法实现DevExpress-GridControl级联效果

    首先,让我们先回顾下.Net中扩展方法的特征: 1.  必须在一个非嵌套.非泛型的静态类中: 2.  至少有一个参数(this 作前缀的参数): 3.  第一个参数必须附加this做前缀: 4.  第 ...

  8. android KeyEvent for dot "."

    android连接了4x4的物理按键,需要映射".". 在linux驱动层注册了按键KEY_DOT, 写android的app的时候却没有对应的宏KEYCODE_DOT.只有KEY ...

  9. C# 的sql server like 的参数

    //试了多种方式,这样写like的参数才正确 sb.Append(" and a.GOODSID like '%'+@GOODSID+'%'"); list.Add(new Sql ...

  10. kindeditor集成ckplayer(带右键编辑菜单)

    相信好多朋友为开源web编辑器没有集成视频播放器而烦恼,于是我就是试着修改了一下kindeditor,其实ueditor应该也是同样的,好了不多说了直接上图吧 kindeditor版本: 4.1.7  ...