在SpringMVC总结一:快速入门的基础上简单介绍一下请求映射的方式:
1,标准映射规则
1、 @RequestMapping可以设置在类上,也可以设置在方法上
2、 请求的映射规则是:类上的RequestMapping + 方法上的RequestMapping
3、 如果没有写 / ,SpringMVC会自动补全
4、 类上的RequestMapping可以省略,这时直接用方法的RequestMapping访问
5、 路径不可重复
//加上Controller注解 @Controller @RequestMapping("/test")//添加映射路径,可用来设置url public class HelloController { //映射注解 @RequestMapping("/helloSpringMVC") public ModelAndView helloSpringMVC() { ModelAndView mv = new ModelAndView(); mv.setViewName("hello");//设置视图名字 mv.addObject("msg", "hello springmvc 注解版 ===" + new Date().toLocaleString()); return mv; } }
2,Ant风格映射
1、? 匹配一个字符,如/hello? 可以匹配/hello1 /hello2,但是不能匹配/hello或者/hello12
2、* 匹配0个或多个字符, 如/hello/* 可以匹配/hello/demo或者/hello/demo2
3、**匹配0个或多个路径,如/hello/** 可以匹配/hello路径下的所有子路径,比如/hello/dd或者/hello/dd/cc/aa
4、最长匹配优先:
现在有4中映射路径:1,/hello/demo 2,/hello/**/abc 3,/hello/** 4,/**
如果请求为/hello/demo 那么优先匹配1,但是请求/hello/ddd则会匹配3,请求/hello/222/abc则匹配2,请求/ddd匹配4
//加上Controller注解 @Controller @RequestMapping("/test")//添加映射路径,可用来设置url public class HelloController { //ant风格映射 @RequestMapping("/**/testAntMapping") public ModelAndView antMapping() { ModelAndView mv = new ModelAndView(); mv.setViewName("hello");//设置视图名字 mv.addObject("msg", "antMapping test ===" + new Date().toLocaleString()); return mv; } }
3,占位符映射
例如商品的url路径一般都是.../product/xxxxx.html,这个xxxxx可以设置成占位符
@RequestMapping(value="/product/{productid}") :占位符为productid,访问的路径可以是/product/123456或者/product/222等
通过@PathVariable 可以提取 URI 模板模式中的{xxx}中的xxx变量。
//加上Controller注解 @Controller @RequestMapping("/test")//添加映射路径,可用来设置url public class HelloController { //占位符映射 @RequestMapping("/pathvariable/{id}") public ModelAndView pathVariableMapping(@PathVariable("id") int id1) { ModelAndView mv = new ModelAndView(); mv.setViewName("hello");//设置视图名字 mv.addObject("msg", "pathvariable id=" + id1); return mv; } }