• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

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

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

    中圖分類號:TP393.092

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

    1.1 JSM框架的概念

    1.1.1 概述

    首先,JSM不是一個框架,而是多個框架的集成,它是為了實(shí)現(xiàn)web應(yīng)用而采用的開源框架的集合。這種框架可以滿足JAVA EE多層體系結(jié)構(gòu)的開發(fā)目的。JAVA EE不僅是開發(fā)平臺同時也是一個開發(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)主要有:

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

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

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

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

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

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

    用戶通過瀏覽器提交請求,JSF框架的控制層調(diào)用業(yè)務(wù)層邏輯進(jìn)行進(jìn)一步的業(yè)務(wù)處理,業(yè)務(wù)層在處理業(yè)務(wù)時調(diào)用數(shù)據(jù)處理層對業(yè)務(wù)中的數(shù)據(jù)進(jìn)行必要的存儲、修改、刪除或查詢等操作,并逐級返回給JSF框架的控制層,由控制流轉(zhuǎn)到相應(yīng)的頁面,最終由頁面進(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頁面顯示的組件對象,提供轉(zhuǎn)換和校驗(yàn)組件數(shù)據(jù),并能將數(shù)據(jù)傳入服務(wù)端進(jìn)行保存。JSF與Struts最大的區(qū)別就在于JSF本身既是一種技術(shù)同時又是JAVAEE的中間層規(guī)范技術(shù)。因此我認(rèn)為JSF技術(shù)的發(fā)展更會得到體系的有力支持。

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

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

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

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

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

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

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

    3 JSM框架的搭建

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

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

    3.1 示例需求說明

    該示例描述了一個簡單判斷用戶是否存在的功能,步驟如下:

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

    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á)到簡單清晰的目的,對每個層次只使用實(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文件中注冊TestBean,注意在注冊TestBean的時候?qū)pring管理的TestServce作為TestBean的屬性進(jìn)行注冊。因此在TestBean中要定義相同名稱的屬性并且建立屬性的set、get方法。

    3.4.2 配置Spring

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

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

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

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

    3.4.3 配置MyBatis

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

    第二,修改TestDao類的注冊信息。這一步的前提是TestDao類基礎(chǔ)了Mybatis提供的父類SqlSessionDaoSupport。該父類需要屬性sqlSessionTemplate,因此在TestDao類的注冊信息中注入屬性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]羅會波.JSF第一步[M].北京:清華大學(xué)出版社,2014.

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

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

    平和县| 昌图县| 九龙县| 灵璧县| 司法| 调兵山市| 当阳市| 新化县| 合肥市| 长乐市| 易门县| 炎陵县| 阿城市| 合水县| 东明县| 册亨县| 嘉鱼县| 平阴县| 罗田县| 昭平县| 察雅县| 和田县| 仁化县| 宣武区| 温泉县| 五华县| 晋州市| 剑川县| 平阳县| 灵璧县| 从化市| 宜宾县| 吉林省| 汕尾市| 从江县| 阿拉善盟| 澄城县| 浮山县| 汉寿县| 汝南县| 武强县|