使用urlrewritefilter發現部分請求url報404

在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錯誤,不知道問題出在什麼地方?還請各位幫我看下,謝謝了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章