最近在做项目的时候,想在index页面直接使用jsp的forward跳转到action,但是怎么也跳转不过去,报找不到资源的错误。按照网上的说法,我改了forward中page属性的值,使用了相对路径和绝对路径,都无法跳转,正迷茫的时候发现了一个遇到同样问题的文章点击打开链接
按照这哥们的做法,我也试了试,发现很好使!
下班后我想对这个问题深入理解一下,我以为这个我Struts2配置的问题,但是在查阅Struts配置时,没有提到相关内容,反而在servlet规范中发现了。
在servlet 2.4规范中加入了<dispatcher>标签,可以规定filter拦截哪种请求,<dispatcher>标签中可以写四种值:REQUEST,FORWARD,INCLUDE,ERROR,分别对应四种不同的请求方式,默认是REQUEST。
如果要让Struts2拦截jsp的forward命令,需要在配置Struts2的filter时,指定<dispatcher>标签。如下
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern >/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>