1、作用
Spring MVC使用@RequestMapping注解为控制器指定处理的URL请求。
在控制器的类、方法上都可以标注:
- 类:提供初步的请求映射信息。相对于WEB应用的根目录。
 - 方法:提供进一步的细分映射信息。相对于类定义处的URL。
 
DispatcherServlet截获请求后,就通过控制器上@RequestMapping提供的映射信息确定请求所对应的处理方法。
  package com.xianhuii;
  import org.springframework.stereotype.Controller;
  import org.springframework.web.bind.annotation.RequestMapping;
  @Controller
  @RequestMapping("/springmvc")
  public class RequestMappingTest01 {
      private static final String SUCCESS = "success";
      /**
       *  1、可以修饰类、方法
       *      1.1、类:提供初步的请求映射信息。相对于WEB应用的根目录
       *      1.2、方法:提供进一步的细分映射信息。相对于类定义处的URL。
           *  2、此时的URL为:/springmvc/testRequestMapping
       * @return
       */
      @RequestMapping("/testRequestMapping")
      public String testRequestMapping() {
          System.out.println("testRequestMapping");
          return SUCCESS;
      }
  }2、源码
package org.springframework.web.bind.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
    String name() default "";
    @AliasFor("path")
    String[] value() default {};
    @AliasFor("value")
    String[] path() default {};
    RequestMethod[] method() default {};
    String[] params() default {};
    String[] headers() default {};
    String[] consumes() default {};
    String[] produces() default {};
}3、method
package com.xianhuii;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("/springmvc")
public class RequestMappingTest01 {
    private static final String SUCCESS = "success";
    /**
     *  使用method属性来指定请求方式
     * @return
     */
    @RequestMapping(value = "/testMethod", method = RequestMethod.POST)
    public String testMethod() {
        System.out.println("testMethod");
        return SUCCESS;
    }
}4、params、heads
params:请求参数。
heads:请求头。
param1:表示请求必须包含名为param1的请求参数 !param1:表示请求不能包含名为param1的请求参数 param1 != value1:表示请求包含名为param1的请求参数,但其值不能为value1 {"param1=value1","param2"}:请求参数必须包含名为param1和param2的两个请求参数,且param1参数的值必须为value1
  package com.xianhuii;
  import org.springframework.stereotype.Controller;
  import org.springframework.web.bind.annotation.RequestMapping;
  import org.springframework.web.bind.annotation.RequestMethod;
  @Controller
  @RequestMapping("/springmvc")
  public class RequestMappingTest01 {
      private static final String SUCCESS = "success";
      /**
       * 可以使用params、headers来更加精确的映射请求。
       * params、headers支持简单的表达式。
       * @return
       */
      @RequestMapping(path = "/testParamsAndHeaders", params = {"username=xianhuii","age=18"})
      public String testParamsAndHeaders() {
          System.out.println("testParamsAndHeaders");
          return SUCCESS;
      }
  }5、Ant路径
Ant风格资源地址支持3种匹配符:
- ?:匹配文件名中的一个字符。
 - *:匹配文件名中的任意字符。
 - **:匹配多层路径。
/user/*/createUser:匹配:/user/aaa/createUser、/user/bbb/createUser等URL /url/**/createUser:匹配:/user/createUser、/user/aaa/createUser、/user/aaa/bbb/createUser等URL /user/createUser??:匹配/user/createUseraa、/user/createUserbb等URL
 
  package com.xianhuii;
  import org.springframework.stereotype.Controller;
  import org.springframework.web.bind.annotation.RequestMapping;
  import org.springframework.web.bind.annotation.RequestMethod;
  @Controller
  @RequestMapping("/springmvc")
  public class RequestMappingTest01 {
      private static final String SUCCESS = "success";
      @RequestMapping("/testAnt/*/abc")
      public String testAntPath() {
          System.out.println("testAntPath");
          return SUCCESS;
      }
  }
京公网安备 11010502036488号