使用UrlRewriteFilter對url進行更替

來源:互聯網
上載者:User

標籤:lis   應該   key   分行符號   dtd   ued   efi   attr   doc   

一般來說,使用struts之後url的訪問實際上訪問的是action的地址,為了不讓該地址暴露給別人,可以採用UrlRewriteFilter來對url進行重寫。

首先,在web.xml裡面配置:

 

      <filter>        <filter-name>UrlRewriteFilter</filter-name>        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>        <init-param>            <param-name>confReloadCheckInterval</param-name>            <param-value>60</param-value>        </init-param>        <init-param>            <param-name>confPath</param-name>            <param-value>/WEB-INF/urlrewrite.xml</param-value>        </init-param>     </filter>          <filter-mapping>         <filter-name>UrlRewriteFilter</filter-name>         <dispatcher>REQUEST</dispatcher>         <dispatcher>FORWARD</dispatcher>         <url-pattern>/*</url-pattern>     </filter-mapping>

 

注意,要在struts的mapping裡面加上,要不然會出錯的!這個花了我半天才搞定。還有一點:UrlRewriteFilter要放在struts Filter之前。web.xml裡面過濾器需要講究順序,一般是這樣子的順序:字元編碼過濾器,hibernate open session in view 過濾器,Urlrewrite過濾器,struts過濾器。

         <dispatcher>REQUEST</dispatcher>         <dispatcher>FORWARD</dispatcher>   然後在WEB-INF裡面建立urlrewrite.xml檔案,該檔案為UrlRewriteFilter的設定檔,通過在裡面定義rule規則對URL進行更替。
   下面是urlrewrite.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"        "http://tuckey.org/res/dtds/urlrewrite3.2.dtd"><urlrewrite>    <rule>        <!-- 地址欄顯示的地址 -->        <from>/anything</from>        <!-- 真實的請求地址 -->        <to>/url/test.action</to>    </rule></urlrewrite>
 

以上只是簡單的實現,具體的替換需要用到Regex。

如下例:

<from>/content/([0-9]+)/list</from><to type="forward">/IssuedContentAction.do?dispatch=vContentListBySubid&amp;scope=vmcontent&amp;columninfoid=$1</to>

需要注意的地方是:用括弧括起來的Regex為變數,如to標籤裡面的$1表示的是上面from裡面的第一個括弧內容。url裡面的參數間隔符 ‘&’應該寫為‘&amp;’。

值得注意的是<outbound-rule>標籤,可以使用該標籤替換頁面裡面的url。

簡單的Regex:

. 匹配除分行符號以外的任一字元
      \w 匹配字母或數字或底線或漢字
      \s 匹配任意的空白符
      \d 匹配數字
      \b 匹配單詞的開始或結束
      ^ 匹配字串的開始
      $ 匹配字串的結束

使用UrlRewriteFilter對url進行更替

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.