spring mvc 是传统的以controller为中心的mvc,外部只能通过controller访问,有些情况下两个页面获取的数据相同,只是显示不同,比如区别只是显示同一对象的不同字段,这时也必须提供2个controller,两个controller的区别只是转到不同的页面,并且页面需要的数据已经通过标签方式获取,这样controller中只剩下跳转语句了。
spring mvc提供了一种简易的处理方式 :PathVariable,如下示例
@RequestMapping("/category/{path}")
public String category(@PathVariable String path。。。。
return "tpl/gp2013/default/" + path + "/index";
/category/a
/category/b这两个请求会分别跳转到 a 和b 下面的index中
路径变量的匹配是最后的,具体路径的匹配优先,如果存在下面的映射,那么该映射优先
@RequestMapping("/category/a")
public String category(@PathVariable String path。。。。
return "tpl/gp2013/default/a22/index";
限制:{path}只能是一级的,即path中不能有/,这样就不能定义一个万能的只是用来跳转的controller
jsf使用了不同的方式,他是以试图为中心的,直接访问页面地址即可,不用写任何controller。