在SSH項目中使用org.tuckey的urlrewritefilter-4.0.4包,部分代碼以下:html
1.mvn依賴:java
<dependency> <groupId>org.tuckey</groupId> <artifactId>urlrewritefilter</artifactId> <version>4.0.4</version> </dependency>
2.web.xml配置:web
<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配置spring
<!--指定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錯誤,不知道問題出在什麼地方?還請各位幫我看下,謝謝了。
緩存