关于@RequestMapping注解的详解

关于@RequestMapping注解

在处理请求的方法之前添加@RequestMapping注解,可以配置请求路径与处理请求的方法之间的映射关系!也就是访问某个路径时,就会调用注解后方的方法!

其实,还可以将这个注解添加在控制器类的声明之前!例如:

@Controller
@RequestMapping("user")
public class UserController {
  
}

一旦在类的声明之前添加了该注解,当前类中配置的所有请求路径中,都需要添加该注解配置的值,例如原本的路径是http://localhost:8080/springmvc02/login.do,就要通过http://localhost:8080/springmvc02/user/login.do才可以访问!

强烈推荐在每一个控制器类的声明之前都使用@RequestMapping注解配置路径中的层级。

在类的声明之前添加了注解后,类之前的注解值,会和方法之前的注解值,组合起来,形成完整的路径配置值,在组合时,会忽略这2个配置值的两端多余的/符号!SpringMVC框架会自行添加必要的/,也就是说,在类和方法之前的配置值是:

user			login.do
user			/login.do
/user			login.do
/user			/login.do
user/			login.do
user/			/login.do
/user/		login.do
/user/		/login.do

以上8种配置方式是完全等效的!推荐使用第1种做法,或第4种做法,切忌不要随意使用多种不同的方式,避免出现语义不明!

@RequestMapping注解的源代码中,大致有:

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
  
  /**
	 * 为当前映射关系分配一个名称,没有实际作用;
	 * 以下代码中的name()表示注解的参数名称;
	 * 以下代码中的String表示注解的参数的值的类型;
	 * 以下代码中的default ""表示注解的参数的默认值;
	 * 在使用时的语法可以是:@RequestMapping(name="")
	 */
	String name() default "";
  
  /**
   * 该属性的作用是配置请求路径
   * value是注解的默认属性,例如配置为@RequestMapping("")与@RequestMapping(value="")是等效的;
   * 注意,如果同一个注解中配置多个属性,则每个属性都必须显式的声明属性名称,包含默认属性;
   * 以下代码中的String[]表示注解的参数的值的类型是字符串数组
   * 注意,如果该属性的值只有1个时,不需要显式的将值写为数组类型,直接写数组元素即可
   * 例如配置为@RequestMapping("login.do")与@RequestMapping({"login.do"})是等效的;
   * 所以,如果要配置的路径是login.do时,以下4种配置方式都是等效的:
   * @RequestMapping("login.do")
   * @RequestMapping(value="login.do")
   * @RequestMapping({"login.do"})
   * @RequestMapping(value={"login.do"})
   * 以下代码中的@AliasFor("path")表示以下属性与path属性是等效的
   */
  @AliasFor("path")
	String[] value() default {};
  
  /**
   * 以下属性从SpringMVC框架4.2开始加入,更早期的版本不识别以下属性
   */
  @AliasFor("value")
	String[] path() default {};
  
  /**
   * 限制请求方式,例如配置为@RequestMapping(path="handle_login.do", method=RequestMethod.POST)
   * 则表示handle_login.do路径的请求只能通过POST方式来访问
   * 如果请求方式不匹配,就会出现405错误
   */
  RequestMethod[] method() default {};
  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值