Struts2与URL Rewrite整合注意的地方
jar:http://tuckey.org/urlrewrite/dist/urlrewritefilter-2.6.zip
1.在重新定向的jsp界面中不要使用<s:include>标签,会发生空指针异常,你可以使用<jsp:include>去解决
2.web.xml中UrlRewrite过滤器要在struts2过滤器前面,在Struts2过滤器映射要这样写
<!-- FilterDispatcher用来初始化Struts 2并且处理所有的HTTP请求 --> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> <dispatcher>REQUEST </dispatcher> <dispatcher>FORWARD </dispatcher> <dispatcher>INCLUDE </dispatcher> </filter-mapping> <filter> <filter-name>UrlRewriteFilter</filter-name> <filter-class> org.tuckey.web.filters.urlrewrite.UrlRewriteFilter </filter-class> <init-param> <param-name>logLevel</param-name> <param-value>WARN</param-value> </init-param> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3.就是重定向之后的的路径问题 ,这个问题烦人,还有页面上的图片显示,单独打开时可以显示,但是定向之后就显示不出来了,解决这个问题没有同一的解决途径,根据具体情况自己去琢磨吧!但也不能胡思乱想主要从以下几个方面考虑:
(1.)文件的实际位置
(2.)重定向之后的位置,
(3.) Struts2中result转向的路径
(4.)还有可能跟struts2中配置文件中的package属性namescape有关,我在项目中就是用到了
urlrewrite.xml如下:
<rule> <note>login</note> <from>/login/([\a-zA-Z0-9_\u4e00-\u9fa5]+)/([\a-zA-Z0-9_\u4e00-\u9fa5]+)/</from> <to> /user/login.action?username=$1&password=$2 </to> </rule>
([\a-zA-Z0-9_\u4e00-\u9fa5]+) 所对应的动态参数$N(N 表示第N个正则表达式)
访问http://localhost:8085/Struts2Test/login/123/123/ 转到 http://localhost:8085/Struts2Test/user/login.action?username=123&password=123
struts.xml如下:
<package name="userWeb" extends="json-default" namespace="/userWeb/black"> <action name="userWebIndex" class="userWebIndexAction" method="userWebIndex"> <result name="success">index.jsp</result> </action> </package>
4.urlrewrite这是把丑陋的请求地址美化了一下,看起来想静态界面的请求地址,更利于搜索引擎的搜索到,根本不会提高打开界面的速度。
FROM: DK