1.基本使用
- 通过注解方式实现路径到处理器方法的映射。
- 可以用在类或方法上。
- 用在方法上表示将该方法变为一个处理器,且和指定路径做映射。
- 用在类上则配置的路径会作为这个类中所有处理器的路径的父路径使用。
@RequestMapping("/test01.action")
public ModelAndView test01() {
ModelAndView mav = new ModelAndView();
mav.addObject("attr1", "hello anno~");
mav.addObject("attr2", "hello mvc~");
mav.setViewName("first");
return mav;
}
2.注解属性
2.1String [] value() default {};
- 指定要将当前处理器绑定到哪个访问路径上。
- 可以配置多个路径。
- 路径中也可以使用*号作为通配符匹配部分路径。
@RequestMapping(value = {"/test02.action"})等价于@RequestMapping("/test02.action")
@RequestMapping({"/test02.action","/test002.action","/test002*.action"})
public ModelAndView test02() {
ModelAndView mav = new ModelAndView();
mav.addObject("attr1", "hello anno~");
mav.addObject("attr2", "hello mvc~");
mav.setViewName("first");
return mav;
}
//
/**
* String[] value() default {};属性
* 用来讲路径绑定到当前控制器方法上
* 此属性是一个数组,可以将多个路径绑定到该方法上
* 配置的路径中可以使用* 通配符来通配路径
* 如果不返回,那么默认会用/my01/test02.action去掉后缀去找即去找/my01/test02.jsp
*/
//Model 只能存模型数据 ,下面2种写法等价
//@RequestMapping(value = {"/test02.action"})
@RequestMapping("/test02.action")
public String test02(Model model){
model.addAttribute("k3","v3");
model.addAttribute("k4","v4");
//视图直接返回字符串,默认会把返回的字符串当做视图名称使用
return "my01test02";
}
2.2RequestMethod[] method() default {}
- 指定当前处理器处理哪种提交方式提交的请求。
- 不指定则接收任意请求方式的请求
@RequestMapping(value="/test03.action",method= RequestMethod.POST)
public ModelAndView test03() {
ModelAndView mav = new ModelAndView();
mav.addObject("attr1", "hello anno~");
mav.addObject("attr2", "hello mvc~");
mav.setViewName("first");
return mav;
}
2.3String[] params() default {}
- 通过params属性指定只处理请求参数符合指定要求的请求
- 用来限定当前请求中必须包含指定名称的请求参数才会被当前处理器处理
格式1:只指定名称,要求必须具有该名称的请求参数
格式2:以"名称=值"或"名称!=值"的方式指定必须具有某个请求参数,且值必须等于或不等于给定值
格式3:以"!名称"的方式指定必须不包含指定名称的请求参数
@RequestMapping(value="/test04.action",params= {"name","gender=male","!age","addr!=bj"})
public ModelAndView test04() {
ModelAndView mav = new ModelAndView();
mav.addObject("attr1", "hello anno~");
mav.addObject("attr2", "hello mvc~");
mav.setViewName("first");
return mav;
}
2.4String[] headers() default {}
- 用来限定当前请求中必须包含指定名称的请求头才会被当前处理器处理
格式1:只指定名称,要求必须具有该名称的请求头
格式2:以"名称=值"或"名称!=值"的方式指定必须具有某个请求头,且值必须等于或不等于给定值
格式3:以"!名称"的方式指定必须不包含指定名称的请求头
@RequestMapping(value="/test05.action",headers= {"host=localhost"})
public ModelAndView test05() {
ModelAndView mav = new ModelAndView();
mav.addObject("attr1", "hello anno~");
mav.addObject("attr2", "hello mvc~");
mav.setViewName("first");
return mav;
}