龐琳琳 蔡冬玲 馮剛
【摘 要】 闡述了J2EE中的Struts框架結(jié)構(gòu)和組件重用技術(shù)的先進(jìn)理念,實(shí)現(xiàn)了Struts在網(wǎng)上書店用戶注冊(cè)系統(tǒng)中的應(yīng)用,解決了網(wǎng)頁設(shè)計(jì)者和軟件開發(fā)者職責(zé)不分的問題,使程序的可重用性、可維護(hù)性和可擴(kuò)展性大大提高。
【關(guān)鍵詞】 Struts Servlet JSP 網(wǎng)上書店
1 引言
目前,網(wǎng)上購物已成為人們?nèi)粘OM(fèi)的一種重要形式,而構(gòu)建網(wǎng)購系統(tǒng)的重要技術(shù)之一就是J2EE中的Servlet/JSP技術(shù)[1]。然而,在僅使用JSP技術(shù)開發(fā)的Web應(yīng)用中,業(yè)務(wù)邏輯處理、動(dòng)態(tài)顯示用的Java代碼以及HTML混合在一起,使得程序可重用性低、維護(hù)困難、網(wǎng)頁設(shè)計(jì)者和軟件開發(fā)者職責(zé)不分[2]。本文使用Struts框架來設(shè)計(jì)網(wǎng)上書店中的用戶注冊(cè)系統(tǒng),提高了系統(tǒng)的開發(fā)效率、可維護(hù)性和可擴(kuò)展性。
2 Struts框架結(jié)構(gòu)
Struts是一個(gè)開放資源框架,它在Servlet和JSP 技術(shù)中被用來創(chuàng)建 WEB 應(yīng)用程序,它以實(shí)用的、可擴(kuò)展的方式實(shí)現(xiàn)了良好的軟件設(shè)計(jì)理念,具有組件的模塊化、靈活性和重用性的優(yōu)點(diǎn)[3]。
Struts中的模型以一個(gè)或多個(gè)Java Bean的形式存在,設(shè)計(jì)和實(shí)現(xiàn)系統(tǒng)的業(yè)務(wù)邏輯。它根據(jù)不同的請(qǐng)求從Action派生具體處理對(duì)象,調(diào)用由Bean構(gòu)成的業(yè)務(wù)組件,創(chuàng)建由ActionForm的派生類,實(shí)現(xiàn)對(duì)客戶端表單數(shù)據(jù)的封裝[4]。Struts中的控制器是ActionServlet組件,它提供了處理所有發(fā)送到Struts的HTTP請(qǐng)求的入口點(diǎn),截取和分發(fā)這些請(qǐng)求到相應(yīng)的動(dòng)作類。另外控制組件也負(fù)責(zé)用相應(yīng)的請(qǐng)求參數(shù)填充Action Form,并傳給動(dòng)作類ActionBean,實(shí)現(xiàn)核心商業(yè)邏輯,可以訪問Java Bean或調(diào)用EJB[5]。最后動(dòng)作類把控制權(quán)傳給后續(xù)的JSP文件來生成視圖。Struts中的視圖由JSP生成頁面來完成,利用自定義標(biāo)記庫編寫用戶界面來實(shí)現(xiàn)應(yīng)用邏輯和顯示邏輯的分離。Struts框架通過這些自定義標(biāo)記建立了視圖和模型之間的聯(lián)系。
3 基于struts的網(wǎng)上書店用戶注冊(cè)系統(tǒng)
以網(wǎng)上書店系統(tǒng)中的用戶注冊(cè)信息系統(tǒng)為例,說明基于Struts的Web應(yīng)用軟件的開發(fā)流程。新用戶在網(wǎng)頁上輸入注冊(cè)信息,若注冊(cè)成功,則轉(zhuǎn)到用戶的登錄界面,否則提示注冊(cè)失敗。
(1)視圖功能的用戶界面設(shè)計(jì)。JSP具有定制標(biāo)記和包含Web組件的能力,利用這兩個(gè)特色,可以實(shí)現(xiàn)定制的組件、容器和布局管理器,從而實(shí)現(xiàn)可擴(kuò)展、可重用和可維護(hù)的Web應(yīng)用界面。利用Struts框架提供的taglib標(biāo)簽庫,能夠大大提高開發(fā)效率。因此,在JSP文件中根據(jù)需要分別引用Struts bean、html、logic、template標(biāo)簽。在用戶注冊(cè)系統(tǒng)中,用戶需要填寫詳細(xì)的信息并提交表單。
(2)模型功能的組件設(shè)計(jì)。構(gòu)建模型部分的組件包含了整個(gè)應(yīng)用程序的業(yè)務(wù)邏輯。此系統(tǒng)設(shè)計(jì)的組件為:系統(tǒng)狀態(tài)組件(FormBean), 即實(shí)體模型類,它繼承自ActionForm類,用來存放表單數(shù)據(jù);指令類組件(ActionBean),它擴(kuò)展了Action類,主要是用來控制應(yīng)用程序的流程,當(dāng)注冊(cè)用戶按“提交”按鈕后,來自用戶的請(qǐng)求被Servlet送到指令類組件NewUserAction,指令類調(diào)用相應(yīng)的業(yè)務(wù)邏輯組件Account進(jìn)行處理,然后把請(qǐng)求轉(zhuǎn)發(fā)給相關(guān)的JSP。
(3)控制器功能的指令Servlet類設(shè)計(jì)。對(duì)于控制器類,不需要重新設(shè)計(jì),直接使用Struts提供的ActionServlet類即可。它的核心是struts-config.xml配置文件,它包含了應(yīng)用程序的整個(gè)邏輯流程。在用戶注冊(cè)信息過程中,用newAccount.jsp實(shí)現(xiàn)注冊(cè)頁面;用NewUserActionForm封裝表單數(shù)據(jù);用NewUserAction實(shí)現(xiàn)用戶注冊(cè)信息(業(yè)務(wù)邏輯)并控制應(yīng)用程序流程;而在struts-config.xml里實(shí)現(xiàn)了注冊(cè)頁面(newAccount.jsp)、數(shù)據(jù)bean(NewUserForm)、邏輯bean(NewUserAction)之間的聯(lián)系。
當(dāng)在注冊(cè)頁面上單擊“OK”按鈕時(shí),用戶請(qǐng)求被提交給ActionServlet,根據(jù)struts-config.xml中的配置信息,把/newUserAction.do的URI映射到com.shjt.ebookstore.NewUserAction,把用戶注冊(cè)信息封裝到NewUserForm,由NewUserAction完成注冊(cè)操作,然后轉(zhuǎn)發(fā)給index.jsp。由此可見,struts-config.xml對(duì)于前期的開發(fā)和后期的維護(hù)升級(jí)都是非常重要的。
(4)對(duì)未登錄或未注冊(cè)用戶購書結(jié)賬的處理。當(dāng)用戶確認(rèn)所買圖書,點(diǎn)擊結(jié)賬付款按鈕時(shí),在bookshopcart.jsp頁面通過超鏈接產(chǎn)生響應(yīng),對(duì)應(yīng)代碼為:,后臺(tái)的ActionServlet查詢struts配置文件struts-config.xml文件中
,由此可見轉(zhuǎn)向userRegister.jsp頁面使用戶注冊(cè),當(dāng)用戶填好基本信息后,點(diǎn)擊注冊(cè)按鈕,根據(jù)form的Action對(duì)象可知,將請(qǐng)求提交給registe.do處理。后臺(tái)的ActionServlet查詢struts配置文件struts-config.xml文件中
4 結(jié)語
本文充分利用J2EE的強(qiáng)大功能和平臺(tái)無關(guān)性特點(diǎn),采用Struts框架來實(shí)現(xiàn)網(wǎng)上書店中的用戶注冊(cè)系統(tǒng),使用戶界面和事務(wù)邏輯分離,使頁面設(shè)計(jì)者和Java程序開發(fā)者高效地協(xié)調(diào)工作,有利于整個(gè)系統(tǒng)的開發(fā)、集成、維護(hù)和擴(kuò)展。
參考文獻(xiàn):
[1]李立春,劉卓.基于Struts框架的網(wǎng)上購物系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2014年01期,226-227.
[2]張志剛.Struts 2框架技術(shù)開發(fā)與應(yīng)用[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2013年23期,119-120.
[3]張舉,王敏思.基于Struts和Hibernate的MVC設(shè)計(jì)模式[J].電力學(xué)報(bào),2012年06期,603-606.
[4]周春龍.基于MVC模式的Struts框架應(yīng)用方法研究[J].信息與電腦(理論版),2011年04期,79.
[5]于光.基于MVC模式的Struts技術(shù)在Web應(yīng)用中的研究與實(shí)現(xiàn)[D].長春理工大學(xué),2009.