之前案例中我们就已经使用过@RequestMapping注解了,但还有一些细节我还没讲到,所以在此将详细讲讲@RequestMapping注解的使用。
@RequestMapping
通过@RequestMapping注解可以定义不同的处理器映射规则。主要定义在方法之上,Controller类也可以使用。
1)URL路径映射
@RequestMapping("/xxx")
或者
@RequestMapping(value="/xxx")
value的值是数组,所以可以将多个url映射到同一个方法上。例如:
@RequestMapping(value={"/xx","/dd"})
2)Controller类请求限定
在class上添加@RequestMapping(url)指定通用请求前缀, 限制此类下的所有方法请求url必须以请求前缀开头,通过此方法对url进行分类管理。
例如:@RequestMapping放在类名上边,设置请求前缀。
@Controller
@RequestMapping("/hello")
public class HelloController {
...
}
以上设置之后,所有/appName/hello下的路径请求全部分配到此COntroller中处理。
例如:
@Controller
@RequestMapping("/hello")
public class HelloController {
@RequestMapping("/demo01.do")
public ModelAndView update(){
//返回视图
return new ModelAndView("jsp/hello");
}
}
当访问到 /appName/hello/demo01.do 时会返回jsp/hello视图
3)限定请求方法
可以使用该注解限定发送请求的方法
限定为GET方法:@RequestMapping(method = RequestMethod.GET)
修改以上案例:
@Controller
@RequestMapping("/hello")
public class HelloController {
@RequestMapping(value="/demo01.do",method={RequestMethod.GET})
public ModelAndView update(){
//返回视图
return new ModelAndView("jsp/hello");
}
}
当使用post方式进行表单提交访问/appName/hello/demo01.do时会报错:
限定为post方法:@RequestMapping(method = RequestMethod.POST)
修改案例为:
@Controller
@RequestMapping("/hello")
public class HelloController {
@RequestMapping(value="/demo01.do",method={RequestMethod.POST})
public ModelAndView update(){
//返回视图
return new ModelAndView("jsp/hello");
}
}
当使用get方式访问时会报错:
注意,不要忘记请求中文乱码问题,大家须谨慎对待。