使用RequestMapping注解映射请求—SpringMVC

SpringMVC使用@RequestMapping注解为控制器指定可以处理哪些URL请求,DispatcherServlet截获请求后,就通过控制器上的@RequestMapping提供的映射信息确定请求所对应的方法。@RequestMapping可以在类定义处和方法定义处标注。

@RequestMapping标注位置

@RequestMapping修饰方法
示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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修饰类
示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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指定请求信息

@RequestMapping除了可以使用请求URL映射请求外,还可以使用请求方法、请求参数以及请求头映射请求。

@RequestMapping的value、method、params、headers分表代表请求URL请求方式请求参数请求头的映射条件,他们之间是“与”的关系,联合使用多个条件让请求映射更加精细化。

使用method属性来指定请求方式

  • RequestMethod.POST:POST请求映射
  • method=RequestMethod.GET:GET请求映射
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    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

使用params来指定请求参数

  • param1:必须包含参数param1
  • !param2:必须不包含参数param2
  • !param3=value1:必须包含参数param3但值不能为value1
  • {“param4=value2”,“param5”}:必须包含param4、param5参数,其中param4的值必须为value2

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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基本相似