
本文共 2674 字,大约阅读时间需要 8 分钟。
RequestMapping中常用的属性
1、url中使用通配符
在RequestMapping中我们可以使用*号表示通配符从而匹配一系列的请求:
@RequestMapping("/test*.do")
表示请求的url中只要是以test开头就可以被当前方法处理。
@RequestMapping("/*test.do")
表示请求的url中只要是以test结尾就可以被当前方法处理。
@RequestMapping("macay/*/test.do")
表示在test.do的前面,只能有两级路径,第一级必须是macay,而第二级随意,例如:macay/1024/test.do。这种称为路径级数的精确匹配。
@RequestMapping("macay/**/test.do")
表示在test.do的资源名称前面,必须以monkey路径开头,而其它级的路径包含几级,各级又叫什么名称,均随意,例如:macay/1/0/2/4/test.do。 这种称为路径级数的可变匹配。
2、请求方法的限定
默认情况下,使用 @RequestMapping 注解定义好的方法,可以被 GET 请求访问到,也可以被 POST 请求访问到,但是 DELETE 请求以及 PUT 请求不可以访问到。
在@RequestMapping中有一个method属性,我们可以改属性设置接收请求的提交方式:
@RequestMapping(value = "/hello.do", method = RequestMethod.POST) public ModelAndView test(HttpServletRequest request, HttpServletResponse response) throws Exception { //装载模型数据和逻辑视图 ModelAndView modelAndView = new ModelAndView(); //添加模型数据 modelAndView.addObject("name","Hello World!"); //添加逻辑视图 modelAndView.setViewName("show"); return modelAndView; }
RequestMethod是一个枚举类型,里面包含了大部分的提交方式。
上面的注解表示,只有当/test.do的请求的方式是post的时候才会执行当前方法,对于其他请求方式不进行处理。如果强行访问会报如下错误:
public class TestController03 { @RequestMapping(value="/requestGet.do",method = RequestMethod.GET) public ModelAndView reqGet(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mv = new ModelAndView(); mv.addObject("method", "get请求"); mv.setViewName("get"); return mv; } @RequestMapping(value="/requestPost.do",method = RequestMethod.POST) public ModelAndView reqPost(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mv = new ModelAndView(); mv.addObject("hello", "post请求"); mv.setViewName("post"); return mv; }}
当然,限定的方法也可以有多个:
public class HelloController { @RequestMapping(value = "/hello",method = { RequestMethod.GET,RequestMethod.POST,RequestMethod.PUT,RequestMethod.DELETE}) public ModelAndView hello() { return new ModelAndView("hello"); }}
此时,这个接口就可以被 GET、POST、PUT、以及 DELETE 访问到了。但是,由于 JSP 支支持 GET、POST 以及 HEAD ,所以这个测试,不能使用 JSP 做页面模板。可以讲视图换成其他的,或者返回 JSON,这里就不影响了。
3、请求中携带的参数
在@RequestMapping中还有一个属性是params,通过这个属性我们可以指定请求中必须携带的参数。
@RequestMapping(value="/test.do" , params={ "name" , "age"})
要求请求中必须携带请求参数 name 与 age
@RequestMapping(value="/test.do" , params={ "!name" , "age"})
要求请求中必须携带请求参数 age,但必须不能携带参数 name
@RequestMapping(value="/test.do" , params={ "name=jack" , "age=23"})
要求请求中必须携带请求参数 name,且其值必须为jack;必须携带参数 age,其值必须为 23
@RequestMapping(value="/test.do" , params="name!=jack")
要求请求中必须携带请求参数name,且其值必须不能为jack
发表评论
最新留言
关于作者
