【Java Web】使用URLRewrite實現網站偽靜態


大部分搜索引擎都會優先考慮收錄靜態的HTML頁面,而不是動態的*.jsp、*.php頁面。但實際上絕大部分網站都是動態的,不可能全部是靜態的HTML頁面,因此互聯網上大部分網站都會考慮偽靜態——就是將*.jsp、*.php這種動態URL偽裝成靜態的HTML頁面。

預備知識,掌握Filter的使用。我就假設你們都知道Filter的使用方法了。

方法非常簡單:通過Filter攔截所有發向*.html請求,然后按某種規則將請求forward到實際的*.jsp頁面即可。下面要使用的URL Rewrite開源項目就是為這種思路提供了實現。

如何利用URL Rewrite實現網站偽靜態:

1、登錄http://code.google.com/p/urlrewritefilter/downloads/list站點下載Url Rewrite的最新版本。我下的是urlrewritefilter-4.0.3.jar

2、將下載得到的urlrewritefilter-4.0.3.jar放在你構建的項目WEB-INF下的lib文件夾中

3、在web.xml文件中配置啟用URL Rewrite Filter,在web.xml文件中增加如下配置片段(該片段放在所有的servlet標簽的以前)

  <!--配置Url Rewrite的Filter -->
    <filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    </filter>
    <!--配置Url Rewrite的Filter攔截所有請求-->
    <filter-mapping>
        <filter-name>UrlRewriteFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
    </filter-mapping>

  上面的配置片段指定使用URL Rewrite Filter 攔截所有的用戶請求。

4、在你項目的WEB-INF路徑下增加urlrewrite.xml文件,該文件定義了偽靜態映射規則,這份偽靜態規則是基於正則表達式的。

  文件內容如下:

  <?xml version="1.0" encoding="utf-8"?>
  
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
        "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">
  <urlrewrite>
      <rule>
          <from>/userinf-(\w*).html</from>
          <to type="redirect">%{context-path}/userinf.jsp?username=$1</to>
      </rule>
  </urlrewrite>

  上面的規則文件中只定義了一個簡單的規則:所有發向/user-(\w*).html的請求都將被redirect到userinf.jsp頁面,並將(\w*)正則表達式所匹配的內容作為username參數值。根據這個偽靜態規則,我們為這個應用提供一個userinf.jsp頁面(該頁面只是我們的一個測試頁面,用戶可以自己定義自己的頁面)。代碼如下:

<%@ page contentType="text/html; charset=UTF-8" language="java" errorPage="" %>
<%
String user = request.getParameter("username");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title><%=user%>的個人信息</title>
</head>
<body>
<%
    out.println("現在時間是: "+new java.util.Date() +"<br />");

    out.println("用戶名: "+user);
%>
</body>
</html>

一切准備就緒后,重啟tomcat,然后在瀏覽器地址欄輸入userinf-xxxx.html的請求地址,例如:我構建的項目名稱叫做webDemo那么我就可以輸入:http://localhost:8080/webDemo/userinf-test.html,就可以得到如下結果:

 


免責聲明!

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



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