中文JAVA技術(shù)平等自由協(xié)作創(chuàng)造

          Java專題文章博客和開源

          常用鏈接

          統(tǒng)計(jì)

          最新評論

          使用UrlRewriteFilter對url進(jìn)行更替

           一般來說,使用struts之后url的訪問實(shí)際上訪問的是action的地址,為了不讓該地址暴露給別人,可以采用UrlRewriteFilter來對url進(jìn)行重寫。
          首先,在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里面加上,要不然會(huì)出錯(cuò)的!這個(gè)花了我半天才搞定。還有一點(diǎn):UrlRewriteFilter要放在struts Filter之前。web.xml里面過濾器需要講究順序,一般是這樣子的順序:字符編碼過濾器,hibernate open session in view 過濾器,Urlrewrite過濾器,struts過濾器。
          <dispatcher>REQUEST</dispatcher>
          <dispatcher>FORWARD</dispatcher>
          然后在WEB-INF里面新建urlrewrite.xml文件,該文件為UrlRewriteFilter的配置文件,通過在里面定義rule規(guī)則對URL進(jìn)行更替。

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

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


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


          網(wǎng)站導(dǎo)航:
           
          PK10開獎(jiǎng) PK10開獎(jiǎng)
          主站蜘蛛池模板: 永年县| 阜新市| 温州市| 平凉市| 开平市| 通河县| 正宁县| 永济市| 奉贤区| 磐安县| 鱼台县| 文安县| 丰县| 壶关县| 佳木斯市| 娄底市| 陕西省| 盐亭县| 鹤壁市| 富阳市| 翁牛特旗| 伊春市| 河西区| 拜城县| 江北区| 莱芜市| 榆中县| 都昌县| 三都| 台山市| 中西区| 湘阴县| 博湖县| 库伦旗| 黄石市| 麟游县| 延安市| 宽甸| 晋州市| 彩票| 临猗县|