JAVA使用urlrewrite實現偽靜態化


什么是偽靜態?

  • 偽靜態字面理解就是假的靜態,說的官方點就是“地址重寫,用戶得到的全部地址都是經過處理后的URL地址”。

為什么要偽靜態呢?

  • 提高安全性,可以有效的避免一些參數名、ID等完全暴露在用戶面前,如果用戶隨便亂輸的話,不符合規則的話直接會返回個404或錯誤頁面,這比直接返回500或一大堆服務器錯誤信息要好的多
  • 美化URL,去除了那些比如*.do之類的后綴名、長長的參數串等,可以自己組織精簡更能反映訪問模塊內容的URL
  • 更有利於搜索引擎的收入,通過對URL的一些優化,可以使搜索引擎更好的識別與收錄網站的信息

應用場景是什么?

  • 最直接的就是SEO優化(上面“為什么要偽靜態呢?”已提到)

偽靜態案例

  • 這是我之前參加的一個項目中使用到的偽靜態技術。

圖片描述
圖片描述

怎么用?

  • 准備工作

  • 正式操作

    • 把 urlrewritefilter-x.jar 放入項目,可以直接放到 WEB-INF/lib 下,如果使用的maven,可以copy以下代碼:
      <!-- 偽靜態url --><dependency><groupId>org.tuckey</groupId><artifactId>urlrewritefilter</artifactId><version>4.0.4</version></dependency>
  • 配置web.xml:其實urlrewrite其實就是個過慮器,它將會過慮用戶的所有請求,符合規則的便對其進行重定向,具體的配置參數的使用方法見官方文檔http://www.tuckey.org/urlrewrite/
<!--偽靜態url重寫--><filter><filter-name>UrlRewriteFilter</filter-name><filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class></filter><filter-mapping><filter-name>UrlRewriteFilter</filter-name><url-pattern>/*</url-pattern><dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher></filter-mapping>
  • 把urlrewrite.xml 放到 WEB-INF根目錄下
    圖片描述
  • 最后配置urlrewrite.xml:主要放置一些過濾規則
    圖片描述

以上配置全部完成,下面看一下頁面中如何使用:

  • 其實頁面中的地址按照你在urlrewrite中配置的規則書寫即可
    列表項
  • 效果圖片描述

最后在網上摘錄了一段關於偽靜態技術的弊端的表述:
偽靜態的壞處

  有人測試過,"如果流量稍大一些使用偽靜態就出現CPU使用超負荷,我的同時在線300多人就掛了,而不使用偽靜態的時候同時在線超500人都不掛,我的ISS數是1000"。
  我們不用懷疑這個說法的真實性,其實由於偽靜態是用正則判斷而不是真實地址,判斷到底顯示哪個頁面的艱巨工作需要CPU的計算來完成,因此需要消耗更多的內存來處理,同時CPU會持續上升,這正是偽靜態最大的弊病。
  正是由於這個原因,所以網站在采用偽靜時需要站長斟酌三分,謹慎考慮清楚。

沒有驗證過,不知道是否是正確,希望各位有興趣的可以深入研究一下。

最后的最后,附上一些資料:
urlrewrite.xml配置詳情介紹
正則表達式的應用
查看一個網頁是真靜態還是偽靜態


免責聲明!

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



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