struts2 urlrewrite 404 错误
转自:http://hi.baidu.com/jxcfree/blog/item/8bf0def319304acf7931aab3.html
下载了urlrewritefilter-3.2.0.zip,安装。。。
加入到工程后测试,发现转向到action的时候总是报404的错误,
修改为跳转到静态页面,也是找不到。
分析原因是struts2的拦截器在作怪,貌似在rewrite之前拦截了。
由于xml已经先配置了struts2的拦截器,所以加rewrite的时候,就放在了struts2的下面,
更换位置,把rewrite拦截器的位置放到strtus2的上面,
运行,发现转向到静态页面没问题了,但是转向到action还是报404,
尝试把to标签添加type=redirect,运行,可以跳转,但是由于是重定向,地址栏的地址又变成struts2的样子。
但是不加redirect还是报404,
分析,可能是struts2转向机制的问题,
查阅资料,说是要在配struts2拦截器的时候需要加:
<dispatcher>REQUEST </dispatcher>
<dispatcher>FORWARD </dispatcher>
<dispatcher>INCLUDE </dispatcher>
这三个节点。
但是个人感觉只要可以分发FORWARD就应该可以。
所以修改代码如下:
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
运行,正常,还有待大量测试。
总结:
1、配置web.xml的时候,rewrite一定要在strtus2的上面。
2、strtus2的filter-mapping一定要添加:<dispatcher>FORWARD</dispatcher>
3.很白痴的提醒一下,转发的时候不用重新传递参数