今天做了一个留言板功能,用到了自动跳转的功能,页面里面写的代码如下:
<meta http-equiv="refresh" content="0;URL=emp!list.do"/>
但是学习jsp的时候讲到了一个动作(jsp:forward),代码如下:
<jsp:forward page="emp!list.do" />
但是今天写留言板的时候用到的struts2写的,使用meta跳转会很顺利,但是使用jsp:forward动作去跳转会发现浏览器报404错误!后来才知道web.xml配置的struts2过滤器是客户端访问服务器端某个资源之前进行过滤,但是用户请求xx.jsp(写了自动跳转的页面)页面,jsp页面在服务器端直接执行了jsp:forward的动作,将得到的文本信息返回给用户,jsp页面执行是在服务端执行,所以struts2过滤器无法拦截jsp:forward这个动作,所以提示找不到action这个请求。
而当我们在web.xml中的filter-mapping中添加<dispatcher>FORWARD</dispatcher>的属性的时候,struts2的过滤器就会过滤jsp:forward这个动作了,但是添加上这个,我们会发现我们写的正常的请求又开始报404错误。在web.xml中添加<dispatcher>REQUEST</dispatcher>就不会有问题了。