Springmvc之RequestMapping

  • 标记客户的请求与哪一个类和方法对应

  • 使用 @RequestMapping
    同时对类和方法进行注解,相当于最终将这两处的注解路径拼接起来,比如类上使用 @RequestMapping("/user")
    ,在方法上使用 @RequestMapping("/login.do")
    ,那么拼接时访问的路径为 http://localhost:8080/ProjectName/user/login.do

属性

  • value
    : 默认的属性,表示映射的地址,如果只有这一个属性,那么默认可以不写value,比如 @RequestMapping("/login.do")
    @RequestMapping(value="/login.do")
    是一样的效果

  • method
    :指定是请求的方式,我们知道请求的方式有 post
    , get
    , put
    , delete
    。一般常用的是post,get,一旦我们在其中定义这个method属性,那么如果请求的方式不是这个method指定的属性值,那么就不会访问到这个方法。

    • 其实只要不指定这个 method
      属性,无论是post还是get方式的都会执行这个方法,只有当其设置了 method
      属性才会做限定

    • 比如我们使用了 @RequestMapping(value="login.do",method=RequestMethod.GET)
      ,但是我们使用表单提交的是 <form action="<%=request.getContextPath%>/project/user/login.do" method="post"></form>
      ,那么这个表单的请求就不会对应上面的注解的方法,因为表单的提交方式是 post
      ,但是RequestMapping定义的是 method
      get
      方式,会响应 405错误

  • params
    : params是用来指定请求中包含的参数,其中的值是一个 字符串数组
    的形式,并且这个还支持简答的表达式

    1. param
      : 表示请求参数中必须包含 param
      这个参数至于为其赋予的值可以随便,但是必须包含这个字段
    2. param!=value
      : 表示请求参数中必须包含param这个参数,但是为其赋予的值不能等于value这个值,其他的什么值都是可以的
    3. !param
      :表示请求参数中一定不能包含这个param字段,如果包含这个字段,那么将不能映射到这个地址
    4. {“param1”,“param2”}
      : 指定请求参数中必须包含着两个请求参数,至于为其赋什么值随便
/*
	 * 请求的参数中必须不能包含name属性,age必须不能等于12,必须包含sex,address必须等于xuzhou
	 */
@RequestMapping(value="/testParams",params={"!name","age!=12","sex","address=xuzhou"})
	public String testParams(){
		System.out.println("testParams");
		return SUCCESS;
	}

  • headers

    : headers
    params
    同样是支持简单的表达式,同样是一个字符串数组,这里一样的是适用于上面的表达式
/*
 * 请求的参数中必须不能包含name属性,age必须不能等于12,必须包含sex,address必须等于xuzhou
 * 请求头中的Accept-Language不能等于zh-CN,zh;q=0.8
 */
@RequestMapping(value="/testParams",params={"!name","age!=12","sex","address=xuzhou"},headers={"Accept-Language!=zh-CN,zh;q=0.8"})
public String testParams(){
	System.out.println("testParams");
	return SUCCESS;
}

RequestMapping支持Ant风格的通配符

  • 在学习struts2中的时候也是支持通配符调用的,比如 _
    等。现在springmvc中也是支持通配符风格的,但是只支持Ant风格的,如下:

    • : 表示一个任意的字符 springmvc/testAnt? 可以使用
      springmvc/testAnta`这个地址来访问,其中最后一个a可以替换成任意的字符
    • *
      : 表示支持多个任意的字符 /spingmvc/testAnt/*
      可以使用 springmvc/testAnt/aaaaa
      这个地址来访问,其中最后一层的路径可以使用任意的字符串替换
    • **
      : 匹配多层路径 /springmvc/testAnt/**
      可以使用 /springmvc/testAnt/user/test
      这个来访问,当然也可以是多层的路径
/*
	 * 这里的* 表示支持任意多个字符,因此这里可以使用:springmvc/testAnt/user这个地址来访问,其中最后一层use可以写成任意的字符串即可
	 *
	 */
	@RequestMapping(value="/testAnt/*",method=RequestMethod.GET)
	public String testAnt(){
		System.out.println("testAnt");
		return SUCCESS;
	}

原文 

https://chenjiabing666.github.io/2018/04/26/Springmvc之RequestMapping/

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Springmvc之RequestMapping

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址