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

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

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

    Terry.Li-彬

    虛其心,可解天下之問(wèn);專其心,可治天下之學(xué);靜其心,可悟天下之理;恒其心,可成天下之業(yè)。

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評(píng)論 :: 0 Trackbacks
    本文來(lái)自:http://springkingster.javaeye.com/blog/175114

    頁(yè)面靜態(tài)化(JSP動(dòng)態(tài)頁(yè)面轉(zhuǎn)靜態(tài)化)

    urlrewritefilter 下載: http://tuckey.org/urlrewrite/#download

    所用基于動(dòng)態(tài)的url http://www.nihaoblog.com/content.jsp?id=1&contentid=404按照各大搜索引擎的喜好,應(yīng)該美化成http://www.nihaoblog.com/content/1_404.html靜 態(tài)網(wǎng)頁(yè)的方式,盡管目前的google及幾大搜索引擎宣稱支持動(dòng)態(tài)頁(yè)網(wǎng)的抓取,但與傳統(tǒng)的html文件相比較抓取率仍不在一個(gè)數(shù)量級(jí)。Apche的 mod_rewrite模塊具有此功能,但是對(duì)于租用虛擬主機(jī)的用戶來(lái)說(shuō)就比較麻煩不太可能對(duì)所有運(yùn)營(yíng)商有更多的要求,需要條件依賴就不具通用性。

        目前有一個(gè)解決方法,通過(guò)UrlRewriteFilter可以完全實(shí)現(xiàn)動(dòng)態(tài)URL表態(tài)化,你可以將它直接應(yīng)用到你的web應(yīng)用中,不管你用的是jsp+javabean還是struts.
        
    下面是使用方法:
        1、下載http://tuckey.org/urlrewrite/#download目前版本是1.2,解壓縮后將文件考到相應(yīng)的web-inf/lib和web-inf下,。
         2、配置web.xml
    xml 代碼
    1. <filter>   
    2.        <filter-name>UrlRewriteFilter</filter-name>   
    3.        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>   
    4. </filter>   
    5. <filter-mapping>   
    6.        <filter-name>UrlRewriteFilter</filter-name>   
    7.        <url-pattern>/*</url-pattern>   
    8. </filter-mapping>  
    根據(jù)自己的需要,將相應(yīng)目錄下的url轉(zhuǎn)給UrlRewriteFilter來(lái)處理。
       3、配置urlwrite規(guī)則文件WEB-INF/urlrewrite.xml
    http://www.nihaoblog.com/content.jsp?id=1&contentid=404
    靜態(tài)化為:
    http://www.nihaoblog.com/content/1_404.html
    配置如下:
    1. <rule>   
    2.     <from>/content/([0-9]+)_([0-9]+).html</from>   
    3.     <to>/content.jsp?id=$1&amp;contentid=$2</to>   
    4. </rule>  
    xml 代碼
       
    注意:有多個(gè)參數(shù)時(shí),中的連接符號(hào)&應(yīng)該是&
    熟悉正則表達(dá)式的朋友可能一看就是明白rule的匹配原理了。更多的配置可以參照http://tuckey.org/urlrewrite/manual/

    每個(gè)網(wǎng)頁(yè)或請(qǐng)求都是一個(gè)url地址,一般,這個(gè)地址可能是.do,.page,.action之類的并加上'?'號(hào)、'&'號(hào)查詢串等構(gòu)成的一個(gè)長(zhǎng)長(zhǎng)的的url。很urgly。

    一般的url----------------------------------------------------------較好的url
    http://www.xxx.net/user/profile.do?id=20001 ====> http://www.xxx.net/user/20001
    http://www.xxx.net/forum/board.do?name=java ====> http://www.xxx.net/forum/java
    http://www.xxx.net/forum/thread.do?id=29923 ====> http://www.xxx.net/thread/29923

    后者明顯較為直觀和漂亮。

    使用url rewrite可以很好的改善這個(gè)狀況。網(wǎng)站url rewrite應(yīng)用是非常廣泛的,良好的url設(shè)計(jì)給用戶帶來(lái)的非常好的體驗(yàn),同時(shí)也能吸引搜索引擎的注意。

    一 種rewrite稱為一個(gè)規(guī)則,上面的例子就是3個(gè)規(guī)則。rewrite技術(shù)可以在代理服務(wù)器實(shí)現(xiàn),或者可以在tomcat之類的java web服務(wù)器實(shí)現(xiàn)。 Apache HTTP Server 2.x 和 mod_proxy提供了不錯(cuò)的Rewrite處理方法。so如果使用apache,則直接在apache中配置Rewrite即可。但是對(duì)于沒(méi)有使用代 理,或者不完全要在代理服務(wù)器配置Rewrite的web應(yīng)用,通過(guò)第三方Jar包也是可以實(shí)現(xiàn)很perfect的rewrite技術(shù)的。這是本帖的著重 點(diǎn)。

    這個(gè)第三方包的地址是:http://tuckey.org/urlrewrite/ (待會(huì)再去這個(gè)網(wǎng)站,現(xiàn)在先別去)

    這個(gè)包使用正則表達(dá)式仿照了apache rewrite的做法。而實(shí)現(xiàn)原理也是很明晰的:filter,forward,redirect機(jī)制組合:

    在 web.xml配置一個(gè)UrlRewriteFilter,攔截所有進(jìn)來(lái)的請(qǐng)求,對(duì)服務(wù)要求的請(qǐng)求進(jìn)行rewrite。比如,對(duì) http://www.xxx.net/user/([0-9]+)請(qǐng)求,forward到/profile.do?id=$1。這就是一條規(guī)則。在這個(gè) 第三方包中的規(guī)則文件urlrewrite.xml中可以這樣定義:

    代碼
    1. <rule>  
    2.     <from>^/user/([0-9]+)/?$from>  
    3.     <totype="forward">/profile.do?id=$1to>  
    4. <rule>  
    <script>render_code();</script>

    對(duì)我來(lái)說(shuō),一般我會(huì)配置一個(gè)通用的rule,使所有沒(méi)有包含"."的url forward到.do的action上來(lái)(本人使用strut做系統(tǒng)較多)

    代碼
    1. <rule>  
    2.     <note>  
    3.          - 這是一個(gè)通用請(qǐng)求url rewrite   
    4.          - 將請(qǐng)求forword url加上“.do”的處理器上。   
    5.          - 例:   
    6.          -    請(qǐng)求 http://{domain}/user/login     將被forward到 http://{domain}/user/login.do   
    7.          -    請(qǐng)求 http://{domain}/user/login/    將被forward到 http://{domain}/user/login.do   
    8.          -    請(qǐng)求 http://{domain}/user/logout/   將被forward到 http://{domain}/user/logout.do   
    9.     note>  
    10.     <from>^/([_a-zA-Z]+[_0-9a-zA-Z-/]*[_0-9a-zA-Z]+)/?$from>  
    11.     <totype="forward">/$1.doto>  
    12. <rule>  
    <script>render_code();</script>

    上面只是介紹個(gè)大概,并不是urlrewriter這個(gè)jar包的使用指南。如果你覺(jué)得這種rewrite做法不錯(cuò)的話,不如直接訪問(wèn)這個(gè)網(wǎng)站吧 http://tuckey.org/urlrewrite/

    第一步:從http://tuckey.org/urlrewrite/ 上下載urlrewrite-3.0.3.jar包,放到webapp classpath下

    第二步:在web.xml配置UrlRewriteFilter:

    代碼
    1. <filter>  
    2.     <filter-name>UrlRewriteFilterfilter-name>  
    3.     <filter-class>  
    4.          org.tuckey.web.filters.urlrewrite.UrlRewriteFilter   
    5.     filter-class>  
    6.     <init-param>  
    7.         <param-name>logLevelparam-name>  
    8.         <param-value>WARNparam-value>  
    9.     init-param>  
    10. filter>  
    11. <filter-mapping>  
    12.     <filter-name>UrlRewriteFilterfilter-name>  
    13.     <url-pattern>/*url-pattern>  
    14. filter-mapping>  

    <script>render_code();</script>

    第三步:在web-inf下新建urlrewrite.xml文件,簡(jiǎn)單填入以下內(nèi)容:

    代碼
    1. <!--sp-->xmlversion="1.0"encoding="utf-8"?>  
    2.      "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">  
    3.   
    4. <urlrewrite>  
    5.     <rule>  
    6.         <note>  
    7.              - 這是一個(gè)通用請(qǐng)求url rewrite   
    8.              - 將請(qǐng)求forword url加上“.do”的處理器上。   
    9.              - 例:   
    10.              -    請(qǐng)求 http://{domain}/user/login     將被forward到 http://{domain}/user/login.do   
    11.              -    請(qǐng)求 http://{domain}/user/login/    將被forward到 http://{domain}/user/login.do   
    12.              -    請(qǐng)求 http://{domain}/user/logout/   將被forward到 http://{domain}/user/logout.do   
    13.         note>  
    14.         <from>^/([_a-zA-Z]+[_0-9a-zA-Z-/]*[_0-9a-zA-Z]+)/?$from>  
    15.         <totype="forward">/$1.doto>  
    16.     rule>  
    17.   
    18. urlrewrite>  

    <script>render_code();</script>

    第四步:?jiǎn)?dòng)web應(yīng)用,將原來(lái)需要.do的請(qǐng)求改為去掉.do后請(qǐng)求,看看結(jié)果。

    第五步:更詳細(xì)的規(guī)則定義,請(qǐng)看http://tuckey.org/urlrewrite/manual/3.0/


    posted on 2009-01-23 14:54 禮物 閱讀(5653) 評(píng)論(7)  編輯  收藏

    評(píng)論

    # re: (轉(zhuǎn)載)頁(yè)面靜態(tài)化(JSP動(dòng)態(tài)頁(yè)面轉(zhuǎn)靜態(tài)化) 2009-02-01 11:00 bigo
    直接包裝URL訪問(wèn)的方式,頁(yè)面還是要?jiǎng)討B(tài)生成的吧?
    有沒(méi)有可能直接生成的就是html呢?  回復(fù)  更多評(píng)論
      

    # re: (轉(zhuǎn)載)頁(yè)面靜態(tài)化(JSP動(dòng)態(tài)頁(yè)面轉(zhuǎn)靜態(tài)化) 2009-02-10 21:37 禮物
    @bigo
    可以直接生成html,需要使用模板,但是模板策略適合實(shí)時(shí)交互不頻繁的網(wǎng)頁(yè),例如新聞網(wǎng)頁(yè)  回復(fù)  更多評(píng)論
      

    # re: (轉(zhuǎn)載)頁(yè)面靜態(tài)化(JSP動(dòng)態(tài)頁(yè)面轉(zhuǎn)靜態(tài)化) 2011-05-15 21:04 老胡
    haha 這個(gè)不是靜態(tài)化吧, 只是把url修飾了一下而已, 對(duì)性能什么的沒(méi)有提高.  回復(fù)  更多評(píng)論
      

    # re: (轉(zhuǎn)載)頁(yè)面靜態(tài)化(JSP動(dòng)態(tài)頁(yè)面轉(zhuǎn)靜態(tài)化)[未登錄](méi) 2012-06-11 17:40 Jerry
    這個(gè)貌似沒(méi)有靜態(tài)化,哈哈!  回復(fù)  更多評(píng)論
      

    # re: (轉(zhuǎn)載)頁(yè)面靜態(tài)化(JSP動(dòng)態(tài)頁(yè)面轉(zhuǎn)靜態(tài)化) 2012-09-14 15:32 路人
    偽地址,沒(méi)提升性能。提高了用戶的感知度!這個(gè)動(dòng)態(tài)頁(yè)面靜態(tài)化不科學(xué)。  回復(fù)  更多評(píng)論
      

    # re: (轉(zhuǎn)載)頁(yè)面靜態(tài)化(JSP動(dòng)態(tài)頁(yè)面轉(zhuǎn)靜態(tài)化) 2014-08-26 16:45 靜態(tài)化
    這個(gè)不是靜態(tài)化,就不要用靜態(tài)化的標(biāo)題嚇人!!!  回復(fù)  更多評(píng)論
      

    # re: (轉(zhuǎn)載)頁(yè)面靜態(tài)化(JSP動(dòng)態(tài)頁(yè)面轉(zhuǎn)靜態(tài)化) 2014-08-27 17:31 libin2722
    @靜態(tài)化
    偽靜態(tài)化,應(yīng)該使用模板生成HTML  回復(fù)  更多評(píng)論
      


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

    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 日韩电影免费在线观看网址| 成全在线观看免费观看大全| 国产无遮挡无码视频免费软件| 2015日韩永久免费视频播放| 免费永久看黄在线观看app| 亚洲国产国产综合一区首页| 亚洲AV无码男人的天堂| 久9久9精品免费观看| 国产乱色精品成人免费视频 | 亚洲天天做日日做天天看| 亚洲欧美日韩一区二区三区在线| 大地资源在线资源免费观看| 免费高清在线爱做视频| 亚洲国产一区二区三区青草影视| 337P日本欧洲亚洲大胆艺术图| 99热这里有免费国产精品| 亚洲精品麻豆av| 亚洲va久久久久| 无码A级毛片免费视频内谢| 亚洲阿v天堂在线2017免费| 亚洲伊人久久大香线焦| a级毛片视频免费观看| 免费一级特黄特色大片在线| 亚洲中文无码线在线观看| 最近更新免费中文字幕大全| 欧洲精品免费一区二区三区| 亚洲福利电影一区二区?| 99免费在线视频| 亚洲AV无码乱码在线观看| 国产成+人+综合+亚洲专| 日韩精品免费在线视频| 亚洲无码黄色网址| 久久精品亚洲日本波多野结衣| 麻豆视频免费观看| 亚洲国产精品自在在线观看| 亚洲视频在线免费| 成人亚洲综合天堂| 亚洲国产成人久久综合| 一本岛高清v不卡免费一三区| 亚洲va在线va天堂va888www| 精品多毛少妇人妻AV免费久久|