丄諦啲仇魜ヤ
          如 果 敵 人 讓 你 生 氣 , 那 說 明 你 沒 有 勝 他 的 把 握!
          posts - 6,comments - 56,trackbacks - 1
          J2EE簡(jiǎn)介

            J2EE是一個(gè)開放的、基于標(biāo)準(zhǔn)的平臺(tái),可以開發(fā)、部署和管理N層結(jié)構(gòu)的、面向Web的、以服務(wù)器為中心的企業(yè)級(jí)應(yīng)用,它是利用Java 2 平臺(tái)來簡(jiǎn)化與多級(jí)企業(yè)解決方案的開發(fā)、部署和管理相關(guān)的諸多復(fù)雜問題的應(yīng)用體系結(jié)構(gòu)。

            J2EE平臺(tái)采用一個(gè)多層次分布式的應(yīng)用模式。這意味著應(yīng)用邏輯根據(jù)功能被劃分成組件,組成J2EE應(yīng)用的不同應(yīng)用組件安裝在不同的服務(wù)器上,這種劃分是根據(jù)應(yīng)用組件屬于多層次J2EE環(huán)境中的哪一個(gè)層次來決定的。如圖1所示,J2EE應(yīng)用可以由三或四個(gè)層次組成,J2EE多層次應(yīng)用一般被認(rèn)為是三層應(yīng)用,因?yàn)樗鼈兪潜环植荚谌齻€(gè)不同的地點(diǎn):客戶端機(jī)器、J2EE服務(wù)器和數(shù)據(jù)庫或后端的傳統(tǒng)系統(tǒng)服務(wù)器。三層架構(gòu)應(yīng)用是對(duì)標(biāo)準(zhǔn)的客戶端/服務(wù)器應(yīng)用架構(gòu)的一種擴(kuò)展, 即在客戶端應(yīng)用和后臺(tái)存儲(chǔ)之間增加一個(gè)多線程應(yīng)用服務(wù)器。


            J2EE體系包括JSP、Servlet、EJB、WEB SERVICE等多項(xiàng)技術(shù)。這些技術(shù)的出現(xiàn)給電子商務(wù)時(shí)代的WEB應(yīng)用開發(fā)提供了一個(gè)非常有競(jìng)爭(zhēng)力的選擇。怎樣把這些技術(shù)組合起來,形成一個(gè)適應(yīng)項(xiàng)目需要的穩(wěn)定架構(gòu)是項(xiàng)目開發(fā)過程中一個(gè)非常重要的步驟。

            一個(gè)成功的軟件需要有一個(gè)成功的架構(gòu),但軟件架構(gòu)的建立是一個(gè)復(fù)雜而又持續(xù)改進(jìn)的過程,軟件開發(fā)者們不可能對(duì)每個(gè)不同的項(xiàng)目做不同的架構(gòu),而總是盡量重用以前的架構(gòu),或開發(fā)出盡量通用的架構(gòu)方案,Struts就是流行的基于J2EE的架構(gòu)方案之一,其他常用的基于J2EE的架構(gòu)方案還有Turbine、RealMothods等。本文主要探討Struts框架技術(shù)的應(yīng)用。

            J2EE應(yīng)用程序架構(gòu)的發(fā)展

            在J2EE應(yīng)用程序架構(gòu)的發(fā)展路程中,主要經(jīng)歷了兩個(gè)大的階段:

            1、Model 1

            在JSP頁面中結(jié)合業(yè)務(wù)邏輯、服務(wù)器端處理程序和HTML,在JSP頁面中同時(shí)實(shí)現(xiàn)顯示、業(yè)務(wù)邏輯和流程控制,從而快速的完成Web應(yīng)用開發(fā)。這種模型的不足之處:1)不利于應(yīng)用擴(kuò)展和更新。2)業(yè)務(wù)邏輯和表示邏輯混合在JSP頁面中沒有進(jìn)行抽象和分離,不利于應(yīng)用系統(tǒng)業(yè)務(wù)的重用和改動(dòng)。

            2、Model 2

            表示的是基于MVC模式的框架。根據(jù)Model 2,servlet 處理數(shù)據(jù)存取和導(dǎo)航流, JSP處理表現(xiàn)。Model 2 使Java 工程師和HTML設(shè)計(jì)者分別工作于它們所擅長(zhǎng)和負(fù)責(zé)的部分。Model 2應(yīng)用的一部分發(fā)生改變并不強(qiáng)求其他部分也跟著發(fā)生改變。HTML 開發(fā)人員可以改變程序的外觀和感覺,并不需要改變后端servlet的工作方式。把應(yīng)用邏輯、處理過程和顯示邏輯分成不同的組件實(shí)現(xiàn)。彌補(bǔ)了Model1的不足。

            Struts框架技術(shù)

            Struts 框架就是基于Model 2 的架構(gòu),也就是基于MVC模式的框架技術(shù)。它是一個(gè)免費(fèi)的開源的WEB層的應(yīng)用框架,具有很高的可配置性,和有一個(gè)不斷增長(zhǎng)的特性列表。一個(gè)前端控制組件,一系列動(dòng)作類,動(dòng)作映射,處理XML的實(shí)用工具類,服務(wù)器端java bean 的自動(dòng)填充,支持驗(yàn)證的WEB 表單,國際化支持,生成HTML,實(shí)現(xiàn)表現(xiàn)邏輯和模板組成了struts的靈魂。圖2顯示了Struts組件是如何一起工作的。


            Struts 的ActionServlet 控制導(dǎo)航流。其他Struts 類,比如Action, 用來訪問業(yè)務(wù)邏輯類。當(dāng) ActionServlet 從容器接收到一個(gè)請(qǐng)求,它使用URI (或者路徑“path”) 來決定哪個(gè)Action 將用來處理請(qǐng)求。一個(gè) Action可以校驗(yàn)輸入,并且訪問業(yè)務(wù)層以從數(shù)據(jù)庫或其他數(shù)據(jù)服務(wù)中檢索信息。

            為校驗(yàn)輸入或者使用輸入來更新數(shù)據(jù)庫, Action 需要知道什么被提交上來。并不是強(qiáng)制每個(gè)Action 從請(qǐng)求中抓取這些值,而是由 ActionServlet 將輸入綁定到JavaBean中。輸入 bean是Struts ActionForm c類的子類。ActionServlet 通過查找請(qǐng)求的路徑可以決定使用哪個(gè)ActionForm,Action 也是通過同樣的方法選取的。每個(gè)Action都必須以HTTP 響應(yīng)進(jìn)行應(yīng)答。 通常, Struts Action 并不自行加工響應(yīng)信息,而是將請(qǐng)求轉(zhuǎn)發(fā)到其他資源,比如JSP 頁面。Struts 提供一個(gè)ActionForward 類,用來將一個(gè)頁面的路徑存儲(chǔ)為邏輯名稱。當(dāng)完成業(yè)務(wù)邏輯后,Action 選擇并向Servlet返回一個(gè)ActionForward。Servlet 然后使用存儲(chǔ)在ActionForward 對(duì)象中的路徑來調(diào)用頁面完成響應(yīng)。
          Struts 將這些細(xì)節(jié)都綁定在一個(gè)ActionMapping 對(duì)象中。每個(gè)ActionMapping 相對(duì)于一個(gè)特定的路徑。當(dāng)某個(gè)路徑被請(qǐng)求時(shí),Servlet 就查詢ActionMapping 對(duì)象。ActionMapping對(duì)象告訴servlet哪個(gè)Actions、 ActionForms 和 ActionForwards 將被使用。

            所有這些細(xì)節(jié),關(guān)于Action, ActionForm, ActionForward, ActionMapping,以及其他一些東西,都在struts-config.xml 文件中定義。 ActionServlet 在啟動(dòng)時(shí)讀取這個(gè)配置文件,并創(chuàng)建一個(gè)配置對(duì)象數(shù)據(jù)庫。在運(yùn)行時(shí),Struts 應(yīng)用根據(jù)的是文件創(chuàng)建的配置對(duì)象,而不是文件本身。

            基于Struts框架的應(yīng)用設(shè)計(jì)實(shí)例

            本文以“面向鑄造行業(yè)的網(wǎng)絡(luò)化制造ASP平臺(tái)開發(fā)”項(xiàng)目中的軟件租用模塊為例,來說明如何設(shè)計(jì)基于Struts框架的Web應(yīng)用。在該模塊中,用戶合法登陸網(wǎng)站后,可以根據(jù)需要選擇所要租用的軟件類型及軟件中的功能模塊,確認(rèn)信息提交服務(wù)器后,用戶將收到系統(tǒng)給予的登陸密碼,用戶即可登陸網(wǎng)站,在線使用租用軟件,實(shí)行業(yè)務(wù)托管。

            根據(jù)項(xiàng)目需求分析,確定該系統(tǒng)必須具備的性能有:1)良好的交互性:工作內(nèi)容中有相當(dāng)大的部分是人機(jī)交流,這就要求系統(tǒng)的交互性要強(qiáng)。2)較好的可擴(kuò)展性:工作的內(nèi)容和形式具有多變性,要求系統(tǒng)具有良好的可擴(kuò)展性。3)良好的可維護(hù)性:系統(tǒng)投入使用后,主要是由管理員承擔(dān)系統(tǒng)維護(hù)的工作,維護(hù)人員不定期變動(dòng),這就要求系統(tǒng)的可維護(hù)性強(qiáng)。4)具有較好的跨平臺(tái)性:用戶可能使用各種不同的操作系統(tǒng),而且為了適應(yīng)今后可能的變化,系統(tǒng)應(yīng)具有較好的跨平臺(tái)性。基于以上四點(diǎn),在開發(fā)軟件租用模塊時(shí),采用J2EE編程環(huán)境,并相應(yīng)采用了專為J2EE定制的Struts框架。

            做基于Struts框架的項(xiàng)目開發(fā),關(guān)鍵是要有一個(gè)好的整體模型,計(jì)劃好系統(tǒng)中包括哪幾個(gè)模塊,每個(gè)模塊各需要什么樣的FormBean、JavaBean,各種處理結(jié)果都通過哪些JSP頁面來展現(xiàn),同時(shí)配置好struts-config.xml文件。本系統(tǒng)的設(shè)計(jì)模型如圖3所示。


            ActionServlet接受所有的HTTP請(qǐng)求,然后根據(jù)配置文件的內(nèi)容,決定將請(qǐng)求映射到哪一個(gè)Action對(duì)象,本系統(tǒng)中有兩個(gè)Action對(duì)象,分別對(duì)應(yīng)著登陸遠(yuǎn)程軟件(LogonAction)和系統(tǒng)反饋密碼(MailAction)。

            LogonAction首先會(huì)驗(yàn)證用戶是否已經(jīng)登錄,如果沒有登錄則重定向到登錄頁面(Logon.jsp),驗(yàn)證通過后根據(jù)請(qǐng)求參數(shù)決定下一步的處理,如果用戶還沒有選擇租用軟件,則轉(zhuǎn)到軟件介紹租用界面(Query.jsp),選擇需要租用的軟件或軟件的某些模塊,提交信息后,MailAction使服務(wù)器向用戶提交密碼,用戶接收到密碼后,登陸運(yùn)行軟件。

            如果用戶登陸軟件成功,則通過配置文件struts-config.xml中的ActionForward,通過GetInfo對(duì)象把該用戶租用的軟件信息讀取道FormBean中,然后調(diào)用JSP頁面顯示Bean里的數(shù)據(jù)。如果是保存數(shù)據(jù)信息,則調(diào)SaveInfo對(duì)象將FormBean里保持的信息存入數(shù)據(jù)庫;如果是修改信息,則調(diào)ModifyInfo對(duì)象將FormBean里保持的修改后的信息存入數(shù)據(jù)庫;如果是刪除數(shù)據(jù)信息,則調(diào)用DeleteInfo對(duì)象將FormBean里保持的信息從數(shù)據(jù)庫中刪除。

            經(jīng)過這樣設(shè)計(jì)的系統(tǒng),用戶界面和數(shù)據(jù)處理已經(jīng)完全分離,再加上在JSP頁面中使用了自定義標(biāo)記,使頁面中沒有了Java的腳本代碼,這樣Web界面的設(shè)計(jì)和后端程序的編寫就有了清晰的界線,便于開發(fā)團(tuán)隊(duì)的分工,并且維護(hù)起來也很方便。
          posted on 2007-09-17 15:36 Crying 閱讀(188) 評(píng)論(0)  編輯  收藏 所屬分類: Jsp+Struts
          主站蜘蛛池模板: 景洪市| 肥东县| 上饶县| 开平市| 峨边| 海门市| 五常市| 寻甸| 镇康县| 梁河县| 岑巩县| 商城县| 台前县| 长宁区| 玉树县| 津南区| 赣州市| 伽师县| 凤台县| 册亨县| 昌平区| 万载县| 房产| 紫云| 含山县| 石阡县| 天镇县| 确山县| 庆安县| 登封市| 射阳县| 仪陇县| 舞钢市| 同仁县| 富宁县| 深泽县| 石楼县| 咸阳市| 海丰县| 黄浦区| 新丰县|