天天看點

JAVA中使用UrlRewrite時遇到404怎麼辦?

今天使用UrlRewrite來測試一下僞靜态頁面,還是挺有意思的,其中遇到一點小問題,同大家分享一下!

動态頁面:動态頁面是以ASP、PHP、JSP、Perl、CGI等程式設計語言制作的,并不獨立存在于伺服器上的網頁檔案,隻有當使用者請求時伺服器才傳回一個完整的網頁;

靜态頁面:是實際存在的,無需經過伺服器的編譯,直接加載到客戶浏覽器上顯示出來。需要占一定的伺服器空間。

僞靜态頁面:(這個度娘裡面居然沒有詞條)僞靜态頁面,不是真正的靜态頁面,它本身其實是動态頁面,但表現出來卻是靜态頁面的通路位址,如:www.csdn.net/post/2_3.html 或者 www.csdn.net/post/23

這裡使用了UrlRewrite,點 下載下傳jar包 , 點下載下傳配置檔案 ,用之前需要簡單配置一下。

首先,在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>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>      

然後在WEB-INF下的urlRewrite配置檔案裡,加上自己的規則。

    <rule>

        <from>/content/([0-9]+)_([0-9]+).html</from>

        <to>/content_index.action?channelId=$1&amp;contentId=$2</to>

    </rule>

意思 是通路http://test.jacky.com/content/2_3.html 被跳轉到 http://test.jacky.com/content_index.action?channelId=2&contentId=3

在你的Action中正常處理這兩個參數就可以了

啟動後,通路http://test.jacky.com/content/2_3.html tomcat總是出現404錯誤。

然後,找一些資料,原來需要在org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter過濾器中需要加點東西:

  1. <filter-mapping>  
  2.     <filter-name>struts2</filter-name>  
  3.         <url-pattern>/struts/*</url-pattern>  
  4.         <dispatcher>REQUEST</dispatcher>      
  5.         <dispatcher>FORWARD</dispatcher>      
  6.         <dispatcher>INCLUDE</dispatcher>   
  7. </filter-mapping>