<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-126  評論-247  文章-5  trackbacks-0


     博客搬家的時候順便把文章搬過來,如果看得不是很清楚的,可以前往原博客地址:
     -->URL:http://www.cnblogs.com/fancyzero/archive/2012/06/10/urlrewrite.html 

    環境:

    Maven 3.0.4
    Urlrewrite 2.5.2
    Myeclipse 8.6.1

    借此機會順便提一下 Maven Project 的創建,會了的朋友或還不想了解 Maven 的朋友,可以略過創建過程。

    創建一個 Maven Project:New --> Other --> Maven Project

    在彈出的對話框里,如果你想修改你項目的存放路徑你可以改一下,其他的默認,我的所有項目都是存放在默認的工作區下,所以直接點NEXT

    接下來找到并選擇webapp,其他的默認,NEXT

     

    填寫你的 groupId、artifactId、version 和 package 信息,然后 Finish

    (Finish 之后myeclipse在創建maven的時候可能會彈出錯誤框提示,沒事,不用管它,直接按兩次回車或手動關閉提示框)

     

    下面我簡單解釋一下 groupId、artifactId、version 和 package:

    groupId:group 翻譯成中文就是組、集團的意識,groupId就是這樣一個組或集團的ID標識,就拿 Apache 來說好了,Apache 大家都不陌生吧,

                 Apache 官網上有非常多的項目,每個項目里面肯定能找得到 org.apache.xxxx,而 org.apache 就是這里說的 groupId

    artifactId:還是拿 Apache 來說,Apache 官網上有非常多的項目,而每個項目的名字就是這里的 artifactId,換句話說,artifactId 就是你的項目名

    version:這個就沒有什么好解釋的了吧,是項目版本的意思

    package:這個也沒什么好說的,就是 groupId.artifactId,創建的時候會自動幫你補全,如果沒有自動幫你補全就自己手動敲上去

    好,下面來看創建出來的urlrewrite-maven-example的目錄結構:

    src/main/resources:用來存放資源文件(默認會幫你創建這個資源文件夾)

    src/main/java:用來存放 java 源碼文件(需要自己手動創建)

    src/main/test:用來存放測試代碼(需要自己手動創建,也有人習慣命名為:src/test)

    target:是用來存放 Maven 編譯好的字節碼的地方

    Maven 的創建就講到這,接著講 urlrewrite,另外為了調試方便我引進了 Ant,即上面的 build.xml,這里我不講它,沒有影響。

    pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
      http://maven.apache.org/maven-v4_0_0.xsd">
      
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.fancy</groupId>
      <artifactId>urlrewrite-maven-example</artifactId>
      <packaging>war</packaging>
      <version>1.0</version>
      <name>urlrewrite-maven-example Maven Webapp</name>
      <url>http://maven.apache.org</url>
      <dependencies>
        <!-- urlrewrite jar -->
        <dependency>
          <groupId>org.tuckey</groupId>
          <artifactId>urlrewrite</artifactId>
          <version>2.5.2</version>
        </dependency>
      </dependencies>
      <build>
        <finalName>urlrewrite-maven-example</finalName>
      </build>
      
    </project>


    web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     
      <!-- 開啟URLREWRITE監聽 -->
      <filter>
        <filter-name>UrlRewriteFilter</filter-name>
        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
        <init-param>
          <param-name>logLevel</param-name>
          <param-value>WARN</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>UrlRewriteFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
      </filter-mapping>
      
      <!-- 404錯誤 -->
      <error-page>
        <error-code>404</error-code>
        <location>/404.jsp</location>
      </error-page>
      
      <!-- 500錯誤 -->
      <error-page>
        <error-code>500</error-code>
        <location>/500.jsp</location>
      </error-page>
      
      <welcome-file-list>
        <welcome-file>welcome.jsp</welcome-file>
      </welcome-file-list>
      
    </web-app>


    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:跟第三個其實是一樣的,但是由于是重定向模式,所以地址欄就會顯示真的是地址

    下面是 測試的 JSP :

    /welcome.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <head>
      <title>Urlrewrite Simple Demo</title>
     </head>
     <body>
      <h3>/welcome.jsp</h3>
      <HR/>
      <p>
       <a href="index.html" target="_blank">/index.html</a>
      </p>
      <p>
       <a href="index.action" target="_blank">/index.action</a>
      </p>
      <p>
       <a href="user/param/fancy/8080.do" target="_blank">/user/param/fancy/8080.do</a>(forward[轉發模式])
      </p>
      <p>
       <a href="admin/param/fancy/8080.do" target="_blank">/user/param/fancy/8080.do</a>(redirect[重定向模式])
      </p>
     </body>
    </html>

     

    /index.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
     <head>
      <title>Urlrewrite Simple Demo</title>
     </head>
     <body>
      <h3>/index.jsp</h3>
      <h1>Hello Urlrewrite</h1>
     </body>
    </html>


    /view/index.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
     <head>
      <title>Urlrewrite Simple Demo</title>
     </head>
     <body>
      <h3>/view/index.jsp</h3>
      <h1>Hello Urlrewrite</h1>
     </body>
    </html>

     

    /view/parameter/param.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
     <head>
      <title>Urlrewrite Simple Demo</title>
     </head>
     <body>
      <h3>/view/parameter/param.jsp</h3>
      <h1>${param}</h1>
     </body>
    </html>


    Run it :

    在 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 這個文件可以在文章的最下面下載,源碼包里我沒有放這個文件,沒問題之后,

    訪問:http://localhost:8080/urlrewrite-maven-example/ 留意地址欄的地址,你會發現,真實的地址沒有被顯示出來,你看到的是偽地址:

     

     

    /index.html

     

    /index.action

     

    /user/param/fancy/8080.do

     

    /user/param/fancy/8080.do , 這次是重定向了,注意留意地址欄地址,這回不再是偽地址了,而是真實的地址

     

    源碼:http://files.cnblogs.com/fancyzero/urlrewrite-maven-example.zip

    DTD: http://files.cnblogs.com/fancyzero/urlrewrite3.2.dtd.zip



      
    posted on 2012-06-10 07:24 fancydeepin 閱讀(2773) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 国产亚洲精品无码专区| 亚洲五月午夜免费在线视频| 久久久久久a亚洲欧洲AV| 国产精品免费观看| 亚洲AV日韩AV永久无码绿巨人| 精品一区二区三区免费观看| 国产专区一va亚洲v天堂| 久久久久国色AV免费观看| 国外亚洲成AV人片在线观看| 99精品免费视频| 免费观看a级毛片| 国产亚洲蜜芽精品久久| 亚洲av无码天堂一区二区三区| 七次郎成人免费线路视频 | 美女被cao网站免费看在线看| 老司机在线免费视频| 亚洲av午夜精品无码专区| 人禽杂交18禁网站免费| 亚洲av无码有乱码在线观看| 亚洲Aⅴ无码一区二区二三区软件| 免费国产黄网站在线看| 好看的亚洲黄色经典| 59pao成国产成视频永久免费 | 亚洲AV无码第一区二区三区| 88av免费观看入口在线| 亚洲欧洲AV无码专区| 久久www免费人成看片| 亚洲人成电影网站色www| 亚洲AV中文无码乱人伦在线视色| 爽爽爽爽爽爽爽成人免费观看| 亚洲黄色在线观看网站| 国产精品99精品久久免费| 精品久久亚洲中文无码| 亚洲国产av无码精品| 久久狠狠躁免费观看| 亚洲女女女同性video| 久久激情亚洲精品无码?V| 日本三级2019在线观看免费| 黄色一级毛片免费| 亚洲毛片一级带毛片基地| 永久免费观看的毛片的网站|