国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

SSM框架在Web應(yīng)用開發(fā)中的設(shè)計與實現(xiàn)

2016-02-23 12:12
關(guān)鍵詞:設(shè)計模式配置文件視圖

李 洋

(南京郵電大學(xué) 通信與信息工程學(xué)院,江蘇 南京 210000)

SSM框架在Web應(yīng)用開發(fā)中的設(shè)計與實現(xiàn)

李 洋

(南京郵電大學(xué) 通信與信息工程學(xué)院,江蘇 南京 210000)

在Web應(yīng)用的開發(fā)過程中,開發(fā)框架的選擇非常重要。一個好的開發(fā)框架能夠加速Web應(yīng)用的開發(fā)速度,降低開發(fā)成本,減少開發(fā)人員的工作量,同時能夠使Web應(yīng)用具有良好的擴(kuò)展性和移植性。基于SpringMVC+Spring+Mybatis(SSM)的框架憑借良好的性能和較快的開發(fā)效率,逐漸成為主流的Web應(yīng)用開發(fā)框架組合。SpringMVC是一個基于MVC的框架,其主要負(fù)責(zé)表現(xiàn)層的功能,比如響應(yīng)請求。Spring框架主要起到容器的功能,整合了SpringMVC和Mybatis,實現(xiàn)層與層之間的解耦,同時使業(yè)務(wù)邏輯更加清晰。Mybatis框架主要負(fù)責(zé)的是數(shù)據(jù)持久層,完成和數(shù)據(jù)庫的相關(guān)操作。重點以權(quán)限管理模塊為例,說明了SSM框架在開發(fā)后臺管理系統(tǒng)中的應(yīng)用,為開發(fā)后臺管理系統(tǒng)提供了理論指導(dǎo)。

SpringMVC;Spring;Mybatis;Web應(yīng)用;框架

0 引 言

目前,國內(nèi)外有很多的Web開發(fā)技術(shù),其中應(yīng)用最廣泛的兩類技術(shù)分別是微軟(Microsoft)公司的.Net平臺和Sun及IBM等公司提出的J2EE平臺。J2EE主要面向使用Java程序設(shè)計語言進(jìn)行基于Web的企業(yè)應(yīng)用的開發(fā)部署[1]。J2EE平臺相較于.Net平臺是開放的、跨平臺的、可移植的,因此很多企業(yè)都選擇J2EE平臺的結(jié)構(gòu)設(shè)計和解決方案。傳統(tǒng)的J2EE以EJB(Enterprise JavaBean)容器為核心,EJB組件提供事務(wù)管理,處理用戶請求,支持打包處理和資源管理等功能,但是EJB與EJB容器的高度耦合關(guān)系,使其可移植性差[2],同時EJB代碼的復(fù)雜、維護(hù)的困難使其逐步被淘汰,因此輕量級的框架就應(yīng)運(yùn)而生。例如,Struts、Spring等,降低了開發(fā)的復(fù)雜度,提高了開發(fā)時的調(diào)試效率,進(jìn)而提高了Web網(wǎng)站的開發(fā)速度。

1 MVC設(shè)計模式

MVC(Model-View-Controller,即模型-視圖-控制器[3])是Web開發(fā)中的一種設(shè)計模式。圖1顯示了這三種組件的聯(lián)系和功能的分工。

圖1 MVC組件類型的關(guān)系與功能

在這種設(shè)計模式中,模型(Model)、視圖(View)、控制器(Controller)分別履行不同的職責(zé)。Model主要實現(xiàn)業(yè)務(wù)的邏輯處理,業(yè)務(wù)規(guī)則的制定,包括數(shù)據(jù)庫的訪問。因此業(yè)務(wù)模型的設(shè)計是MVC設(shè)計模式中最重要的部分。View是根據(jù)模型數(shù)據(jù)創(chuàng)建的,用戶能看到并且能與之交互。View通常是采集用戶數(shù)據(jù)的輸入,響應(yīng)用戶的請求。Controller通過讀取視圖中用戶輸入的數(shù)據(jù),根據(jù)用戶輸入的數(shù)據(jù)選擇合適的模型處理用戶請求,并且選擇合適的視圖來展示模型處理結(jié)果。Controller并不參與數(shù)據(jù)的處理,而是將數(shù)據(jù)的處理交給Model執(zhí)行??梢?,MVC設(shè)計模式實現(xiàn)的業(yè)務(wù)處理和視圖展示的分離,降低了每個模塊之間的耦合度,達(dá)到了系統(tǒng)的設(shè)計目標(biāo)和整體要求。

