中文JAVA技術平等自由協作創造

          Java專題文章博客和開源

          常用鏈接

          統計

          最新評論

          使用UrlRewriteFilter對url進行更替

           一般來說,使用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>
          以上只是簡單的實現,具體的替換需要用到正則表達式。
          如下例:
          <from>/content/([0-9]+)/list</from>
          <to type="forward">/IssuedContentAction.do?dispatch=vContentListBySubid&amp;scope=vmcontent&amp;columninfoid=$1</to>
          需要注意的地方是:用括號括起來的正則表達式為變量,如to標簽里面的$1表示的是上面from里面的第一個括號內容。url里面的參數間隔符 '&'應該寫為'&amp;'.
          值得注意的是<outbound-rule>標簽,可以使用該標簽替換頁面里面的url托福答案 www.yztrans.com
          簡單的正則表達式:
          . 匹配除換行符以外的任意字符
          \w 匹配字母或數字或下劃線或漢字
          \s 匹配任意的空白符
          \d 匹配數字
          \b 匹配單詞的開始或結束
          ^ 匹配字符串的開始
          $ 匹配字符串的結束

          posted on 2014-03-17 21:06 好不容易 閱讀(1186) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          PK10開獎 PK10開獎
          主站蜘蛛池模板: 西安市| 丰县| 林州市| 怀柔区| 昌江| 新邵县| 志丹县| 绵竹市| 博客| 容城县| 阿克陶县| 大安市| 工布江达县| 铜川市| 长垣县| 嘉兴市| 乌恰县| 普定县| 中江县| 荔波县| 汝南县| 巴中市| 天镇县| 大城县| 平塘县| 视频| 凉城县| 建瓯市| 乌拉特中旗| 海兴县| 定结县| 九江县| 杭锦后旗| 洛阳市| 镇赉县| 驻马店市| 鸡东县| 顺平县| 霸州市| 平舆县| 思南县|