版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、長江大學(xué)計算機科學(xué)學(xué)院碩士研究生作 業(yè) 簿年 級 計算機科學(xué)s151 專 業(yè) 計算機科學(xué)與技術(shù) 課程名稱 計算機新技術(shù)專題 姓 名 熊魏 交作業(yè)時間 2016年10月8日 基于ssm整合框架的快速開發(fā)技術(shù)研究熊魏長江大學(xué)計算機科學(xué)學(xué)院s151班學(xué)號:2015713901引言框架,即framework。其實就是某種應(yīng)用的半成品,把不同應(yīng)用程序中有共性的一些東西抽取出來,做成一個半成品程序,這樣的半成品就是所謂的程序框架。軟件系統(tǒng)發(fā)展到今天已經(jīng)很復(fù)雜了,特別是服務(wù)器端軟件,涉及到的知識、內(nèi)容、問題太多,在某些方面使用別人成熟的框架,就相當于讓別人幫你完成一些基礎(chǔ)工作。你只需要集中精力,完成系統(tǒng)的業(yè)
2、務(wù)邏輯設(shè)計,這樣每次開發(fā)就不用白手起家,而是可以在這個基礎(chǔ)上開始搭建。使用框架的最大好處:減少重復(fù)開發(fā)工作量、縮短開發(fā)時間、降低開發(fā)成本,同時,還有其它的好處,如:使程序設(shè)計更合理,程序運行更穩(wěn)定等?;谶@些原因,基本上現(xiàn)在在開發(fā)中,都會選用某些合適的開發(fā)框架,來幫助快速高效的開發(fā)應(yīng)用系統(tǒng)。框架的選擇,就是看哪個框架最合適,從而減少開發(fā)的工作量,提高開發(fā)的效率和質(zhì)量,并有效減少維護的工作量,最終達到節(jié)約綜合開發(fā)成,本獲取更多的收益。下面簡單了解一下spring mvc+spring+mybatis三大框架。2.技術(shù)架構(gòu)系統(tǒng)采用以spring為核心并整合了spring mvc和mybatis的3
3、個輕量級框架技術(shù)的組合,即ssm整合框架。利用ssm整合框架可開發(fā)出分層、易擴展、易維護的企業(yè)級應(yīng)用系統(tǒng)。, 能夠極大地滿足系統(tǒng)的需求。ssm框架結(jié)構(gòu)圖如圖2所示。隨著web應(yīng)用的規(guī)模、復(fù)雜度不斷升級,對軟件架構(gòu)的復(fù)用性、可靠性、可擴展性都提出了較高的要求。本課題采用了mvc這一軟件架構(gòu)模式,該模式成功實現(xiàn)了動態(tài)的程序設(shè)計,簡化了后續(xù)對程序的修改以及擴展,使部分程序的重復(fù)利用成為可能。此外,此模式簡化了應(yīng)用程序的復(fù)雜度,使程序結(jié)構(gòu)更直觀。基于mvc架構(gòu)模式,本系統(tǒng)采用ssm框架,即struct2,spring3.0,mybatis框架組合,采用此框架技術(shù)可以提高開發(fā)效率、降低程序的復(fù)雜度。圖1
4、 ssm框架結(jié)構(gòu)圖3 mvc設(shè)計模式mvc設(shè)計模式1是一種目前廣泛流行的軟件設(shè)計模式,它把一個應(yīng)用的各流程按照model(模型)、view(視圖)、controller(控制器)的方式進行分離。本系統(tǒng)所采用的ssm整合框架就是根據(jù)mvc設(shè)計模式的基礎(chǔ)上發(fā)展起來,其中struts2就是采用mvc模式建立起來的框架技術(shù),而struts2正是需要與spring、mybatis進行無縫的集成,才能真正發(fā)揮mvc模式的作用。圖2 mvc設(shè)計模式的工作原理如圖1所示mvc設(shè)計模式的工作原理view部分即是應(yīng)用程序的用戶界面,用戶通過view層發(fā)送請求提交到controller層;controller層接受
5、請求根據(jù)具體需求調(diào)用model層來處理,再根據(jù)model層調(diào)用回來的結(jié)果進行跳轉(zhuǎn)??芍猚ontroller層在整個流程中起到了橋梁的作用,控制數(shù)據(jù)的流向;而model層負責業(yè)務(wù)邏輯的處理和數(shù)據(jù)庫訪問。4 spring mvc技術(shù)研究spring web mvc是一種基于java的實現(xiàn)了web mvc設(shè)計模式的請求驅(qū)動類型的輕量級web框架,即使用了mvc架構(gòu)模式的思想,將web層進行職責解耦,基于請求驅(qū)動指的就是使用請求-響應(yīng)模型,框架的目的就是幫助我們簡化開發(fā),spring web mvc也是要簡化我們?nèi)粘eb開發(fā)的。spring web mvc也是服務(wù)到工作者模式的實現(xiàn),但進行可優(yōu)化。前
6、端控制器是dispatcherservlet;應(yīng)用控制器其實拆為處理器映射器(handler mapping)進行處理器管理和視圖解析器(view resolver)進行視圖管理;頁面控制器/動作/處理器為controller接口(僅包含modelandview handlerequest(request, response)方法)的實現(xiàn)(也可以是任何的pojo類);支持本地化(locale)解析、主題(theme)解析及文件上傳等;提供了非常靈活的數(shù)據(jù)驗證、格式化和數(shù)據(jù)綁定機制;提供了強大的約定大于配置(慣例優(yōu)先原則)的契約式編程支持。spring web mvc框架也是一個基于請求驅(qū)動的w
7、eb框架,并且也使用了前端控制器模式來進行設(shè)計,再根據(jù)請求映射規(guī)則分發(fā)給相應(yīng)的頁面控制器(動作/處理器)進行處理。首先讓我們整體看一下spring web mvc處理請求的流程如圖3所示:圖3 spring mvc 處理流程具體執(zhí)行步驟如下:1、首先用戶發(fā)送請求前端控制器,前端控制器根據(jù)請求信息(如url)來決定選擇哪一個頁面控制器進行處理并把請求委托給它,即以前的控制器的控制邏輯部分;圖3中的1、2步驟;2、頁面控制器接收到請求后,進行功能處理,首先需要收集和綁定請求參數(shù)到一個對象,這個對象在spring web mvc中叫命令對象,并進行驗證,然后將命令對象委托給業(yè)務(wù)對象進行處理;處理完畢
8、后返回一個modelandview(模型數(shù)據(jù)和邏輯視圖名);圖3中的3、4、5步驟;3、 前端控制器收回控制權(quán),然后根據(jù)返回的邏輯視圖名,選擇相應(yīng)的視圖進行渲染,并把模型數(shù)據(jù)傳入以便視圖渲染;圖3中的步驟6、7;4、 前端控制器再次收回控制權(quán),將響應(yīng)返回給用戶,圖3中的步驟8;至此整個結(jié)束。5 spring技術(shù)研究spring 是一個開源框架,是為了解決企業(yè)應(yīng)用程序開發(fā)復(fù)雜性而創(chuàng)建的??蚣艿闹饕獌?yōu)勢之一就是其分層架構(gòu),分層架構(gòu)允許您選擇使用哪一個組件,同時為 j2ee 應(yīng)用程序開發(fā)提供集成的框架。spring 框架是一個分層架構(gòu),由 6 個定義良好的模塊組成。spring 模塊構(gòu)建在核心容器之
9、上,核心容器定義了創(chuàng)建、配置和管理 bean 的方式。圖4 spring框架架構(gòu)其核心模塊為ioc容器和aop。4.1 ioc(inversion of control控制反轉(zhuǎn),又名依賴注入)ioc即依賴注入,利用java里的反射機制在運行時動態(tài)的去創(chuàng)建、調(diào)用對象,spring框架就是在運行的時候,根據(jù)spring的applicationcontext.xml配置文件來動態(tài)的創(chuàng)建對象并調(diào)用對象的方法的,所以使用spring框架后不需要用new方法創(chuàng)建而是通過框架自動產(chǎn)生一個對象,只需要在xml文件中對bean進行定義。spring發(fā)展到3.0后,不需要在xml文件中逐個定義bean對象,只需在
10、調(diào)用的文件中使用autowired來聲明所調(diào)用的對象即可,使開發(fā)更加簡潔方便。4.2 aop(aspect-orientedprogramming,面向方面編程)aop即面向切面編程,其原理是利用代理的設(shè)計模式,未使用spring時,開發(fā)人員需要編寫大量的代碼來實現(xiàn)aop,現(xiàn)在有了spring對aop的支持,不僅減輕了開發(fā)的工作量提高了開發(fā)的效率,也增強了程序的可靠性。本系統(tǒng)中spring的aop主要用于對事務(wù)的管理。spring框架主要用于降低系統(tǒng)模塊之間的耦合度。其主要技術(shù)包括控制反轉(zhuǎn)(ioc)和面向切面編程(aop)兩大方面。spring降低耦合度的功能主要通過ioc來實現(xiàn),ioc是sp
11、ring框架的核心,其原理可以理解為程序的所有組件都是被動的,初始化和調(diào)用都有容器(spring)的負責。另外spring提供了aop技術(shù),利用aop可以對業(yè)務(wù)邏輯的各個部分進行隔離,如:日志記錄、事務(wù)處理等,從而使得業(yè)務(wù)邏輯各部分的耦合度降低,提高程序的可重用性和開發(fā)效率。4.3 spring的主要特性。(1)降低組件之間的耦合度,實現(xiàn)軟件各層之間的解耦。(2)可以使用容器提供的眾多服務(wù),如:事務(wù)管理服務(wù)、消息服務(wù)、jms服務(wù)、持久化服務(wù)等等。(3)容器提供單例模式支持,開發(fā)人員不再需要自己編寫實現(xiàn)代碼。(4)容器提供了aop技術(shù),利用它很容易實現(xiàn)如權(quán)限攔截,運行期監(jiān)控等功能。(5)容器提供
12、的眾多輔作類,使用這些類能夠加快應(yīng)用的開發(fā),如:jdbctemplate、hibernatetemplate.(6)對主流的應(yīng)用框架提供了集成支持。6 hibernate與mybatis技術(shù)研究mybatis是一個基于java的持久層框架。ibatis提供的持久層框架包括sql maps和data access objects(dao)。mybatis 是支持普通 sql查詢,存儲過程和高級映射的優(yōu)秀持久層框架。mybatis 消除了幾乎所有的jdbc代碼和參數(shù)的手工設(shè)置以及結(jié)果集的檢索。mybatis 使用簡單的 xml或注解用于配置和原始映射,將接口和 java 的pojos(plain
13、old java objects,普通的 java對象)映射成數(shù)據(jù)庫中的記錄。每個mybatis應(yīng)用程序主要都是使用sqlsessionfactory實例的,一個sqlsessionfactory實例可以通過sqlsessionfactorybuilder獲得。sqlsessionfactorybuilder可以從一個xml配置文件或者一個預(yù)定義的配置類的實例獲得。用xml文件構(gòu)建sqlsessionfactory實例是非常簡單的事情。推薦在這個配置中使用類路徑資源(classpath resource),但你可以使用任何reader實例,包括用文件路徑或file:/開頭的url創(chuàng)建的實例。m
14、ybatis有一個實用類-resources,它有很多方法,可以方便地從類路徑及其它位置加載資源。6.1功能架構(gòu)mybatis的功能架構(gòu)分為三層,如圖5所示:圖4 mybatis 架構(gòu)(1)api接口層:提供給外部使用的接口api,開發(fā)人員通過這些本地api來操縱數(shù)據(jù)庫。接口層一接收到調(diào)用請求就會調(diào)用數(shù)據(jù)處理層來完成具體的數(shù)據(jù)處理。(2)數(shù)據(jù)處理層:負責具體的sql查找、sql解析、sql執(zhí)行和執(zhí)行結(jié)果映射處理等。它主要的目的是根據(jù)調(diào)用的請求完成一次數(shù)據(jù)庫操作。(3)基礎(chǔ)支撐層:負責最基礎(chǔ)的功能支撐,包括連接管理、事務(wù)管理、配置加載和緩存處理,這些都是共用的東西,將他們抽取出來作為最基礎(chǔ)的組件
15、。為上層的數(shù)據(jù)處理層提供最基礎(chǔ)的支撐。6.2工作流程(1)加載配置:配置來源于兩個地方,一處是配置文件,一處是java代碼的注解,將sql的配置信息加載成為一個個mappedstatement對象(包括了傳入?yún)?shù)映射配置、執(zhí)行的sql語句、結(jié)果映射配置),存儲在內(nèi)存中。(2)sql解析:當api接口層接收到調(diào)用請求時,會接收到傳入sql的id和傳入對象(可以是map、javabean或者基本數(shù)據(jù)類型),mybatis會根據(jù)sql的id找到對應(yīng)的mappedstatement,然后根據(jù)傳入?yún)?shù)對象對mappedstatement進行解析,解析后可以得到最終要執(zhí)行的sql語句和參數(shù)。(3)sql執(zhí)
16、行:將最終得到的sql和參數(shù)拿到數(shù)據(jù)庫進行執(zhí)行,得到操作數(shù)據(jù)庫的結(jié)果。(4)結(jié)果映射:將操作數(shù)據(jù)庫的結(jié)果按照映射的配置進行轉(zhuǎn)換,可以轉(zhuǎn)換成hashmap、javabean或者基本數(shù)據(jù)類型,并將最終結(jié)果返回。6.3動態(tài)sqlmybatis 最強大的特性之一就是它的動態(tài)語句功能。如果您以前有使用jdbc或者類似框架的經(jīng)歷,您就會明白把sql語句條件連接在一起是多么的痛苦,要確保不能忘記空格或者不要在columns列后面省略一個逗號等。動態(tài)語句能夠完全解決掉這些痛苦。盡管與動態(tài)sql一起工作不是在開一個party,但是mybatis確實能通過在任何映射sql語句中使用強大的動態(tài)sql來改進這些狀況。
17、動態(tài)sql元素對于任何使用過jstl或者類似于xml之類的文本處理器的人來說,都是非常熟悉的。在上一版本中,需要了解和學(xué)習(xí)非常多的元素,但在mybatis 3 中有了許多的改進,現(xiàn)在只剩下差不多二分之一的元素。mybatis使用了基于強大的ognl表達式來消除了大部分元素。mybatis是一個可以自定義sql、存儲過程和高級映射的持久層框架。只使用簡單的xml和注解來配置和映射基本數(shù)據(jù)類型、map接口和pojo(簡單的java對象)到數(shù)據(jù)庫記錄。相比另一流行的持久層框架hibernate,mybatis是一種“半自動化”的orm(對象關(guān)系映射)實現(xiàn),可以進行更為細致的sql優(yōu)化減少查詢字段。因
18、為本系統(tǒng)主要是對數(shù)據(jù)庫的數(shù)據(jù)進行處理,而且數(shù)據(jù)量會比較大,結(jié)構(gòu)比較穩(wěn)定,因此對sql語句應(yīng)進行更高度的優(yōu)化,所以本系統(tǒng)選擇mybatis作為數(shù)據(jù)庫持久層框架。相對hibernate的全自動化,mybatis是半自動化的orm框架,雖然不如全自動化更節(jié)省開發(fā)人員時間,但是對于對性能要求較高的系統(tǒng),mybatis可以對sql語句自由進行優(yōu)化,而且現(xiàn)在有mybatisgeneratecode等插件工具可以實現(xiàn)自動生成實體類和基本的select,insert,delete及update語句。減少了mybatis與hibernate在開發(fā)復(fù)雜度上面差距。表1是使用zakisoft工具對hibernate
19、和mybatis的執(zhí)行效率進行的測試數(shù)據(jù),其中執(zhí)行時間為平均每條數(shù)據(jù)的執(zhí)行時間,insert測試數(shù)據(jù)為10000條,select、delete、update每次測試均為隨機選擇、刪除、更新一條數(shù)據(jù),執(zhí)行次數(shù)100次。根據(jù)以上調(diào)研及測試,綜合考慮,本系統(tǒng)采用mybatis框架。7.管理員及權(quán)限模塊實現(xiàn)系統(tǒng)建立初期,只有超級管理員一個角色和用戶,超級管理員可以創(chuàng)建其他角色,并為角色分配不同的權(quán)限,例如:web菜單維護角色、新聞內(nèi)容管理角色、web布局管理角色以及文件管理等角色。然后創(chuàng)建web智能管理系統(tǒng)的后臺管理員用戶,每個用戶有其對應(yīng)的權(quán)限角色。例如擁有菜單維護的權(quán)限的用戶,可以創(chuàng)建前臺網(wǎng)站菜單
20、并分配該菜單對應(yīng)的主頁。不同角色的管理員擁有不同的權(quán)限,在很大程度上保證了前臺web系統(tǒng)的安全性。7框架組合經(jīng)過對各個框架的研究,系統(tǒng)采用ssm框架組合,分別取spring mvc、spring3.0、mybatis各框架中優(yōu)秀模塊進行組合,實現(xiàn)mvc架構(gòu)模式。取spring mvc中的action層與jsp頁面之間的交互響應(yīng)、攔截器,過濾器等功能作為view層和controller層;mybatis作為model層,負責實例、jdbc連接以及數(shù)據(jù)持久層的功能;spring作為一個輕量級的框架,采用其核心模塊ioc、aop、test,其中,ioc依賴翻轉(zhuǎn)用來連接各個層之間對象,簡化各個對象之間
21、調(diào)用;由于基于反射及代理模式的面向切面編程開銷比較大,本系統(tǒng)中只用來進行事務(wù)管理,負責事務(wù)的回滾機制,spring的test機制使得測試變得不再復(fù)雜,可以采用非容器依賴的編程方式進行大部分測試工作,此外spring還擔當著mvc各個層之間的無縫連接工作,否則即使各個框架都很優(yōu)秀也無法發(fā)揮出其最大的作用。在ssm整合框架中,每一個框架都發(fā)揮著自己最擅長的方面: spring mvc注重于降低表現(xiàn)層與邏輯層的耦合度,在視圖層和控制層發(fā)揮作用;spring作為整個框架的核心部分,起到了橋梁的作用,對業(yè)務(wù)層的層次深化,在業(yè)務(wù)層通過其ioc技術(shù)的對象依賴注入和aop技術(shù)的事務(wù)分離,更深層次的降低了耦合程
22、度;mybatis框架主要負責java對象和關(guān)系數(shù)據(jù)庫之間的映射,在數(shù)據(jù)持久層上提供數(shù)據(jù)的訪問。通過應(yīng)用ssm整合框架,可以將整個系統(tǒng)開發(fā)的結(jié)構(gòu)大致分為如圖2所示。圖6 ssm框架結(jié)構(gòu)3.1框架組合實現(xiàn)通過web.xml,structs.xml,applicationcontext.xml,mybatis-config.xml這個配置文件搭建web系統(tǒng)的整體框架,使之符合mvc架構(gòu)模式。web.xml文件中通過context-param配置了spring的上下文位置,并通過listener配置,通知容器加載spring及struct2的配置文件。structs.xml主要是對頁面提交的請求以及
23、action返回的頁面進行對應(yīng)。applicationcontext.xml是spring的配置文件,其中,可以實現(xiàn)使用annotation自動注冊bean,并檢查required,autowired的屬性是否已經(jīng)被注入。使用aop定義了事務(wù),除了以get,find,select方法名開頭的方法外,其他service層的方法均有回滾機制,保證了事務(wù)的原子性、一致性、持久性。此外還配置了mybatis文件位置以及數(shù)據(jù)庫的相關(guān)信息,將業(yè)務(wù)層和數(shù)據(jù)層分離并聯(lián)系起來。mybatis-config.xml文件中配置了mapper的加載方式,本系統(tǒng)中采用非懶漢式加載,即在系統(tǒng)初始化時加載所有的mapper
24、文件,防止出現(xiàn)初始化并發(fā)問題。經(jīng)過編寫各配置文件組合3個框架,完成了系統(tǒng)的整體架構(gòu)的搭建。ssm框架的組合分別是spring mvc、spring3.0、mybatis,三者組合實現(xiàn)mvc架構(gòu)模式。spring mvc的主要功能是使用action層與jsp頁面進行交互。mybatis是半自動化的orm框架,負責數(shù)據(jù)持久層的功能,可以對sql語句進行自動優(yōu)化,并且可以使用插件實現(xiàn)自動生成實體類及基本的語句。spring核心模塊ioc依賴反轉(zhuǎn)各個層之間的對象,簡化對象的調(diào)用。ssm框架在web應(yīng)用系統(tǒng)開發(fā)中具有以下優(yōu)勢:(1)系統(tǒng)開發(fā)效率提升??蚣芸梢蕴峁└咝У慕M件和視圖處理,而且以配置文件的方式定義程序邏輯。需求改變僅需修改控制邏輯的配置文件,無需關(guān)心底層框架的實現(xiàn),從而提高系統(tǒng)開發(fā)效率。(2)模塊間相互獨立。ssm框架具有“低耦合高內(nèi)聚”的特點。設(shè)計人員可以按功能將系統(tǒng)劃分為不同的功能模塊,模塊之間相互獨立,每個模塊的修改不影響其他模塊。(3)角色分離??蚣転殚_發(fā)者提供不同的接口,前端頁面設(shè)計人員只需關(guān)注jsp頁面的設(shè)計,后臺邏輯開發(fā)者對業(yè)務(wù)邏輯開發(fā)程序。前端和后臺的人員相互獨立,互不影響。(4)縮短開發(fā)周期,降低項目開發(fā)成本??蚣芸梢赃m用于各種類型開發(fā)人員協(xié)同工作,降低了對開發(fā)人員知識和
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高原紅的臨床護理
- 高碘性甲狀腺腫的臨床護理
- 孕期胸悶的健康宣教
- JJF(陜) 072-2021 空氣熱老化試驗箱溫度參數(shù)校準規(guī)范
- 【培訓(xùn)課件】超市賣場部門理貨員培訓(xùn)教案
- 實現(xiàn)倉庫運輸工作時間安排的工作計劃
- 監(jiān)控安防設(shè)備運輸合同三篇
- 培養(yǎng)學(xué)生責任心的實踐活動計劃
- 多工位精密級進沖模相關(guān)行業(yè)投資規(guī)劃報告
- 數(shù)字貨幣對財務(wù)管理的影響計劃
- 《溝通能力提升》課件
- 江蘇小高考計算機考試題目及答案
- 線上線下混合教學(xué)課程設(shè)計
- 江蘇省南京市玄武區(qū)2023-2024學(xué)年九年級上學(xué)期英語期末測試卷
- DB3715T 52-2024 農(nóng)業(yè)社會化服務(wù) 小麥全產(chǎn)業(yè)鏈管理技術(shù)規(guī)范
- 上海市徐匯區(qū)2023-2024學(xué)年九年級上學(xué)期一?;瘜W(xué)試題
- 2024年度初級會計《初級會計實務(wù)》模擬試題及答案
- 美容護膚招商方案
- 新概念英語課件NCE1-lesson57-58(共21張)
- 《HSK標準教程1》第4課課件
- 國開2023秋《人文英語3》第5-8單元作文練習(xí)參考答案
評論
0/150
提交評論