亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        JSM框架的介紹和應(yīng)用

        2014-04-29 00:00:00劉小維

        摘 要:本文主要介紹了基于JAVA EE體系下JSF、Spring和MyBatis三個(gè)技術(shù)框架的基本概念以及它們所包含的核心內(nèi)容,重點(diǎn)通過一個(gè)示例描述了三個(gè)技術(shù)的搭建和使用。

        關(guān)鍵詞:SM框架;分層架構(gòu);JSF;Spring;MyBatis

        中圖分類號(hào):TP393.092

        1 JSM框架的介紹和應(yīng)用

        1.1 JSM框架的概念

        1.1.1 概述

        首先,JSM不是一個(gè)框架,而是多個(gè)框架的集成,它是為了實(shí)現(xiàn)web應(yīng)用而采用的開源框架的集合。這種框架可以滿足JAVA EE多層體系結(jié)構(gòu)的開發(fā)目的。JAVA EE不僅是開發(fā)平臺(tái)同時(shí)也是一個(gè)開發(fā)規(guī)范,JAVA EE最大的特點(diǎn)是引入了WEB應(yīng)用。目前企業(yè)應(yīng)用開發(fā)的系統(tǒng)多是采用分層架構(gòu)的模式進(jìn)行設(shè)計(jì),JAVAEE正式基于這種分層架構(gòu)的考慮,是多層的分布式體系結(jié)構(gòu)。

        1.1.2 JAVA EE的架構(gòu)介紹

        JAVA EE的分層結(jié)構(gòu)主要有:

        第一層:客戶端層??蛻魹g覽器段的程序,例如JS腳本程序、嵌入網(wǎng)頁(yè)運(yùn)行的JAVA APPLET程序。主要用到 的技術(shù)有JS、APPLET。

        第二層:應(yīng)用服務(wù)器層。一般情況下,此層包含支持客戶端請(qǐng)求的表示邏輯和業(yè)務(wù)邏輯。表示層由顯示HTML頁(yè)面的JSP頁(yè)面和servlets實(shí)現(xiàn)。業(yè)務(wù)邏輯有兩種實(shí)現(xiàn)方式,一種輕量級(jí)一種重量級(jí)的實(shí)現(xiàn)。輕量級(jí)通過Spring等開源框架實(shí)現(xiàn),重量級(jí)通過RMI對(duì)象和EJB實(shí)現(xiàn)。EJB依靠容器(Container)實(shí)現(xiàn)事務(wù)處理、生命周期和狀態(tài)管理、資源池、安全等問題,簡(jiǎn)而言之,容器就是EJB依賴執(zhí)行的運(yùn)行環(huán)境。主要用到的技術(shù)有:jsp、servlet,jsf框架及規(guī)范。可以說JSF是MVC架構(gòu)的技術(shù)也是一種JAVAEE在中間層提供的一種規(guī)范。

        第三層:后端層。此層是現(xiàn)有應(yīng)用和數(shù)據(jù)倉(cāng)庫(kù)的組合,也稱為企業(yè)信息系統(tǒng)(EIS)層,因?yàn)樗梢园髽I(yè)資源規(guī)劃(ERP)、大型主機(jī)事務(wù)處理、數(shù)據(jù)庫(kù)系統(tǒng)及其它遺留下來的信息系統(tǒng)等許多系統(tǒng)。主要包括JDBC技術(shù)、JAVA持久化API、JTA等。

        1.2 JSM與JAVAEE各層架構(gòu)的對(duì)應(yīng)關(guān)系

        JSM框架中J代表“JSF”框架,它是支持web系統(tǒng)實(shí)現(xiàn)JAVAEE中第二層的表示層邏輯的技術(shù)框架??蚣苤械腟代表“spring”是為了實(shí)現(xiàn)第二層的輕量級(jí)業(yè)務(wù)邏輯的技術(shù)框架。由于“spring”的認(rèn)可度非常高,國(guó)內(nèi)眾多web應(yīng)用都采用這種框架來實(shí)現(xiàn)系統(tǒng)的業(yè)務(wù)邏輯層??蚣苤械腗代表“mybatis”是為了實(shí)現(xiàn)第三層后端層的技術(shù)框架。

        JSM工作的整體流程開始于用戶的請(qǐng)求,結(jié)束在對(duì)請(qǐng)求的相應(yīng),而中間的過程就是對(duì)該業(yè)務(wù)的處理過程。

        用戶通過瀏覽器提交請(qǐng)求,JSF框架的控制層調(diào)用業(yè)務(wù)層邏輯進(jìn)行進(jìn)一步的業(yè)務(wù)處理,業(yè)務(wù)層在處理業(yè)務(wù)時(shí)調(diào)用數(shù)據(jù)處理層對(duì)業(yè)務(wù)中的數(shù)據(jù)進(jìn)行必要的存儲(chǔ)、修改、刪除或查詢等操作,并逐級(jí)返回給JSF框架的控制層,由控制流轉(zhuǎn)到相應(yīng)的頁(yè)面,最終由頁(yè)面進(jìn)行結(jié)果的呈現(xiàn)。

        2 JSM的詳細(xì)介紹

        JSF是JAVAServer Faces的縮寫,是Sun公司在JCP(Java Community Process)下JSR127中倡導(dǎo)的技術(shù),目前已列入java EE中間視圖層的規(guī)范技術(shù)。它提供jsp頁(yè)面顯示的組件對(duì)象,提供轉(zhuǎn)換和校驗(yàn)組件數(shù)據(jù),并能將數(shù)據(jù)傳入服務(wù)端進(jìn)行保存。JSF與Struts最大的區(qū)別就在于JSF本身既是一種技術(shù)同時(shí)又是JAVAEE的中間層規(guī)范技術(shù)。因此我認(rèn)為JSF技術(shù)的發(fā)展更會(huì)得到體系的有力支持。

        JSF的典型特征是以用戶界面組件為中心,建立在Servlet基礎(chǔ)上,基于jsf的應(yīng)用程序也是web應(yīng)用,它實(shí)現(xiàn)的是MVC模型MODEL2的形式。

        Spring是針對(duì)Java EE容器服務(wù)及Java EE API提供抽象和集成支持的框架技術(shù),它的出現(xiàn)為實(shí)施JAVA EE降低了門檻,Srping是非侵入式框架,也就是說業(yè)務(wù)本身的代碼不會(huì)與Spring框架之間有依賴關(guān)系。

        Spring框架像一個(gè)模板,它可以和MVC框架一起使用,同時(shí)也含有自己的MVC框架,它可以管理事物也同時(shí)提供遠(yuǎn)程調(diào)用的接口,每個(gè)部分都可以單獨(dú)運(yùn)用到自身的系統(tǒng)中。下圖為Spring的架構(gòu)圖,圖中主要列出了組成Spring框架的功能模塊。

        Spring框架的核心技術(shù)主要有兩個(gè),即控制反轉(zhuǎn)容器(IOC)和面向切面編程技術(shù)。

        控制反轉(zhuǎn)(IOC)也被稱為依賴注入(DI),目的是為了處理對(duì)象之間的依賴關(guān)系,其他對(duì)象只能通過構(gòu)造方法參數(shù)、工廠方法參數(shù)、對(duì)象屬性的方法注入到當(dāng)前對(duì)象的實(shí)例中去。ApplicationContext對(duì)象是IOC容器的接口用來負(fù)責(zé)對(duì)象的實(shí)例化,配置、和組裝讀取配置的元數(shù)據(jù),配置元數(shù)據(jù)以XML格式表示,Java注釋,或Java代碼。依賴注入的兩種主要方式是通過構(gòu)造方法注入和setter方法注入。

        向切面編程技術(shù)是試圖用另外一種方式去思考程序結(jié)構(gòu)以便補(bǔ)充面向方向編程的內(nèi)容。此外AOP提供了一個(gè)非常好的中間件解決方案。切面的含義就是橫切面,代表所有類的功能,這些功能可以統(tǒng)一提取出來,通過DI方式注入到每個(gè)類中進(jìn)行執(zhí)行,而對(duì)于通用功能的管理則可以統(tǒng)一進(jìn)行。AOP的實(shí)現(xiàn)原理是動(dòng)態(tài)代理技術(shù),即通過代理對(duì)象進(jìn)行對(duì)目標(biāo)方法的調(diào)用,同時(shí)控制調(diào)用方法的前后業(yè)務(wù)邏輯。Spring AOP提供了定義切入點(diǎn)、切入點(diǎn)前后等配置方式,同時(shí)通過AspectJ表達(dá)式來定義哪些類執(zhí)行切入的功能。常用到AOP的地方是事物管理、安全檢查、緩存、對(duì)象池管理等系統(tǒng)的通用功能,

        MyBatis的前身是IBatis,一個(gè)apache組織的開源項(xiàng)目,后因?yàn)轫?xiàng)目遷移到了google,更名為MyBatis。它是支持普通SQL查詢,存儲(chǔ)過程和高級(jí)映射的優(yōu)秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及結(jié)果集的檢索。MyBatis使用簡(jiǎn)單的XML或注解用于配置和原始映射,將接口和Java的POJOs(Plain Old Java Objects,普通的Java對(duì)象)映射成數(shù)據(jù)庫(kù)中的記錄。與Hibernate項(xiàng)目,MyBatis可以更加靈活的配置sql,這對(duì)于靈活多變的業(yè)務(wù)數(shù)據(jù)處理無(wú)疑是最佳的選擇,當(dāng)然Hibernate和MyBatis各有各的優(yōu)勢(shì),在此不進(jìn)行二者之間的對(duì)比,至于應(yīng)用開發(fā)應(yīng)該選擇哪一個(gè)作為持久化層的框架,我認(rèn)為還是要依據(jù)項(xiàng)目自身的特點(diǎn)而定。

        3 JSM框架的搭建

        JSM框架的搭建主要是解決他們之間的關(guān)聯(lián)問題,也就是三個(gè)框架在同一個(gè)系統(tǒng)中使用時(shí)的配置方式。

        接下來將舉一個(gè)小例子來具體介紹JSM之間搭建。

        3.1 示例需求說明

        該示例描述了一個(gè)簡(jiǎn)單判斷用戶是否存在的功能,步驟如下:

        (1)用戶在頁(yè)面中輸入用戶名;(2)用戶點(diǎn)擊提交按鈕;(3)系統(tǒng)在數(shù)據(jù)庫(kù)中查找相關(guān)的用戶名。若存在到則返回歡迎信息,若不存在則返回找不到的提示信息;(4)系統(tǒng)返回歡迎頁(yè)面,顯示用戶是否存在的提示信息。

        3.2 環(huán)境搭建

        開發(fā)工具:Eclise3.4;JAVA版本:JDK1.5;應(yīng)用服務(wù)器:Tomcat6.0;JSF1.2;Spring3.0.5;MyBatis3.1.1。

        3.3 示例詳細(xì)設(shè)計(jì)

        依據(jù)項(xiàng)目分層設(shè)計(jì)架構(gòu)模式,該示例主要分三層設(shè)計(jì),即視圖層、業(yè)務(wù)層、持久化層。(注意:為了達(dá)到簡(jiǎn)單清晰的目的,對(duì)每個(gè)層次只使用實(shí)現(xiàn)類進(jìn)行表述,在實(shí)際開發(fā)過程中往往需要面向接口進(jìn)行編程。)

        3.4 JSM框架配置

        3.4.1 配置JSF框架

        首先,在web.xml文件中配置JSF,內(nèi)容如下:

        其次,在web.xml文件中配置faces-config.xml文件的引用。

        第三,在faces-config.xml文件中配置JSF和Spring的關(guān)聯(lián)關(guān)系。

        第四,在faces-config.xml文件中注冊(cè)TestBean,注意在注冊(cè)TestBean的時(shí)候?qū)pring管理的TestServce作為TestBean的屬性進(jìn)行注冊(cè)。因此在TestBean中要定義相同名稱的屬性并且建立屬性的set、get方法。

        3.4.2 配置Spring

        首先,在web.xml中配置監(jiān)聽器。

        第二,在web.xml中配置spring配置文件的引用。

        第三,在spring配置文件中配置數(shù)據(jù)源。

        第四,在beans.xml文件中注冊(cè)TestService類、TestDao類,且通過依賴注入的方式將TestDao作為屬性注入到TestService類中,如下所示:

        3.4.3 配置MyBatis

        首先,在beans.xml文件中配置MyBatis。

        第二,修改TestDao類的注冊(cè)信息。這一步的前提是TestDao類基礎(chǔ)了Mybatis提供的父類SqlSessionDaoSupport。該父類需要屬性sqlSessionTemplate,因此在TestDao類的注冊(cè)信息中注入屬性sqlSessionTemplate。

        3.4.4 示例運(yùn)行

        第一,輸入用戶名,點(diǎn)擊提交按鈕。

        第二,顯示歡迎信息。

        參考文獻(xiàn):

        [1]Spring Framework Reference Documentation[J/OL].http://docs.spring.io/spring/docs/3.2.10.RELEASE/spring-framework-reference/htmlsingle/#jsf-delegatingvariableresolver.

        [2]MyBatis Version:3.2.7 Last Published:2014.http://mybatis.github.io/mybatis-3/index.html.

        [3]羅會(huì)波.JSF第一步[M].北京:清華大學(xué)出版社,2014.

        作者簡(jiǎn)介:劉小維(1982.12-),女,滿族,北京人,軟件工程師,管理學(xué)學(xué)士,研究方向:Java企業(yè)級(jí)應(yīng)用開發(fā)、軟件發(fā)平臺(tái)研發(fā)。

        作者單位:中國(guó)金融電子化公司,北京 100054

        老男人久久青草AV高清| 人妻av中文字幕久久| 伊人久久大香线蕉av不卡| 亚洲av有码在线天堂| 被暴雨淋湿爆乳少妇正在播放| 中文字幕乱码人妻在线| 精品久久久久久无码专区| 四川老熟女下面又黑又肥| 国产亚洲欧美精品一区| 中文字幕亚洲视频三区| 久久亚洲精品中文字幕| 免费观看性欧美大片无片| 无码av免费永久免费永久专区| 中文字幕一区二区三区精品在线 | 国产精品电影久久久久电影网| 在线观看一区二区蜜桃| 日韩av无码一区二区三区不卡| 国产精品卡一卡二卡三| 亚洲国产字幕| 亚州中文热码在线视频| 99精品久久精品一区二区| japanese无码中文字幕| 精品亚洲一区二区视频| av免费在线播放视频| 护士人妻hd中文字幕| 亚洲婷婷丁香激情| 国产无套粉嫩白浆内精| 伊人久久大香线蕉午夜av| 亚洲视频一区| 无码8090精品久久一区| 成人av综合资源在线| 色欲色欲天天天www亚洲伊| 四虎成人免费| 开心激情网,开心五月天| 久久精品丝袜高跟鞋| 日韩精品中文字幕无码一区| 精品国产你懂的在线观看| 国产自产二区三区精品| 小荡货奶真大水真多紧视频| 2022国内精品免费福利视频| 一区二区三区在线观看人妖|