2 SpringMVC框架

SpringMVC框架是Spring基于MVC設(shè)計模型的用于構(gòu)建Web應(yīng)用程序的一種實現(xiàn)。在Web應(yīng)用開發(fā)過程中,SpringMVC框架容納了包括JSP在內(nèi)的大量視圖技術(shù),可以靈活配置[4]。雖然SpringMVC與Struts功能類似,但是它們的實現(xiàn)原理不同。Struts2是基于類級別的攔截,一個類對應(yīng)一個request上下文。SpringMVC是基于方法級別的攔截,一個方法對應(yīng)一個request上下文,而方法同時又跟一個URL對應(yīng)。SpringMVC的工作流程如圖2所示。

圖2 SpringMVC工作流程圖

SpringMVC框架的主要構(gòu)件是前端控制器(DispatcherServlet)、處理器映射器(HandlerMapping)、處理器適配器(HandlerAdapter)、處理器(Handler)、視圖解析器(ViewResolver)、視圖[5]。其中,DispatcherServlet從HttpServlet繼承而來,作用類似于一個Servlet,主要用于接收用戶請求和響應(yīng)服務(wù),功能如下:

(1)實現(xiàn)文件上傳,本地化解析功能;

(2)通過處理器映射器,將請求映射到處理器(返回一個執(zhí)行鏈,包括一個處理器、多個處理器攔截器);

(3)通過處理器映射器實現(xiàn)多種類型的處理器;

(4)通過視圖解析器實現(xiàn)邏輯視圖到具體視圖的解析;

(5)實現(xiàn)對具體視圖的渲染;

(6)通過異常處理解析器解析執(zhí)行過程中遇到的異常。

3 Spring框架

Spring是為降低企業(yè)的應(yīng)用開發(fā)復(fù)雜度而創(chuàng)建的一種開源框架。其主要目的就是實現(xiàn)開發(fā)中各層之間的分離,實現(xiàn)允許每層靈活選擇何種構(gòu)件,并且為J2EE的開發(fā)提供集成框架。Spring為企業(yè)應(yīng)用的開發(fā)提供了一種輕量級的解決方案[6]。Spring框架主要提供了面向切面(AOP)編程,核心的控制反轉(zhuǎn)(IoC)機(jī)制,以及能夠整合多種持久層的框架和擁有自己的MVC框架。Spring框架希望提供不是專注于某一層的解決方案,而是提供Java EE應(yīng)用開發(fā)中各層的解決方案。從圖3中可以看出,Spring框架實現(xiàn)了表現(xiàn)層、業(yè)務(wù)層、持久層的整合,但這并不意味著原來已有的框架能被Spring框架取代,而是Spring框架能夠?qū)崿F(xiàn)已有框架的無縫整合,為企業(yè)級應(yīng)用開發(fā)提供更大的靈活性。

圖3 Spring框架結(jié)構(gòu)圖

總結(jié)起來,Spring具有的優(yōu)勢為:

(1)提供了一種可有效地組織中間層對象方法。

(2)提供了一種非侵入設(shè)計,降低了代碼污染。

(3)Spring通過依賴注入機(jī)制降低了業(yè)務(wù)對象之間的復(fù)雜性,實現(xiàn)了對象、組件之間的解耦。

(4)通過AOP實現(xiàn)日志、事務(wù)等功能的集中式管理。

(5)Spring的ORM和DAO(Data Access Objects)[7]實現(xiàn)了整合多種持久層框架的可能性,簡化了開發(fā)人員對數(shù)據(jù)庫的操作。

(6)Spring作為整合組件,可以整合其他框架,為企業(yè)級應(yīng)用的開發(fā)提供更大的靈活度。

相關(guān)術(shù)語如下所述:

IoC(Inversion of Control,控制反轉(zhuǎn)):面向?qū)ο箝_發(fā)中,這是一種設(shè)計原則,用來降低代碼之間的關(guān)聯(lián)性。IoC將設(shè)計好的類不是在類的內(nèi)部實現(xiàn)控制,而是由系統(tǒng)去控制,這稱為控制反轉(zhuǎn)[8]。

AOP(Aspect-Oriented Programming,面向切面編程):是由Gregor Kiczales提出的一種全新的編程技術(shù),為開發(fā)者提供了一種描述橫切關(guān)注點的機(jī)制[9]。AOP通過動態(tài)代理,實現(xiàn)將多個系統(tǒng)級服務(wù)(例如日志、事務(wù)等)的行為封裝到可重用的模塊中,用來實現(xiàn)業(yè)務(wù)邏輯和系統(tǒng)級服務(wù)的松耦合。

非侵入式:侵入式設(shè)計表現(xiàn)為客戶端程序需要繼承框架中的類,而非侵入式設(shè)計則表現(xiàn)為客戶端實現(xiàn)框架提供的接口,這樣就減少了應(yīng)用程序?qū)蚣艿囊蕾?,以及框架移植時的負(fù)擔(dān),提高了應(yīng)用程序組件的復(fù)用性。

4 Mybatis框架

Mybatis是J2EE應(yīng)用開發(fā)中的一個持久層框架,它通過配置的XML文件或者注解實現(xiàn)對象和存儲過程,SQL語句的關(guān)聯(lián),而不是實現(xiàn)對象與數(shù)據(jù)庫表的關(guān)聯(lián),并且可以實現(xiàn)動態(tài)生成SQL語句。MyBatis框架集合多種操作型關(guān)系數(shù)據(jù)的概念和方法,它是一個強(qiáng)大的數(shù)據(jù)訪問工具和解決的方法[10]。Mybatis與JDBC相比,簡化了相關(guān)代碼的實現(xiàn),其通過使用注解方法或者簡單的XML配置文件實現(xiàn)原始映射,然后通過映射引擎將JavaBean或者定義的接口映射成數(shù)據(jù)庫中的記錄。Mybatis的工作原理如圖4所示。通過XML配置文件將JavaBean、Map以及本數(shù)據(jù)類型(如Integer、String等)映射成PreparedStatement所需的輸入?yún)?shù)以ResultSet結(jié)果集的類型。

Mybatis讓程序?qū)⒅饕Ψ旁赟QL語句上,通過Mybatis提供的映射方式,自由靈活生成(半自動化,大部分需要程序員編寫SQL)滿足需要的SQL語句,修改比較容易。Mybatis可以將PreparedStatement中的輸入?yún)?shù)自動進(jìn)行輸入映射,將查詢結(jié)果集靈活映射成Java對象。相對于其他的ORM框架(如Hibernate),Mybatis適用于需求變化多的項目(如互聯(lián)網(wǎng)項目)。

圖4 Mybatis的工作原理圖

5 基于SSM的后臺管理系統(tǒng)實現(xiàn)

5.1 整合SSM框

SSM是SpringMVC、Spring、Mybatis的簡寫。SSM是輕量級并且應(yīng)用較多的一種組合框架,好多中小型企業(yè)的門戶網(wǎng)站、政府網(wǎng)站、金融項目都是基于SSM架構(gòu)開發(fā)的。由于Spring是一個業(yè)務(wù)層的框架,能夠很好地整合表現(xiàn)層的SpringMVC框架和持久層的Mybatis框架。整合以后,Spring就會充當(dāng)整個應(yīng)用的工廠。首先整合Spring和Mybatis,Spring整合Mybatis最簡單的理解就是“把Mybatis數(shù)據(jù)源的配置、事務(wù)的管理、SqlSessionFactory的創(chuàng)建以及數(shù)據(jù)映射器接口Mapper的創(chuàng)建交由Spring管理”,所以Mybatis的配置文件mybatis-config.xml中不需要再配置數(shù)據(jù)源及事務(wù),在業(yè)務(wù)層service實現(xiàn)時不需要手動地獲取SqlSession以及對應(yīng)的數(shù)據(jù)映射器接口Mapper,通過Spring的注入即可。Spring整合Mybatis的配置文件部分代碼如下:

class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

第二步整合SpringMVC和Spring。由前述可知SpringMVC框架是Spring的基于MVC設(shè)計模型的實現(xiàn),因此單獨(dú)配置一個SpringMVC的配置文件,其主要完成自動掃描控制器、視圖模式、注解的啟動等功能的配置,然后在web.xml文件中配置整合即可。SpringMVC的配置文件部分代碼如下:

class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">

5.2 系統(tǒng)模型

經(jīng)過網(wǎng)站需求的分析,網(wǎng)站的后臺管理功能設(shè)計結(jié)構(gòu)如圖5所示。

圖5 后臺管理功能結(jié)構(gòu)圖

5.3 體系架構(gòu)

J2EE規(guī)范了服務(wù)器端應(yīng)用系統(tǒng)開發(fā)的框架,其核心思想就是組件與分層。其分層主要包括三個方面:表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)層。在實際項目開發(fā)過程中,由于項目的需求與設(shè)計,通常需要擴(kuò)展三層劃分的體系結(jié)構(gòu),一般是拆分原來的三層體系劃分變?yōu)樗膶芋w系劃分,也就是在業(yè)務(wù)邏輯層與數(shù)據(jù)層之間增加一個服務(wù)層。其用于持久層的數(shù)據(jù)操作,表示數(shù)據(jù)庫的持久內(nèi)存存儲對象[11]。

開發(fā)中四層體系結(jié)構(gòu)如圖6所示。

圖6 J2EE四層開發(fā)架構(gòu)圖

5.4 系統(tǒng)實現(xiàn)

在后臺管理系統(tǒng)結(jié)構(gòu)圖中,網(wǎng)站后臺管理總共有四種功能:權(quán)限管理、知識管理、資訊管理、活動管理。所謂的管理就是實現(xiàn)數(shù)據(jù)庫的增刪改查,因為知識、活動、資訊管理都是以權(quán)限管理為基礎(chǔ)的,因此下面主要講述權(quán)限管理功能的實現(xiàn)。

5.4.1 數(shù)據(jù)持久層

MyBatis應(yīng)用程序首先創(chuàng)建SqlSessionFactory實例,其作用相當(dāng)于一個數(shù)據(jù)庫連接池,然后SqlSessionFactory通過配置的XML文件來獲取一個SqlSession。執(zhí)行SQL語句所必須的方法,都包含在SqlSession中,所以通過SqlSession完成對數(shù)據(jù)庫的操作,用完之后需要釋放數(shù)據(jù)庫連接。

5.4.2 服務(wù)層

數(shù)據(jù)訪問采用DAO(數(shù)據(jù)訪問對象)模式[12],DAO是數(shù)據(jù)庫訪問接口,可以從任何一種配置好的數(shù)據(jù)源處獲取數(shù)據(jù)[13]。服務(wù)層(DAO)的使用可以減少業(yè)務(wù)邏輯代碼和數(shù)據(jù)庫訪問代碼之間的耦合度,有利于劃分和分配任務(wù)。這里用權(quán)限管理里面的角色管理舉例,首先定義接口類RoleDao,其定義如下:

