在SSH项目中使用org.tuckey的urlrewritefilter-4.0.4包,部分代码如下:
1.mvn依赖:
<dependency> <groupId>org.tuckey</groupId> <artifactId>urlrewritefilter</artifactId> <version>4.0.4</version> </dependency>
2.web.xml配置:
<filter> <filter-name>UrlRewriteFilter</filter-name> <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>*.html</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>
3.struts.xml配置
<!--指定Struts2的 对象池创建工厂由spring负责创建 --> <constant name="struts.objectFactory" value="spring" /> <!--匹配*.s2的请求都由struts处理 --> <constant name="struts.action.extension" value="s2" /> <!--该属性设置Struts2是否支持动态方法调用,该属性的默认值为true。如果需要关闭动态方法调用,则可设置该为false --> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <!-- 开发模式下使用,这样可以打印出更详细的错误信息 --> <constant name="struts.devMode" value="false"/> <!-- struts配置文件改动后,是否重新加载 --> <constant name="struts.configuration.xml.reload" value="false"/> <!-- 设置在class被修改时是否热加载,,默认值为false(生产环境下使用),开发阶段最好打开(不会报500错误),发布时要设置为false --> <constant name="struts.convention.classes.reload" value="false" /> <!-- 浏览器是否缓存静态内容。当应用处于开发阶段时,希望每次请求都获得服务器的最新响应,则可设置该属性为false --> <constant name="struts.serve.static.browserCache" value="false" /> <!-- 是否每次HTTP请求到达时,系统都重新加载资源文件。默认值是false。在开发阶段设置为true会更有利于开发,但在产品发布阶段设置为false --> <constant name="struts.i18n.reload" value="false" /> <!--解决乱码 --> <constant name="struts.i18n.encoding" value="utf-8"></constant> <!--文件上传临时保存文件夹 --> <constant name="struts.multipart.saveDir" value="D:\Java\"></constant> <!--文件上传大小限制 1G左右--> <constant name="struts.multipart.maxSize" value="1048576000" /> <!-- Actin类名路径分割Convention通过如下规则确定URL的具体资源部分:去掉类名的Action部分。然后将将每个分部的首字母转为小写,用’_’分割 --> <constant name="struts.convention.action.name.separator" value="_" /> <package name="backPackage" namespace="/back" extends="struts-default"> <!-- 注册自定义拦截器 --> <interceptors> <interceptor name="backPrivilege" class="backPrivilegeInterceptor" /> <!-- 配制默许的拦截器到拦截器栈 --> <interceptor-stack name="backInterceptorStack"> <interceptor-ref name="backPrivilege" /> <interceptor-ref name="defaultStack" /> </interceptor-stack> </interceptors> <!-- 配置默认的拦截器--> <default-interceptor-ref name="backInterceptorStack" /> <!-- 定义全局Result --> <global-results> <result name="blogin">/WEB-INF/pages/back/user/login.jsp</result> <result name="noqx">/WEB-INF/pages/error/noqx.jsp</result> <result name="404">/WEB-INF/pages/error/404.jsp</result> <result name="500">/WEB-INF/pages/error/500.jsp</result> </global-results> <!-- 定义全局异常映射 --> <global-exception-mappings> <exception-mapping exception="java.lang.Exception" result="500" /> </global-exception-mappings> <!-- 后台列表页,默认ActionSupport类,返回"success" --> <action name="ui-*-*"> <result>/WEB-INF/pages/back/{1}/{2}.jsp</result> </action> </package>
4. urlrewrite.xml配置
<!--后台首页 --> <rule> <from>/bindex.html</from> <to type="redirect">/back/index.html</to> </rule> <rule> <from>/back.html</from> <to type="redirect">/back/index.html</to> </rule> <rule> <from>/bb/back.html</from> <to type="redirect">/back/index.html</to> </rule> <rule> <from>/back/index.html</from> <to>/back/bi!index_bl.s2</to> </rule>
那么现在问题来了,当我访问/bindex.html和/back.html都是没有问题的,但是当我直接访问/back/index.html和/bb/back.html的时候就会报404错误,不知道问题出在什么地方?还请各位帮我看下,谢谢了。