Maven 中配置 Urlrewrite 基本配置


1. 在maven項目的pom.xml文件里加入:

            <!-- URL Rewrite -->
    <dependency>
      <groupId>org.tuckey</groupId>
      <artifactId>urlrewritefilter</artifactId>
      <version>3.1.0</version>
    </dependency>


3.在WEB項目的web.xml里加上urlrewrite的過濾器
     <filter>
            <filter-name>UrlRewriteFilter</filter-name>
            <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
            <init-param>

      <!-- 設置自動更新urlrewrite.xml信息 -->
                  <param-name>confReloadCheckInterval</param-name>
                  <param-value>60</param-value>
            </init-param>
      </filter>
      <filter-mapping>
            <filter-name>UrlRewriteFilter</filter-name>
            <url-pattern>/*</url-pattern>
            <dispatcher>REQUEST</dispatcher>
            <dispatcher>FORWARD</dispatcher>
            <dispatcher>INCLUDE</dispatcher>
      </filter-mapping>


2. 在Web項目下WEB-INF目錄里新建一個名為urlrewrite.xml的文件,標簽格式如下:
 

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN" "\\urlrewrite3.2.dtd">
  
<urlrewrite>
  
  <rule>
    <note>重寫index.jsp成index.html</note>
    <note>example:/index.html</note>
    <from>/index.html</from>
    <to type="forward">/index.jsp</to>
  </rule>
  
  <rule>
    <note>將view根目錄下所有jsp資源重寫成/xxx.action</note>
    <note>example:/index.action</note>
    <from>/([A-Za-z0-9]+).action</from>
    <to type="forward">/view/$1.jsp</to>
  </rule>
  
  <rule>
    <note>forward(轉發模式)傳參</note>
    <note>example:/user/param/fancy/8080.do</note>
    <from>/user/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+).do</from>
    <to type="forward">/view/parameter/$1.jsp?username=$2&amp;password=$3</to>
  </rule>
  
  <rule>
    <note>redirect(重定向模式)傳參,to中寫絕對地址</note>
    <note>example:/admin/param/fancy/8080.do</note>
    <from>/admin/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+).do</from>
    <to type="redirect">/urlrewrite-maven-example/view/parameter/$1.jsp?username=$2&amp;password=$3</to>
  </rule>
  
</urlrewrite>

 


urlrewrite.xml 這個配置文件一定只能放在 WEB-INF 下,放別的地方,無論你在web.xml中怎么配置都是不行的,至少現在是不行的。

所謂重寫,就一定會有規則的匹配,這里用到了正則表達式,方便起見,我只用了[A-Za-z0-9]+,簡單的解釋一下:

A-Z:匹配 A 到 Z 中的任意一個字符,說一句廢話,同理可得,

a-z:匹配 a 到 z 中的任意一個字符

0-9:匹配 0 到 9 的任意一個字符

+:至少出現一次,即,一次或一次以上

合起來 [A-Za-z0-9]+ 的意思就是:匹配一個任意的英文字母和數字組合的字符串

<rule>:自定義匹配規則

<note>:注釋,解釋標簽

<from>:定義具體的匹配規則

<to>:匹配成功后的目標地址

<to type="">:type的值有兩個,一個是 forward (轉發,參數不丟失),一個是 redirect (重定向,地址欄顯示的地址就是目標真實地址)

$1:匹配中的第一個正則表達式的字符串的值,$2,$3,$4....也是如此

&amp; :是 & 的實體名,代表的就是 &,這個可以在 w3school 中找到:http://www.w3school.com.cn/tags/html_ref_entities.html

第一個rule:訪問 /index.html,實際上是訪問了 /index.jsp

第二個rule:訪問 /xx.action , 實際上是訪問了 view 目錄下的 xx.jsp

第三個rule:訪問 /user/xx/yy/zz.do , 實際上是訪問了 view 目錄下的 parameter 目錄下的 xx.jsp?username=yy&password=zz

第四個rule:跟第三個其實是一樣的,但是由於是重定向模式,所以地址欄就會顯示真的是地址

在 pom.xml 中右鍵,Run as --> Maven install

下面是生成的 target 資源:

將 war 文件拷貝到你的 服務器中,我用的是tomcat,然后啟動tomcat:

如果你是第一次使用 urlrewrite 可能會拋一個異常:

這個異常信息是說系統找不到 tomcat bin 下的 urlrewrite3.2.dtd 文件,解決辦法很簡單:

方法一:將 urlrewrite3.2.dtd 放到 urlrewrite.xml 所在的目錄下,即 WEB-INFO 的目錄下

方法二:將 urlrewrite3.2.dtd 放到 tomcat 的 bin 目錄下,這個方法一勞永逸,所以我選的是這個

urlrewrite3.2.dtd 這個文件可以在文章的最下面下載,源碼包里我沒有放這個文件,沒問題之后,

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM