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

        ?

        整合ESMSH框架的Java EE應(yīng)用架構(gòu)

        2018-10-18 10:11:06,,,2
        計算機(jī)測量與控制 2018年10期
        關(guān)鍵詞:考核

        ,, ,2

        (1.咸陽師范學(xué)院 計算機(jī)學(xué)院,陜西 咸陽 712000;2.西安電子科技大學(xué) 智能感知與圖像理解教育部重點(diǎn)實驗室,西安 710071)

        0 引言

        Java EE是以Java為主進(jìn)行企業(yè)級應(yīng)用開發(fā)的技術(shù)平臺,由于Java EE具有跨平臺、穩(wěn)定性高、兼容性好、技術(shù)自由搭配度高等特點(diǎn),所以一直受到企業(yè)級應(yīng)用開發(fā)的青睞。近年來,為了進(jìn)一步解決傳統(tǒng)Java EE開發(fā)所具有的組件依賴性高、開發(fā)難度大、部署與維護(hù)困難、用戶交互性差等問題,出現(xiàn)了以Struts2、Hibernate、Spring、MyBaties為主的輕量級框架,目的是為了簡化Java EE服務(wù)器端的開發(fā)過程。在客戶端出現(xiàn)了Ext JS、BootStrap、Easy UI等JavaScript框架,目的是為了提高Web應(yīng)用的富客戶端體驗。文獻(xiàn)[1-2]研究了Struts2+Spring+Hibernate為主的Java EE應(yīng)用開發(fā)方式,并應(yīng)用到高校實驗室管理和煤炭企業(yè)生產(chǎn)統(tǒng)計管理系統(tǒng)的設(shè)計開發(fā)中,闡述了其中的核心技術(shù)。文獻(xiàn)[3-5]主要以Struts2框架為研究對象,討論了在Java EE控制層的具體實現(xiàn)過程。文獻(xiàn)[6]提出了以Hibernate框架為對象關(guān)系映射(object relation mapping,ORM)實現(xiàn)方式的數(shù)據(jù)持久化層的設(shè)計方式。文獻(xiàn)[7-8]研究了Ext JS框架與服務(wù)器端輕量級框架的整合,并以動態(tài)樹和地圖信息加載為例具體描述了Ext JS的應(yīng)用。

        雖然上述學(xué)者的研究成果在某個系統(tǒng)設(shè)計過程中進(jìn)行了實驗驗證,但筆者認(rèn)為還存在兩個主要問題:1)Struts2的高危安全漏洞。由于目前Struts2在國內(nèi)經(jīng)融、政務(wù)、大中型互聯(lián)網(wǎng)公司、高校等領(lǐng)域的應(yīng)用中廣泛存在,Struts2存在的遠(yuǎn)程代碼執(zhí)行漏洞[9]爆出后,對相關(guān)領(lǐng)域帶來了不少的損失。雖然Apache官方給出了漏洞的解決方案,但是用戶逐漸喪失了對Struts2的信任,這種情況在2017初Struts2再次爆出高危漏洞后尤為明顯;2)Ext JS的執(zhí)行效率問題。雖然Ext JS 框架提供了功能強(qiáng)大的客戶端組件,能夠簡化Java EE客戶端的開發(fā),但是它是一個重量級的前端框架,在某些復(fù)雜頁面下,加載速度和執(zhí)行效果不盡如人意。

        本文在前人研究基礎(chǔ)上,以Easy UI、Spring MVC、Spring、Hibernate等框架為基礎(chǔ),提出了一個基于ES2SH框架的Java EE應(yīng)用架構(gòu)。該架構(gòu)利用Easy UI創(chuàng)建表示層,Spring MVC創(chuàng)建控制層,采用JSON作為表示層與控制層之間傳輸數(shù)據(jù)的格式。利用Hibernate創(chuàng)建數(shù)據(jù)持久層,通過Spring管理控制層與業(yè)務(wù)層、業(yè)務(wù)層與持久層之間組件的依賴關(guān)系,采用可擴(kuò)展標(biāo)記語言(extensible markup language,XML) 文件+注解的方式進(jìn)行Spring MVC、Spring和Hibernate的集成。將該架構(gòu)應(yīng)用到高等院校目標(biāo)考核管理系統(tǒng)的設(shè)計與實施中,詳細(xì)描述了該架構(gòu)應(yīng)用的關(guān)鍵技術(shù),為以該整合框架應(yīng)用到其他領(lǐng)域的應(yīng)用開發(fā)提供了一定的借鑒。

        1 相關(guān)技術(shù)

        Easy UI是一組基于JQuery和超文本標(biāo)記語言(HyperText Markup Language,HTML)5的用戶接口(user interface,UI)插件集合體,只需要一些簡單的HTML標(biāo)簽(不需要過多的JavaScript和層疊樣式表(cascading style sheets,CSS)),即可設(shè)計出功能豐富且美觀的UI界面。具有良好的瀏覽器兼容性、開源、輕量級、易于掌握等優(yōu)點(diǎn)[10]。Spring MVC是Spring框架中用于實現(xiàn)Web功能的模塊,它根據(jù)DispatcherServlet和配置文件,實現(xiàn)視圖、控制器和模型之間的分離[11]。Spring 利用控制反轉(zhuǎn)容器(Inversion of Control,IOC)創(chuàng)建并管理對象之間的依賴關(guān)系;通過面向方面編程(aspect oriented programming,AOP)實現(xiàn)業(yè)務(wù)邏輯與公共服務(wù)邏輯相分離。Hibernate是基于Java數(shù)據(jù)庫連接(Java DataBase Connectivity,JDBC)的ORM框架,能實現(xiàn)對象與數(shù)據(jù)庫表之間的映射[12-13],通過Hibernate查詢語言(hibernate query language,HQL)以簡化復(fù)雜結(jié)構(gòu)化查詢語言(structure query language,SQL)的編寫,提高數(shù)據(jù)庫開發(fā)效率。

        2 ESMSH整合架構(gòu)

        在上述框架原理上,建立滿足MVC模式的5層Java EE分層架構(gòu)模型,如圖1所示。表示層由Easy UI、視圖組件構(gòu)成,發(fā)送的請求統(tǒng)一由Spring MVC的前端控制器DispatcherServlet接收,根據(jù)配置文件將請求轉(zhuǎn)發(fā)到某個具體的Controller組件。Controller調(diào)用Service組件執(zhí)行

        業(yè)務(wù)邏輯,以ModelAndView組件返回邏輯視圖,DispatcherServlet調(diào)用ViewResovler解析出物理視圖并填充Model需要顯示的數(shù)據(jù)響應(yīng)客戶端請求。業(yè)務(wù)邏輯層通過Service接口向Controller組件提供服務(wù),具體的業(yè)務(wù)邏輯處理和計算由Service對象完成,Service對象由Spring IOC容器管理。數(shù)據(jù)持久層由數(shù)據(jù)訪問對象(data access object,DAO)模式與Hibernate框架搭建,DAO接口定義持久化邏輯并作為業(yè)務(wù)邏輯層訪問的入口,DAO對象封裝Hibernate通過映射文件完成持久化對象(persistent object,PO)與數(shù)據(jù)存儲層之間的交互,DAO對象由Spring IOC容器管理。數(shù)據(jù)存儲層負(fù)責(zé)存儲應(yīng)用系統(tǒng)所需要長久保存的數(shù)據(jù)以及之間的關(guān)聯(lián)關(guān)系。

        圖1 整合ESMSH框架的Java EE架構(gòu)

        3 ESMSH架構(gòu)在目標(biāo)考核管理系統(tǒng)中的應(yīng)用

        3.1 目標(biāo)考核系統(tǒng)簡介

        目標(biāo)責(zé)任考核是高等院校行政管理的一項重要工作,通過制定、落實、執(zhí)行、監(jiān)督、分析各二級學(xué)院、職能部門的各項工作任務(wù)和進(jìn)展情況,針對不足找出差距,提出改進(jìn)措施,從而推動學(xué)校又快又好的發(fā)展。通過分析目標(biāo)考核工作的具體流程,結(jié)合上述ESMSH框架設(shè)計了目標(biāo)考核管理信息系統(tǒng),主要包括基礎(chǔ)數(shù)據(jù)、教工信息管理、指標(biāo)管理、報表管理、信息查詢和系統(tǒng)維護(hù)等模塊。其中基礎(chǔ)數(shù)據(jù)包括教育教學(xué)、科學(xué)研究、師資隊伍建設(shè)、黨團(tuán)建設(shè)、學(xué)生工作5個大方面覆蓋的所有基本數(shù)據(jù)。例如教育教學(xué)包括教務(wù)任務(wù)、課程設(shè)計、畢業(yè)設(shè)計、教學(xué)競賽、教改項目、教學(xué)獲獎、大學(xué)生科研訓(xùn)練、教育實習(xí)基地、“互聯(lián)網(wǎng)+”大賽等相關(guān)數(shù)據(jù)。教工信息管理是指教工對自己基本信息的維護(hù),包括工作經(jīng)歷、職稱變動、部門調(diào)動、崗位聘任結(jié)果、個人榮譽(yù)、密碼修改等操作。指標(biāo)管理實現(xiàn)對指標(biāo)的增、刪、改、查。指標(biāo)是考核的一個觀測點(diǎn),分為一級指標(biāo)、二級指標(biāo)和三級指標(biāo)。例如“英語四級通過率”是一個三級指標(biāo),屬于“教學(xué)質(zhì)量”這個二級指標(biāo),對應(yīng)的一級指標(biāo)是“教育教學(xué)”。報表管理實現(xiàn)對目標(biāo)任務(wù)下達(dá)情況、按指標(biāo)按部門實現(xiàn)指標(biāo)完成情況、年度考核結(jié)果等數(shù)據(jù)實現(xiàn)導(dǎo)出顯示。信息查詢主要針對各二級學(xué)院領(lǐng)導(dǎo)查看本單位目標(biāo)任務(wù)完成情況。職能部門領(lǐng)導(dǎo)按照分管的一級指標(biāo)查看二級學(xué)院的完成情況。校領(lǐng)導(dǎo)按照各種組合條件(以學(xué)院、工號、學(xué)位、職稱、聘任崗位、指標(biāo)等)查看任務(wù)完成情況。系統(tǒng)維護(hù)實現(xiàn)數(shù)據(jù)庫的備份與還原、系統(tǒng)公告的發(fā)布、權(quán)限角色信息的管理、相關(guān)參數(shù)的配置等。

        3.2 架構(gòu)實現(xiàn)的關(guān)鍵技術(shù)

        3.2.1 利用泛型DAO+Hibernate實現(xiàn)持久層

        持久層的功能是利用Hibernate框架完成關(guān)系數(shù)據(jù)與對象的轉(zhuǎn)換,以面向?qū)ο蠓绞皆L問關(guān)系數(shù)據(jù)庫。主要是通過XML形式的映射文件或在POJO形式的實體類中添加注解,實現(xiàn)對象屬性與對應(yīng)表的字段、對象之間的依賴關(guān)系與對應(yīng)數(shù)據(jù)表之間的主、外鍵約束之間進(jìn)行映射[14]。具體實現(xiàn)包括兩個核心步驟:第一,創(chuàng)建泛型DAO接口及其實現(xiàn)類。由于每個實體類的持久化操作都具有相似的代碼,為了提高代碼的復(fù)用率,定義一個泛型的DAO接口-BaseDAO,其中定義所有持久化對象基本的CRUD方法[15]。BaseHibernateDAO為BaseDAO的實現(xiàn)類,該類繼承HibernateDaoSupport實現(xiàn)BaseDAO中的所有方法。HibernateDaoSupport是Spring支持Hibernate的DAO工具,通過其關(guān)聯(lián)的HibernateTemplate模板類可以在無需打開或關(guān)閉Session對象的情況下,實現(xiàn)數(shù)據(jù)庫的CRUD操作,提高了持久層的開發(fā)效率。第二,創(chuàng)建并配置每個實體類對應(yīng)的DAO接口及其實現(xiàn)類。某個實體類的DAO接口繼承BaseDAO接口,只需定義該實體類特有的持久化方法,實現(xiàn)類繼承BaseHibernateDAO完成特有的持久化方法,最后利用@Repository注解將DAO在Spring IOC容器中進(jìn)行配置。上述操作需要的類圖如圖2所示。

        圖2 持久層類圖關(guān)系

        3.2.2 利用Spring IOC+AOP實現(xiàn)業(yè)務(wù)層

        業(yè)務(wù)層完成系統(tǒng)的核心邏輯,包括兩類:與業(yè)務(wù)計算相關(guān)的邏輯和與業(yè)務(wù)計算正交的公共邏輯(例如日志、權(quán)限等)。對于業(yè)務(wù)計算邏輯采用接口分離原則進(jìn)行設(shè)計,首先定義Service邏輯接口定義組件的業(yè)務(wù)功能,作為控制層Controller組件的調(diào)用入口;定義ServiceImp提供該組件的實現(xiàn)并依賴持久層的若干DAO 組件獲取業(yè)務(wù)計算需要的持久化數(shù)據(jù),DAO 對象由Spring IOC創(chuàng)建并注入。然后通過@Service注解將Service組件納入Spring IOC容器管理。最后通過聲明式注解為業(yè)務(wù)邏輯方法添加事務(wù)控制。啟用聲明式事務(wù)需要在Spring配置文件中添加如下代碼:

        針對與業(yè)務(wù)計算正交的公共邏輯采用AOP方式實現(xiàn)。將每個公共邏輯作為一個切面而定義,對于需要公共邏輯的業(yè)務(wù)邏輯采用正交織入的方式執(zhí)行,這樣便于公共邏輯的修改與維護(hù),節(jié)省代碼量。目標(biāo)考核系統(tǒng)中的登錄驗證、權(quán)限驗證、日志記錄等操作都采用AOP的方式來實現(xiàn),以權(quán)限驗證為例進(jìn)行說明。首先,在基于角色的訪問控制(role-based access control,RBAC)理論[16]基礎(chǔ)上定義教師賬戶類、部門賬戶類、角色類、權(quán)限類。系統(tǒng)所設(shè)計的登錄帳戶包括教師賬戶和部門賬戶兩種類型,教師賬戶對應(yīng)教師角色具有教師信息管理模塊的所有權(quán)限;部門賬戶對應(yīng)教師以外的相應(yīng)角色,具有教師信息管理模塊以外的其它相應(yīng)權(quán)限。這樣設(shè)計的優(yōu)點(diǎn)有兩個:(1)減少了教師賬戶的角色數(shù)量,從而也就減少了教師賬戶的權(quán)限數(shù),便于操作與管理;(2)部門賬戶不再和某個具體的教師關(guān)聯(lián),同一部門里的任何一個教工只要知道部門賬戶,就可以執(zhí)行相關(guān)的功能,便于考核工作的開展。然后,通過實現(xiàn)HandlerInterceptor接口定義攔截器,重寫preHandle方法,該方法在執(zhí)行Controller之前執(zhí)行。具體的權(quán)限驗證流程如圖3所示,對應(yīng)的代碼如下所示:

        圖3 preHandle方法執(zhí)行流程圖

        public class PermissionInterceptor implements HandlerInterceptor

        { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) throws Exception {

        User user=(User)request.getSession().getAttribute("user");

        String currentURL=getURL(request);

        if (user == null) {

        if("user/userController_login".startsWith(currentURL))

        return true;

        else {

        response.sendRedirect("login.jsp");

        return false;

        } }

        // 用戶登錄后判斷權(quán)限

        else {

        //對退出操作對應(yīng)的Controller進(jìn)行放行 if("user/userController_loginOut".startsWith(currentURL))

        return true;

        else {

        if(user instanceof UserVO) {

        UserVO loginedUser=(UserVO)user;

        if (loginedUser.hasPermission(currentURL)) {

        //用戶擁有權(quán)限就放行

        return true;

        } else {

        //如果沒有權(quán)限就攔截

        response.sendRedirect("noPermission.jsp");

        return false; } }

        else {

        // 如果當(dāng)前登錄用戶是部門賬戶,則判斷

        部門賬戶的權(quán)限,判斷邏輯同上。

        ………………….

        }

        }}

        3.2.3 利用Spring MVC實現(xiàn)控制層

        控制層充當(dāng)MVC模式中的控制器,負(fù)責(zé)接收表示層數(shù)據(jù)交由業(yè)務(wù)層進(jìn)行數(shù)據(jù)處理,根據(jù)請求結(jié)果調(diào)用對應(yīng)的視圖數(shù)據(jù)進(jìn)行響應(yīng)。具體實現(xiàn)過程包括以下步驟:首先在web.xml文件中配置前端控制器,由Web容器在啟動時創(chuàng)建前端控制器實例,它負(fù)責(zé)給Controller分派表示層請求,并執(zhí)行視圖解析。然后定義spring-mvc.xml文件,完成注解掃描、處理器映射器、處理器適配器、視圖解析器的配置。注解可以簡化XML的配置,處理器映射器和處理器適配器負(fù)責(zé)映射前端控制器轉(zhuǎn)發(fā)給controller的映射策略。視圖解析器負(fù)責(zé)解析Controller返回的ModelAndView組件,形成特定形式的視圖組件。執(zhí)行順序如圖4所示[17]。最后創(chuàng)建Controller組件調(diào)用業(yè)務(wù)層組件。本系統(tǒng)采用無侵入式定義,將控制器當(dāng)作普通的JavaBean,通過@Controller對控制器進(jìn)行標(biāo)注,在相關(guān)方法上標(biāo)注@RequestMapping并注明訪問該方法的URL后綴。

        圖4 Spring MVC執(zhí)行流程

        3.2.4 利用Easy UI+JSP實現(xiàn)表示層

        表示層為用戶提供交互操作并展示W(wǎng)eb應(yīng)用的界面。為提高用戶交互體驗,便于模塊化開發(fā),本架構(gòu)以Easy UI+JSP作為表示層開發(fā)的核心組件。首先,在JSP頁面引入Easy UI核心JS文件和CSS文件,包括jquery.min.js、jquery.easyui.min.js、中文提示信息庫、核心UI文件和圖標(biāo)文件等。然后,根據(jù)模塊功能定義獨(dú)立的JS文件,在該文件定義定義各種EasyUI函數(shù),這樣可以分離HTML與JavaScript代碼,便于開發(fā)與維護(hù)。以招生就業(yè)處管理員給各二級學(xué)院下達(dá)綜合指標(biāo)目標(biāo)任務(wù)的頁面為例,如圖5所示。左側(cè)通過樹形控件顯示當(dāng)前登錄用戶的權(quán)限菜單,右側(cè)主要通過加載Datagrid控件以二維表格形式顯示各二級學(xué)院對應(yīng)招生就業(yè)工作三級指標(biāo)的任務(wù)分值、年份以及審核狀態(tài)。表格中的數(shù)據(jù)是在用戶點(diǎn)擊相應(yīng)權(quán)限菜單后,利用Ajax請求異步訪問Web服務(wù)器獲取的,并且在返回表示層前,控制層通過jackson序列化Java對象為標(biāo)準(zhǔn)JSON格式。為了提高用戶的可操行,設(shè)置Datagrid單元格為可編輯性,在一個頁面中即可完成對各二級學(xué)院按三級指標(biāo)下達(dá)任務(wù)數(shù)據(jù),點(diǎn)擊“保存”按鈕將數(shù)據(jù)傳送到服務(wù)器端保存。按鈕觸法事件對應(yīng)的JavaScript代碼如下所示。

        圖5 目標(biāo)任務(wù)下達(dá)頁面

        function accept(){

        var ids=""; //修改行的指標(biāo):指標(biāo)值

        var index = editIndex;

        if (endEditing()){

        (' dg').datagrid('acceptChanges').datagrid('unselectAll');} //表字段取出放入數(shù)組中

        var data = (" dg").datagrid('getData');

        for(var item in data.rows[index]){

        if(item!="ejxy" && item!="status" && item!="year"){

        ids+=item+":"+data.rows[index][item]+",";

        }}

        .post("assignTask_StudentPartyWork_update",{"ids":ids},function(data){

        if(data!=null){

        (" dg").datagrid('reload','assignTask_StudentPartyWork_viewJson');

        }

        },'json');}

        4 結(jié)束語

        在對Easy UI、Spring MVC、Spring和Hibernate框架分析的基礎(chǔ)上,提出基于ESMSH框架的Java EE應(yīng)用架構(gòu)。將該架構(gòu)應(yīng)用到目標(biāo)考核管理系統(tǒng)的開發(fā)實踐中,闡述了架構(gòu)實現(xiàn)的核心技術(shù)。以ESMSH架構(gòu)所實現(xiàn)的目標(biāo)考核管理系統(tǒng)已在咸陽師范學(xué)院各職能部門、二級學(xué)院和全體教師之間展開運(yùn)行,已順利完成了2016、2017年度的目標(biāo)考核工作,全面提升了學(xué)校目標(biāo)考核工作的信息化水平,取得了較好的滿意度,表明本文所提出的Java EE架構(gòu)穩(wěn)定、可靠。下一步準(zhǔn)備在該架構(gòu)基礎(chǔ)上引入微服務(wù)思想,細(xì)化基礎(chǔ)數(shù)據(jù)部分,并為學(xué)校的其他業(yè)務(wù)工作服務(wù)。

        猜你喜歡
        考核
        觀察能力大考核
        內(nèi)部考核
        童話世界(2020年10期)2020-06-15 11:53:22
        “表里不一”如何識別——富平增強(qiáng)考核洞察力
        考核偏向:錯把經(jīng)過當(dāng)結(jié)果
        創(chuàng)新完善機(jī)制 做實做優(yōu)考核
        師德考核“ 量化”實踐與思考
        展演期間基本功考核
        影劇新作(2017年4期)2017-03-22 05:47:21
        如何考核院長是難點(diǎn)
        公立醫(yī)院 如何考核?
        OSCE在中醫(yī)學(xué)畢業(yè)生考核中的應(yīng)用
        欧美巨大巨粗黑人性aaaaaa| 国产国拍亚洲精品午夜不卡17| 亚洲精品二区中文字幕| 国产熟女自拍视频网站| 久久久亚洲精品蜜臀av| 在线观看一区二区三区视频| 二区三区日本高清视频| 亚洲桃色视频在线观看一区 | 国产女主播福利一区二区| 亚洲youwu永久无码精品| 中文字幕网伦射乱中文| 精品日产卡一卡二卡国色天香| 国产黄三级三·级三级| 精精国产xxx在线视频app| 伊人不卡中文字幕在线一区二区| 久久蜜臀av一区三区| 精品人妻av一区二区三区四区| 国产综合精品久久99之一| 亚洲精品国产精品国自产| 三男一女吃奶添下面| 精品中文字幕制服中文| 亚洲中文字幕久久精品蜜桃| 国产成人午夜福利在线观看者| 欧美日韩国产成人综合在线影院 | 欧美xxxx做受欧美| 国产suv精品一区二区883| 日本大片免费观看完整视频| 亚洲αv在线精品糸列| 国产91成人自拍视频| 久久午夜福利电影| 在熟睡夫面前侵犯我在线播放| 欧美在线专区| 性色av一区二区三区密臀av| 成年人一区二区三区在线观看视频| 人妻少妇偷人精品无码| 日本道精品一区二区三区| 五十路熟久久网| 中文字幕av久久激情亚洲精品| 五月激情四射开心久久久| 色天使综合婷婷国产日韩av| 精品一级毛片|