使用URLRewrite 實現URL偽靜態化

openkk 13年前發布 | 4K 次閱讀

1.首先在http://tuckey.org/urlrewrite/#download下載urlrewirtefilter

2.解壓所下載的文件,把urlrewrite-2.6.0.jar復制到項目的WebRoot/WEB-INF/lib/目錄下

3.把urlrewrite.xml復制到項目的WebRoot/WEB-INF/目錄下

4.在web.xml文件中加入filter

  1. <filter>  
  2. <filter-name>UrlRewriteFilter</filter-name>  
  3.    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>  
  4.    <init-param>  
  5.     <param-name>logLevel</param-name>  
  6.     <param-value>WARN</param-value>  
  7.    </init-param>  
  8. </filter>  
  9. <filter-mapping>  
  10.    <filter-name>UrlRewriteFilter</filter-name>  
  11.    <url-pattern>/*</url-pattern>  
  12. </filter-mapping>  

 

5.配置urlrewrite.xml
1.普通url靜態化 例如:
要把http://localhost/prjtest/user/list.jsp轉換成http://localhost/prjtest/user/list.html這種是最簡單的,當一個servlet跳轉到list.jsp頁面列出user列表時,在urlrewrite.xml中這樣配置:

  1. <rule>  
  2. <from>^/user/list.html</from>  
  3.    <to type="redirect">/user/list.jsp</to>  
  4. </rule>  


當請求/user/list.html這個頁面時,實際上相當于請求/user/list.jsp頁面,在servlet的跳轉要這樣寫:response.sendRedirect("./user/list.html");

2要把http://localhost/prjtest/user/view.jsp?cid=1&cname=admin轉換成http://localhost/prjtest/user/view/1_admin.html在urlrewrite.xml中這樣配置:

  1. <rule>  
  2. <from>^/user/view/([0-9]+)_([a-z]+).html$</from>  
  3. <to type="redirect">/user/view.jsp?cid=$1cname=$2</to>  
  4. </rule>  

6特別說明
為什么地址欄不變?
原因就在于瀏覽器顯示的是最后被給定的URL。當一個URL被提交后,在某一個組件返回一個相應給瀏覽器之前,你的應用可能轉發請求多次。所有這些都發生在服務器端,瀏覽器并不知道發生了什么事。當一個Http相應被放回時,它并沒有包含地址信息,所以瀏覽器僅僅顯示用來作為初始請求的地址。

要想讓地址欄也變成靜態化的URL,很簡單,將<to type="redirect">改成<to type="forward">即可

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!