springmvc<mvc:view-controllerpath= />标签的作用
此标记是用于定义在调用时立即转发到视图的ParameterizableViewController 的快捷方式。在静态情况下, 如果在视图生成响应之前没有要执行的Java 控制器逻辑, 请使用它。即从一个JSP页面直接跳转到另一个JSP页面。
比如说。对于WEB-INF目录下面的JSP页面,我们知道是不能直接使用URL访问到。需要通过转发的方式,而我们一般都是在控制器中做转发映射,对于一些我们不需要其他操作的JSP页面,我们可以使用<mvc:view-controller path=""/>来配置,这样就可以不用再控制器中再去做转发映射
没有使用<mvc:view-controller path= />标签
在WEB-IN下有一个index.jsp页面。
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
配置一个控制器
@Controller
public class HelloAction {
public HelloAction(){
System.out.println("HelloAction:" + this.hashCode());
}
@RequestMapping({"/hello","bye"})
public String hello(Model model){
System.out.println("HelloAction:hello()" + this.hashCode());
model.addAttribute("message", "this is the annotation springmvc demo");
return "index";
}
}
访问:http://localhost:8888/demo01/hello就可以显示index.jsp页面的内容了
使用<mvc:view-controller path= />标签
在springmvc配置文件中配置
<mvc:view-controllerpath="/index"/>
path是JSP页面相对WEB-INF的路径,名称为视图解析器解析之前的视图逻辑名
下面使用http://localhost:8888/demo01/index就可以显示index.jsp页面的内容了
此时分为两种情况:
1. 如果在springmvc配置文件中没有配置
<mvc:annotation-driven></mvc:annotation-driven>
则通过http://localhost:8888/demo01/hello不能访问index.jsp。即配置这个标签之后通过控制器来映射的url无法访问到页面
2. 如果在springmvc配置文件中配置了
<mvc:annotation-driven></mvc:annotation-driven>,那么两种方式都可以访问
<mvc:view-controller path= />标签对拦截器的影响
如我们配置如下的拦截器
<!--配置拦截器-->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/index"/>
<!--这样配置,将拦截所有springmvc的url-->
<bean class="interceptor.MyInterceptor1">
</bean>
</mvc:interceptor>
</mvc:interceptors>
当我们访问http://localhost:8888/demo01/index时不经过拦截器;
而访问http://localhost:8888/demo01/hello时要经过拦截器。
参考:
springmvc的拦截器,怎么设置不拦截的urlSpringMVC 标签