一個(gè)web項(xiàng)目開始開發(fā)時(shí)就要想到網(wǎng)頁的url優(yōu)化,良好簡(jiǎn)潔的url會(huì)對(duì)SEO非常友善,在公司一個(gè)項(xiàng)目中到了后期才進(jìn)行url的優(yōu)化,可以說這是開發(fā)人員的失職,但是還是能夠更改的,我們經(jīng)常使用的springMVC框架就可以使用REST風(fēng)格的url來對(duì)url進(jìn)行一些優(yōu)化,struts也有相應(yīng)的優(yōu)化美化url的插件,但是我們?cè)陧?xiàng)目中使用了url美化通用的方法,那就是urlrewrite(url重寫),這個(gè)插件既可以使用在springmvc框架中也可以使用在strust2的項(xiàng)目中,也可以使用在傳統(tǒng)的web項(xiàng)目中,為什么呢?
在springmvc中的rest風(fēng)格只能使用在springmvc項(xiàng)目中,struts的插件只能使用在struts2的項(xiàng)目中,
兩種框架的核心都是攔截請(qǐng)求,springmvc是根據(jù)controller來發(fā)射請(qǐng)求,struts2使用使用action來轉(zhuǎn)發(fā)請(qǐng)求,他們都在項(xiàng)目中都配置了filter來攔截請(qǐng)求,來實(shí)現(xiàn)訪問的攔截,
在使用urlwrite的時(shí)候我們也會(huì)來配置filter攔截器,來攔截我們指定的請(qǐng)求,比如
我們?cè)谑醉撝惺褂昧?index來攔截, 只要攔截到該請(qǐng)求,我們就讓這個(gè)請(qǐng)求轉(zhuǎn)發(fā)到,我們只當(dāng)?shù)穆窂?Client/Sinday_toIndex
還有第二種,就是帶有參數(shù)的請(qǐng)求,比如/HeightST?currentPage=1&type=1
這個(gè)時(shí)候我們就要urlrewrite.xml中配置相應(yīng)的請(qǐng)求,例:
<rule>
<from>^/Height/([a-zA-Z]{1,})/ ([a-zA-Z]{1,}) $</from>
<to type=”forward”>/HeightST?currentPage=$2&type=$2</to>
</rule>
([a-zA-Z]{1,})是未知的參數(shù)必須配合小括號(hào)使用,第一個(gè)就是$1,第二個(gè)就是$2
匹配規(guī)則默認(rèn)使用的是正則表達(dá)式,只有符合這個(gè)正則才能攔截到
to標(biāo)簽中的type屬性規(guī)定了請(qǐng)求再次發(fā)送的類型,forward是轉(zhuǎn)發(fā),一般都是使用這個(gè)屬性,因?yàn)閒orward后的請(qǐng)求是不會(huì)顯示轉(zhuǎn)發(fā)url的,
要想在這個(gè)地方使用forward,必須在web.xml中配置forward的,
這個(gè)url重寫普遍都存在一個(gè)弊端,那就是如果頁面引用的樣式如果是../這樣的形勢(shì)的話,必然找不到央視建議 寫成根路徑,或者在head便簽里面添加,base子標(biāo)簽,href指定為項(xiàng)目的根路徑
咨詢熱線
010-85377344
135-21581588
微信客服
QQ客服
3026106565 點(diǎn)擊咨詢