專業(yè)論文:基于Struts+Spring的Web應(yīng)用設(shè)計與實現(xiàn)
摘 要 集成Struts、Spring框架技術(shù)構(gòu)建基于J2EE的Web應(yīng)用可以提高J2EE項目的可重用性。本文介紹了兩種流行的開源框架技術(shù)Struts和Spring的原理,并將這兩種框架技術(shù)整合起來應(yīng)用到實際的Web項目開發(fā)中去,從而提高項目代碼的復(fù)用性及項目開發(fā)的效率。
關(guān)鍵詞 J2EE;Struts;Spring
1 引言
基于J2EE的Web應(yīng)用系統(tǒng)以其層次性、平臺無關(guān)性逐漸被大多數(shù)的公司所認同,已經(jīng)成為電子商務(wù)主要的解決方案。傳統(tǒng)的JSP/Servlet開發(fā)模式優(yōu)勢在于直接、簡單,對于小型應(yīng)用可以很方便、快速地進行開發(fā)。但是這種不加控制的開發(fā)模式往往帶來顯示、業(yè)務(wù)和數(shù)據(jù)的高耦合性,軟件難以重用;贘2EE的框架技術(shù)是解決上述問題的重要技術(shù),能夠有效地支持大型J2EE Web應(yīng)用項目的開發(fā)。本文通過集成Struts和Spring基于J2EE的框架技術(shù)提出了一種構(gòu)建J2EE應(yīng)用的框架。
2 Struts框架技術(shù)
The Jakarta Struts項目是由Apache發(fā)起的開源項目,是基于MVC分離思想的杰出產(chǎn)品。Struts的Controller是通過Actionservlet對象實現(xiàn)的,這個控制器獲得View (JSP)的請求后根據(jù)ActionMapping對象調(diào)度對應(yīng)的Model(Action對象)處理業(yè)務(wù)邏輯,并將獲得的處理結(jié)果(ActionForward對象)返回給View(JSP)來響應(yīng)。同時通過ActionForm對象封裝數(shù)據(jù)在Model和View之間交互使用。Struts還通過自定義的標(biāo)簽庫豐富了View層的JSP技術(shù),方便了頁面設(shè)計。
下面我們就分別從視圖、控制、模型和Struts的配置文件struts-config.xml來介紹Struts的體系結(jié)構(gòu)。
(1)視圖。是一組JSP文件,Struts自身包含了一組可擴展的自定義標(biāo)簽庫,可以簡化創(chuàng)建用戶界面的過程。這些JSP文件中沒有業(yè)務(wù)邏輯,也沒有信息模型。
(2)模型。模型主要是表示一個系統(tǒng)的狀態(tài)和業(yè)務(wù)邏輯。在Struts中,系統(tǒng)的狀態(tài)主要由ActiomForm Bean體現(xiàn),對于業(yè)務(wù)邏輯通常由JavaBean或EJB組件來實現(xiàn)。
(3)控制器?刂破髦饕葾ctionServlet類和Action類來實現(xiàn),ActionServlet類是Struts框架中的核心組件,主要負責(zé)接收HTTP請求信息。根據(jù)配置文件struts-config.xml的配置信息,把請求轉(zhuǎn)發(fā)合適的Action對象。Action類負責(zé)調(diào)用模型的方法,更新模型的狀態(tài),并幫助控制應(yīng)用程序的流程。
(4)配置文件Struts-config.xml。當(dāng)ActionServlet接收HTTP請求信息時,如何決定把用戶請求轉(zhuǎn)發(fā)給哪個Action對象呢?這就需要一些描述用戶請求路徑和Action映射關(guān)系的`配置信息。在Struts中,這些配置映射信息都存儲在特定的XML文件Struts-config.xml中,在該配置文件中,每一個Action的映射信息都通過一個(action)元素來配置。這些配置信息在系統(tǒng)啟動時會被讀入內(nèi)存,供Struts在運行期間使用,在內(nèi)存中,每一個(action)元素都對應(yīng)一個ActionMapping類的實例。
3 Spring框架技術(shù)
Spring的哲學(xué)是在不影響Java對象設(shè)計的情況下將Java對象加入到框架中。Spring解決了許多J2EE開發(fā)中的常見問題,它不依賴于任何的組件,是一種輕量級的容器,其核心是Bean工廠,用以構(gòu)造我們所需要的M(Model)。
Spring框架是一個分層的應(yīng)用程序開發(fā)框架,而不是某一層,如Struts或Hibernate都屬于單獨某一層的框架。Spring致力于在整個應(yīng)用程序?qū)用婕軜?gòu)程序,使程序的各個層面協(xié)調(diào)一致,從而發(fā)揮最大的效能。Spring能整合現(xiàn)有的優(yōu)秀單層框架,把它們組成連貫統(tǒng)一的框架。Spring框架的模塊化完成的非常好。大體上,存在如圖1所示的幾個模塊。
其中:
Spring核心模塊:Spring架構(gòu)中最為基礎(chǔ)、重要的模塊。它提供了IoC容器,即依賴注入。其中,BeanFactory是最為重要的概念,對理解IoC和ApplicationContext起到了重要作用。
Spring AOP模塊:實現(xiàn)了AOP聯(lián)盟中定義的AOP編程實現(xiàn)。如提供實現(xiàn)事務(wù)管理。用它來提供非管理環(huán)境下申明方式的事務(wù)、安全等服務(wù)。
Spring Context模塊:直接位于Spring的核心模塊之上。Spring上下文模塊除了繼承Spring核心模塊的功能外還添加了用于資源綁定、事件移植、資源裝載以及裝載上下文等功能。這對于Web應(yīng)用和J2EE應(yīng)用十分有效。
Spring Web模塊:提供面向Web應(yīng)用集成的功能。其中ContextLoaderServlet和ContextLoaderListener正是Web模塊提供的。當(dāng)同Tapestry、JSF集成時需要使用到Spring Web模塊。
Spring DAO模塊:提供了JDBC抽象層,使得開發(fā)者不用再去編寫同RDBMS交互、非業(yè)務(wù)功能的JDBC代碼。而且DAO模塊還能夠分析RDBMS廠商專有的SQL錯誤代碼。同時能夠提供編程方式和聲明方式控制事務(wù)。
Spring ORM模塊:為當(dāng)前流行的O/R Mapping技術(shù)提供集成。借助于Spring框架提供的簡單事務(wù)聲明,開發(fā)者能夠很容易實現(xiàn)對O/R Mapping中操作的事務(wù)控制。
Spring Web MVC模塊:提供MVC實現(xiàn),清晰的劃分了Web應(yīng)用中涉及到的各項內(nèi)容。
4 基于Struts+Spring框架技術(shù)的實現(xiàn)
在項目開發(fā)實踐中提出了基于Struts+Spring框架的J2EE架構(gòu)。將這兩種框架整合起來用到Web項目開發(fā)的不同層。整個架構(gòu)的結(jié)構(gòu)流程圖所示。
(1)客戶端發(fā)送一個查詢請求,在JSP里提交表單時指定處理表單的path。
<form name="spQuery" method="post"
action="{root/create/path} /SPInfoManageAction.do"
target="bottom" >
(2)在struts-config.xml文件里根據(jù)path配置Action的具體名和路徑。
<action path="/SPInfoManageAction" type="com.mycom.spmanage.spi nfomanage.action.SPInfoManageAction"
unknown="false"
validate="true" >
<forward name="init"
path="/../views/spmanage/spinfomanage/SPInfoQuery.jsp"
redirect="false"
contextRelative="false" />
<forward name="SPBriefInfo"
path="/../views/spmanage/spinfomanage/SPBriefInfo.jsp"
redirect="false"
contextRelative="false" />
(3)在Action類里根據(jù)JSP頁傳遞回的操作類型operType參數(shù)來執(zhí)行具體的方法,生成業(yè)務(wù)邏輯對象BO的實例,并調(diào)用BO的getSpInfoQueryBrief,返回一個結(jié)果集。
Private ActionForward spInfoQueryBrief (ActionMapping mapping, HttpServletRequest request,
HttpServletResponse response) throws ActionException{
//生成BO類的實例
SPInfoManageBO service =(SPInfoManageBO)getBaseService().getServiceFacade("spInfoManageBO");
//用getParameter方法獲取查詢條件
String spShortName = request.getParameter("spShortName");
......
//指向業(yè)務(wù)邏輯對象BO類里的方法,返回結(jié)果集
try { coll = service.getSpInfoQueryBrief(mapData);
} catch (Exception e) {......}
......
//返回參數(shù)
request.setAttribute("spShortName",spShortName);
......
//指向下一步跳轉(zhuǎn)路徑
return mapping.findForward("SPBriefInfo");
(4)在applicationContext.xml里配置BO的路徑以及所調(diào)用的數(shù)據(jù)庫對象DAO
(5)在dataAccessContext.xml文件里配置數(shù)據(jù)庫對象DAO具體路徑:
從而連接到數(shù)據(jù)庫對數(shù)據(jù)進行增刪改查操作。并一步步返回數(shù)據(jù)到表現(xiàn)層,用JSP+XSL展示,從而完成一個流程的操作。
5 結(jié)束語
Struts+Spring框架是目前眾多軟件企業(yè)主流的應(yīng)用技術(shù),也是J2EE未來發(fā)展的趨勢。Struts作為前臺控制框架簡化了程序的開發(fā)。使得頁面展示代碼和JAVA代碼編寫工作有效分工,使項目的可擴展性大大增強,提高了開發(fā)效率,降低了維護成本。Spring作為一個應(yīng)用于所有層面的綜合框架,具有強大的應(yīng)用功能及靈活性,適合作為一些大規(guī)模軟件項目的底層平臺。基于Struts+Spring的Web應(yīng)用實現(xiàn)了表示層、邏輯層和數(shù)據(jù)庫訪問層等多層面分離,使軟件在擴展性、復(fù)用性和維護性方面上有了很大提高。具有很好的發(fā)展前景。
參考文獻
。1]飛思科技產(chǎn)品研發(fā)中心. 精通Spring[J ] . 電子工業(yè)出版社,2005.4
[2]飛思科技產(chǎn)品研發(fā)中心. Java Web 服務(wù)應(yīng)用開發(fā)詳解[J ] . 電子工業(yè)出版社,2002
。3]孫衛(wèi)琴.精通Struts 基于MVC的Java Web 設(shè)計與開發(fā).電子工業(yè)出版社, 2005.01
。4]童春杰. 基于J2EE的分布式體系及應(yīng)用.計算機應(yīng)用研究2002.01
[5]Spring網(wǎng)站:http://springframework.org
【專業(yè)論文:基于Struts+Spring的Web應(yīng)用設(shè)計與實現(xiàn)】相關(guān)文章:
基于DSP整流器設(shè)計論文04-18
低壓備自投系統(tǒng)設(shè)計與應(yīng)用12-10
數(shù)學(xué)與應(yīng)用數(shù)學(xué)專業(yè)求職信04-18
數(shù)學(xué)與應(yīng)用數(shù)學(xué)專業(yè)最好的大學(xué)有哪些10-12
工業(yè)設(shè)計專業(yè)畢業(yè)設(shè)計(論文)范文08-12
獅子和鹿基于標(biāo)準(zhǔn)的教學(xué)設(shè)計01-17
淺析演示型多媒體課件的應(yīng)用與設(shè)計原則總結(jié)05-15