一、@RequestMapping修饰
SpringMVC使用 @RequestMapping 注解为控制器指定可以处理哪些URL请求
1、 在控制器的类定义及方法定义处都可标注 @RequestMapping:
1)类定义处:提供初步的请求映射信息,相对于WEB应用的根目录
2)方法处:提供进一步的细分映射信息。相对于类定义处的URL信息,若类定义处未标注 @RequestMapping ,则方法处标注的URL相对于WEB应用的根目录。
- DispatcherServlet 截获请求后,就通过控制器上的 @RequestMapping 提供的映射信息确定请求所对应的处理方法。
package com.smart.handlers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author chenpeng
* @date 2018/6/9 18:24
*/
@Controller(value = "/springMVC")
public class SpringMVCTest {
private final String SUCCESS = "success";
/**
* 1、@RequestMapping 除了修饰方法还可以修饰类
* 2、
* 1)、类定义处:提供初步的请求映射信息,相当于 WEB 应用的根目录
* 2)、方法处:挺浓进一步的细分映射信息,
* 相对于类定义处的URL信息,若类定义处未标注 @RequestMapping ,则方法处标注的URL相对于WEB应用的根目录。
* @return
*/
@RequestMapping(value = "/testRequestMapping")
public String testRequestMapping(){
System.out.println("testRequestMapping");
return SUCCESS;
}
}
2、@RequestMapping请求方式
— @RequestMapping除了可以使用请求URL映射请求外,还可以使用请求方法、请求参数以及请求头映射请求
— @RequestMapping 的value、method、params 及 heads 分别表示请求URL、请求方法、请求参数及请求头的映射条件,他们之间的关系是 与 的关系,联合使用多个条件,可以让请求映射更加精确化。
— params和heads支持简单的表达式:
- param1:表示请求必须包含名为param1的请求参数
- !param1:表示请求不能包含名为param1的请求参数
- param1 != value1: 表示请求包含名为param1的请求参数,但是其值不能为value1
- {“param1 = value1”,“param2”}:请求必须包含名为param1和param2的两个请求参数,且param1的值必须为value1
package com.smart.handlers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
/**
* @author chenpeng
* @date 2018/6/9 18:24
*/
@Controller
@RequestMapping("/springmvc")
public class SpringMVCTest {
private final String SUCCESS = "success";
/**
* 1、@RequestMapping 除了修饰方法还可以修饰类
* 2、
* 1)、类定义处:提供初步的请求映射信息,相当于 WEB 应用的根目录
* 2)、方法处:挺浓进一步的细分映射信息,
* 相对于类定义处的URL信息,若类定义处未标注 @RequestMapping ,则方法处标注的URL相对于WEB应用的根目录。
* @return
*/
@RequestMapping("/testRequestMapping")
public String testRequestMapping(){
System.out.println("testRequestMapping");
return SUCCESS;
}
/**
* 常用:使用method属性来指定请求方式
* @return
*/
@RequestMapping(value = "/testMethod",method = RequestMethod.POST)
public String testMethod(){
System.out.println("testMethod");
return SUCCESS;
}
/**
* 了解:可以使用 params 和 headers 来更加精确的映射请求,params 和 headers支持简单的表达式
* @return
*/
@RequestMapping(value = "testParmsAndHeaders",
params = {"username","age!=10"},
headers = {"Accept-Language=zh-CN,zh;q=0.8"})
public String testParmsAndHeaders(){
System.out.println("testParmsAndHeaders");
return SUCCESS;
}
}
二、Ant风格资源地址
Ant风格资源地址支持3种匹配符:
- ?:匹配文件中的一个字符
- * :匹配文件中的任意字符
- ** :匹配多层路径
@RequestMapping还支持Ant风格的URL