中文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 好不容易 閱讀(1181) 評論(0)  編輯  收藏


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


          網站導航:
           
          PK10開獎 PK10開獎
          主站蜘蛛池模板: 鄂托克旗| 囊谦县| 玛纳斯县| 同江市| 定西市| 简阳市| 甘洛县| 沙田区| 商水县| 澄江县| 佛山市| 天峻县| 松原市| 忻城县| 鄂伦春自治旗| 德清县| 安图县| 集安市| 望江县| 买车| 临洮县| 全州县| 怀集县| 海淀区| 白水县| 荣成市| 仪陇县| 梅河口市| 景洪市| 兴化市| 岳普湖县| 什邡市| 保定市| 兰考县| 渭源县| 九龙城区| 顺平县| 安国市| 邳州市| 临澧县| 玛多县|