包烏格德勒 李娟
摘要:靜態(tài)網(wǎng)頁技術(shù)和動態(tài)網(wǎng)頁技術(shù)都有各自的優(yōu)缺點,隨著互聯(lián)網(wǎng)的不斷發(fā)展,結(jié)合它們優(yōu)點的偽靜態(tài)技術(shù)應(yīng)運而生。文章通過介紹Struts框架的運行原理,研究了基于Struts框架的偽靜態(tài)技術(shù),并給出了基于Struts框架實現(xiàn)偽靜態(tài)技術(shù)的方法。
關(guān)鍵詞:偽靜態(tài); Struts; Action Servlet; Action
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-2374(2012)06-0118-02
早期的網(wǎng)站都采用靜態(tài)網(wǎng)頁技術(shù),網(wǎng)頁的內(nèi)容更新都是由人工編輯修改的,浪費很多人力資源。靜態(tài)頁面的URL大多以.htm和.html結(jié)尾。隨著互聯(lián)網(wǎng)信息量的不斷壯大,網(wǎng)站開發(fā)人員為了減輕網(wǎng)站服務(wù)器的負(fù)荷和提高網(wǎng)站安全性,各網(wǎng)站都不約而同地采用了動態(tài)網(wǎng)頁技術(shù)。動態(tài)頁面一般指服務(wù)器端腳本程序與HTML文件相混合的頁面,它可以訪問數(shù)據(jù)庫中的內(nèi)容,動態(tài)頁面的內(nèi)容隨著數(shù)據(jù)庫內(nèi)容的變化而自動改變,不需要人工編輯修改。當(dāng)用戶訪問動態(tài)網(wǎng)頁時,Web服務(wù)器會根據(jù)用戶所訪問頁面的URL,執(zhí)行相應(yīng)頁面的程序代碼,把程序執(zhí)行結(jié)果轉(zhuǎn)換成靜態(tài)頁面反饋給用戶。比較常用的動態(tài)網(wǎng)頁技術(shù)有:ASP、ASP.NET、JSP、PHP等。
動態(tài)網(wǎng)頁技術(shù)有提高網(wǎng)站開發(fā)速度、占用空間少等優(yōu)點,但是它的資源占用比靜態(tài)網(wǎng)頁高,而且對搜索引擎不友好。靜態(tài)網(wǎng)頁雖然占用空間大,但是它的訪問速度更快,資源占用更少,特別是對搜索引擎友好,更容易被搜索引擎收錄。鑒于靜態(tài)和動態(tài)網(wǎng)頁技術(shù)的優(yōu)點和缺點,又出現(xiàn)了偽靜態(tài)技術(shù),它是在保留動態(tài)網(wǎng)頁優(yōu)點的基礎(chǔ)上,使頁面URL靜態(tài)化,即使用靜態(tài)URL來訪問動態(tài)網(wǎng)頁,使URL不帶動態(tài)參數(shù)(沒有問號),騙過收錄的爬蟲程序。本文研究基于Struts框架實現(xiàn)偽靜態(tài)技術(shù)的方法。
一、Struts框架
JSP是Java Web應(yīng)用開發(fā)的核心技術(shù),與Struts框架結(jié)合在一起,可以快速高效地開發(fā)出Java Web應(yīng)用程序。Struts通過ActionServlet實現(xiàn)Model2架構(gòu),是Struts框架的核心,是中央控制器,所有的用戶請求都先由ActionServlet來處理,然后由ActionServlet把請求轉(zhuǎn)發(fā)給Struts的一個Action。Struts框架只允許在一個Web應(yīng)用中配置一個ActionServlet類,在應(yīng)用的生命周期內(nèi),僅創(chuàng)建ActionServlet類的一個實例,該實例負(fù)責(zé)用戶的所有請求。
ActionServlet在web.xml(Web應(yīng)用配置文件)中的配置如下:
一般情況下,ActionServlet只負(fù)責(zé)處理所有以.do結(jié)尾的URL,所以配置為*.do。
二、基于Struts框架實現(xiàn)偽靜態(tài)技術(shù)
(一)Struts實現(xiàn)偽靜態(tài)的兩種配置方法
靜態(tài)網(wǎng)頁一般以.html結(jié)尾,而ActionServlet卻只會處理以.do結(jié)尾的請求,所以想要通過Struts框架實現(xiàn)偽靜態(tài)技術(shù),就必須配置ActionServlet也可以處理.html結(jié)尾的請求。其實在Web應(yīng)用中配置Struts時,可以讓Struts同時處理多種形式的URL,通過在web.xml添加多個
實現(xiàn)。
偽靜態(tài)技術(shù)可以通過兩種形式的配置方法來實現(xiàn):一個是以擴(kuò)展名形式,另一個是以路徑形式。
1.?dāng)U展名形式。
能夠同時處理.html和.do結(jié)尾請求的ActionServlet的配置如下:
在
2.路徑形式。
可以在
(二)在Struts中配置偽靜態(tài)URL的Action映射
當(dāng)Struts處理用戶請求時,會把請求轉(zhuǎn)發(fā)給一個Action類,在Struts的配置文件struts-config.xml中需要設(shè)置用戶請求路徑和Action的映射關(guān)系,需要為偽靜態(tài)URL映射一個Action類。不同形式的偽靜態(tài)配置方法,將會有不同的結(jié)果。
如果以擴(kuò)展名*.html形式配置了偽靜態(tài),在struts-config.xml中映射如下的Action:
此時HTMLAction類可處理用戶請求路徑為abc.html和abc.do的請求。
如果以路徑/public/*形式配置了偽靜態(tài),在struts-config.xml中映射如下的Action:
此時HTMLAction類可處理用戶請求路徑如/public/任意字符串.html的請求,但是在路徑“/public/”后不能再出現(xiàn)/字符,即只能處理public直接路徑中的用戶請求,不能處理public的子路徑中的用戶請求。
如果想要處理public的所有路徑中的請求,包括子路徑,就必須配置如下的Action映射:
此時HTMLAction類可處理用戶請求路徑如/public/任意字符串.html的請求,但是與上面不同的是,可以處理public的子路徑中的用戶請求,即可以處理以public開始的任意請求路徑。推薦使用本方法實現(xiàn)偽靜態(tài)技術(shù)。
三、結(jié)語
本文分析了通過Struts框架實現(xiàn)偽靜態(tài)技術(shù)的方法,介紹了兩種形式的配置方法??梢园l(fā)現(xiàn),以路徑形式配置偽靜態(tài),且設(shè)置Action的path為“/**.html”,可以簡化偽靜態(tài)的配置,具有很好的應(yīng)
用性。
參考文獻(xiàn)
[1]周志堅.動態(tài)網(wǎng)頁靜態(tài)化的實現(xiàn)[J].無錫商業(yè)職業(yè)技術(shù)學(xué)院學(xué)報,2007,7(3).
[2]劉斌.精通Java Web整合開發(fā):JSP+AJAX+Struts+Hibernate [M].北京:電子工業(yè)出版社,2007.
作者簡介:包烏格德勒(1979-),男(蒙古族),內(nèi)蒙古興安盟人,呼和浩特民族學(xué)院計算機科學(xué)與技術(shù)系講師,研究方向:電子商務(wù)、軟件工程。
(責(zé)任編輯:趙秀娟)