一個 web 專案開始開發時就要想到網頁的 url 優化,良好簡潔的 url 會對 SEO 非常友善,在公司一個專案中到了後期才進行 url 的優化,可以説這是開發人員的失職,但是還是能夠更改的,我們經常使用的 springMVC 框架就可以使用 REST 風格的 url 來對 url 進行一些優化,struts 也有相應的優化美化 url 的外掛,但是我們在專案中使用了 url 美化通用的方法,那就是 urlrewrite(url 重寫), 這個外掛既可以使用在 springmvc 框架中也可以使用在 strust2 的專案中,也可以使用在傳統的 web 專案中,為什麼呢?

  在 springmvc 中的 rest 風格只能使用在 springmvc 專案中,struts 的外掛只能使用在 struts2 的專案中,

  兩種框架的核心都是攔截請求,springmvc 是根據 controller 來發射請求,struts2 使用使用 action 來轉發請求,他們都在專案中都配置了 filter 來攔截請求,來實現訪問的攔截,

  在使用 urlwrite 的時候我們也會來配置 filter 攔截器,來攔截我們指定的請求,比如

  我們在首頁中使用了/index 來攔截, 只要攔截到該請求,我們就讓這個請求轉發到,我們只當的路徑/Client/Sinday_toIndex

  還有第二種,就是帶有引數的請求,比如/HeightST?currentPage=1&type=1

  這個時候我們就要 urlrewrite.xml 中配置相應的請求,例:

  

  ^/Height/([a-zA-Z]{1,})/ ([a-zA-Z]{1,}) $

  /HeightST?currentPage=$2&type=$2

  

  ([a-zA-Z]{1,}) 是未知的引數必須配合小括號使用,第一個就是 $1, 第二個就是 $2

  匹配規則預設使用的是正規表示式,只有符合這個正則才能攔截到

  to 標籤中的 type 屬性規定了請求再次傳送的型別,forward 是轉發,一般都是使用這個屬性,因為 forward 後的請求是不會顯示轉發 url 的,

  要想在這個地方使用 forward,必須在 web.xml 中配置 forward 的,

  這個 url 重寫普遍都存在一個弊端,那就是如果頁面引用的樣式如果是../這樣的形勢的話,必然找不到央視建議 寫成根路徑,或者在 head 便籤裏面新增,base 子標籤,href 指定為專案的根路徑