SpringMVC使用@RequestMapping注解为控制器指定可以处理哪些URL请求,DispatcherServlet截获请求后,就通过控制器上的@RequestMapping提供的映射信息确定请求所对应的方法。@RequestMapping可以在类定义处和方法定义处标注。
@RequestMapping修饰方法
示例代码:
package com.gisxx.handlers; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloWorld { @RequestMapping("/helloworld") public String hello(){ System.out.println("hello,GISXXCOM!!"); return "success"; } }
该控制器接受的请求路径为”/helloworld”
@RequestMapping修饰类
示例代码:
package com.gisxx.handlers; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/test")public class HelloWorld { @RequestMapping("/helloworld") public String hello(){ System.out.println("hello,GISXXCOM!!"); return "success"; } }
该控制器接受的请求路径为“/test/helloworld”
总结:
类定义处 :提供初步的请求映射信息。相对于web应用的根目录。
方法定义处 :提供进一步的细分映射信息。相对于类定义处的url,若类定义处未标注@RequestMapping,则相对web应用根目录。
@RequestMapping除了可以使用请求URL映射请求外,还可以使用请求方法、请求参数以及请求头映射请求。
@RequestMapping的value、method、params、headers分表代表 请求URL 、 请求方式 、 请求参数 、 请求头 的映射条件,他们之间是“与”的关系,联合使用多个条件让请求映射更加精细化。
RequestMethod.POST:POST请求映射
method=RequestMethod.GET:GET请求映射
package com.gisxx.handlers; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class HelloWorld { @RequestMapping(value="/helloworld",method=RequestMethod.POST) public String hello(){ System.out.println("hello,GISXXCOM!!"); return "success"; } }
该控制器指定了请求方式为POST
param1:必须包含参数param1
!param2:必须不包含参数param2
!param3=value1:必须包含参数param3但值不能为value1
{“param4=value2”,“param5”}:必须包含param4、param5参数,其中param4的值必须为value2
示例代码:
package com.gisxx.handlers; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class HelloWorld { @RequestMapping(value="/helloworld",params={"age=1","name=xx"}) public String hello(){ System.out.println("hello,GISXXCOM!!"); return "success"; } }
该控制器指定了请求参数必须包含:age=1和name=xx。
使用headers属性指定请求头的使用方式和params基本相似