public interfaceRoleDao {

//根據(jù)id查詢角色信息

public RolefindRoleById(int id) throws Exception;

//修改角色

public voidmodifyRole(int roleId) throws Exception;

//添加角色

public voidinsertRole(Role role) throws Exception;

//刪除角色

public voiddeleteRole(int id) throws Exception;

然后定義其接口實現(xiàn)類RoleDaoImpl,在接口實現(xiàn)類中實現(xiàn)的RoleDao接口中聲明的方法。根據(jù)id查詢角色信息的方法實現(xiàn)如下:

public Role find RoleById(int id) throws Exception {

SqlSession sqlSession=sqlSessionFactory.openSession();

Role role=sqlSession.selectOne("test.findRoleById", id);

sqlSession.close();

return role;

}

最后在Mybatis的mapper配置文件中添加如下配置即可。

5.4.3 控制層

在增刪改一個用戶信息時,需要一個Form表單來臨時存儲用戶信息表中各個字段的信息,因此需要一個表單類RoleInfoForm。它其實就是一個簡單的JavaBean,并且每個字段都定義了Getter()和Setter()方法,然后直接就可以在Controller的函數(shù)參數(shù)列表中直接寫這個JavaBean對象,Spring會自動進(jìn)行封裝。Controller中代碼如下:

@RequestMapping(value="/roleInfo ",method =RequestMethod.POST)

public String queryRole(RoleForm role,HttpSession session,Model model)

throws UnsupportedEncodingException,

Exception {

}

已經(jīng)在web.xml的文件中配置了請求地址,DispatcherServlet會根據(jù)請求地址把該次請求分派到所寫的Controller類中的方法上。通過注解@Controller注冊所寫的Controller類,@RequestMapping注冊請求的路徑。至此,控制層的功能已經(jīng)實現(xiàn)。

5.4.4 表示層

通過DispatcherServlet可以將頁面的鏈接地址、提交的表單請求轉(zhuǎn)發(fā)到注冊過的Controller類中的方法上,實現(xiàn)整個系統(tǒng)頁面之間的跳轉(zhuǎn)。由于在SpringMVC的配置文件中已經(jīng)配置好了視圖解析器,其解析的文件是ftl文件,所以需要開發(fā)的是ftl文件,而不是JSP文件。

6 結(jié)束語

文中結(jié)合SpringMVC、Spring、Mybatis框架的各自功能和特點,很好地體現(xiàn)了MVC分層開發(fā)的設(shè)計理念,因而有利于應(yīng)用程序的維護(hù)和功能擴(kuò)展,降低每個模塊之間的耦合度,達(dá)到了系統(tǒng)的設(shè)計目標(biāo)和整體要求。

[1] 馮 博,朱穗暉.程序設(shè)計教程[M].北京:清華大學(xué)出版社,2005.

[2] Amstrong E,Ball S,Bodoff S,et al.The J2EE 1.4 tutorial[M].[s.l.]:Sun Micro Systems Inc.,2005:2-25.

[3] 鄔繼成.Struts與Hibernate實用教程[M].北京:電子工業(yè)出版社,2006.

[4] Andrew H.Object-oriented analysis and design[M].Beijing:China Machine Press,2003:17-56.

[5] Linaje M,Preciado J,Sanchez F F.Engineering rich internet application user interfaces over web-models[J].IEEE Internet Computing,2007,11(6):53-59.

[6] 李 剛.輕量級JavaEE企業(yè)應(yīng)用實戰(zhàn)[M].第4版.北京:電子工業(yè)出版社,2015.

[7] 黎永良,崔杜武.MVC設(shè)計模式的改進(jìn)與應(yīng)用[J].計算機(jī)工程,2005,31(9):96-97.

[8] 魏學(xué)松,張育平.IOC框架的研究與設(shè)計[J].計算機(jī)技術(shù)與發(fā)展,2006,16(3):213-216.

[9] Elrad T,Aksit M,Kiczales G,et al.Discussing aspects of AOP[J].Communications of the ACM,2001,44(10):33-38.

[10] 張 宇,王映輝,張翔南.基于Spring的MVC框架設(shè)計與實現(xiàn)[J].計算機(jī)工程,2010,36(4):59-62.

[11] 劉中兵.開發(fā)者突擊:Java Web主流框架整合開發(fā):J2EE+Struts+ Hibernate+ Spring[M].北京:電子工業(yè)出版社,2008.

[12] 賈 昆,甘仞初,高慧穎.數(shù)據(jù)訪問對象模式在企業(yè)應(yīng)用集成中的應(yīng)用[J].計算機(jī)工程與設(shè)計,2006,27(3):373-375.

[13] 王 坤.基于J2EE平臺Spring MVC框架開發(fā)的MIS系統(tǒng)設(shè)計與實現(xiàn)[D].上海:華東師范大學(xué),2008.

Design and Implementation of SSM in Web Application Development

LI Yang

(College of Telecommunications and Information Engineering,Nanjing University of Posts and Telecommunications,Nanjing 210000,China)

In the process of Web application development,the choice of development framework is essential.A good development framework can accelerate the development of Web application,reduce development costs,ease the burden of developer and make the Web application has good expansibility and portability.Framework based on SpringMVC,Spring and Mybatis with better performance and faster development productivity has gradually become the preferred combination of Web application development framework.SpringMVC is a MVC framework,which is in charge of the function of presentation layer like responding to the request.Spring framework plays the part of container,which integrates Mybatis and SpringMVC,and implements the decoupling between layers.Meanwhile,it can make business logic becomes more clear.Mybatis framework is mainly responsible for data persistence layer and complete the operation of database.Taking the rights management module as an example,in order to explain the application of SSM framework in the development of back-stage management system,it provides theoretical guidance for the development of back-stage management system.

SpringMVC;Spring;Mybatis;Web application;framework

2016-03-04

2016-06-15

時間:2016-11-22

國家自然科學(xué)基金資助項目(61271234)

李 洋(1991-),男,碩士研究生,研究方向為衛(wèi)星通信技術(shù)。

http://www.cnki.net/kcms/detail/61.1450.TP.20161122.1227.014.html

TP39

A

1673-629X(2016)12-0190-05

10.3969/j.issn.1673-629X.2016.12.041

猜你喜歡
設(shè)計模式配置文件視圖
“1+1”作業(yè)設(shè)計模式的實踐探索
三維協(xié)同設(shè)計模式下的航天項目管理實踐與展望
互不干涉混用Chromium Edge
基于Zookeeper的配置管理中心設(shè)計與實現(xiàn)
忘記ESXi主機(jī)root密碼怎么辦
交通機(jī)電工程設(shè)計模式創(chuàng)新探討
為View桌面準(zhǔn)備父虛擬機(jī)
5.3 視圖與投影
視圖
Y—20重型運(yùn)輸機(jī)多視圖