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

?

基于SSH框架的JavaEE項(xiàng)目代碼生成工具的研究與實(shí)現(xiàn)

2018-01-11 23:59朱海明
關(guān)鍵詞:代碼生成

朱海明

摘要:本文分析了基于SSH框架的輕量型Java EE項(xiàng)目的特點(diǎn),實(shí)現(xiàn)了由表格驅(qū)動(dòng)的SSH框架代碼生成工具。開發(fā)人員設(shè)計(jì)好數(shù)據(jù)庫(kù)表格結(jié)構(gòu)作為工具的輸入部分,然后由代碼生成工具自動(dòng)生成SSH項(xiàng)目中的Spring、Struts、Hibernate等配置文件和Java EE項(xiàng)目代碼。該工具能加快應(yīng)用系統(tǒng)開發(fā)效率、快速展現(xiàn)系統(tǒng)原型,生產(chǎn)中具有顯著的現(xiàn)實(shí)意義。

關(guān)鍵詞:SSH框架;Java EE;代碼生成

中圖分類號(hào):TP311.52 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2017)11-0057-02

基于SSH的WEB應(yīng)用開發(fā)過(guò)程當(dāng)中,從設(shè)計(jì)數(shù)據(jù)庫(kù)物理結(jié)構(gòu)至生成系統(tǒng)原型,存在web.xml、Spring、Struts和Hibernate等大量配置文件,過(guò)程繁瑣且容易出錯(cuò);另一方面,需要編寫實(shí)體類、數(shù)據(jù)操作接口/類、服務(wù)接口/類、視圖類和WEB頁(yè)面,工作內(nèi)容重復(fù)、代碼量大、可視化開發(fā)工具缺乏,對(duì)軟件開發(fā)自動(dòng)化支持不足。

1 基于SSH框架的Java EE項(xiàng)目架構(gòu)

1.1 JavaEE架構(gòu)基本理論

根據(jù)Java EE應(yīng)用程序架構(gòu)[1],Web項(xiàng)目中三層架構(gòu)(如圖1所示)將整個(gè)業(yè)務(wù)應(yīng)用劃分為:表示層(Presentation Layer)、業(yè)務(wù)邏輯層(Business Logic Layer)、數(shù)據(jù)訪問(wèn)層(Data Access Layer)三層。數(shù)據(jù)訪問(wèn)層負(fù)責(zé)數(shù)據(jù)庫(kù)訪問(wèn),完成數(shù)據(jù)增刪查改等工作;業(yè)務(wù)邏輯層負(fù)責(zé)信息系統(tǒng)的業(yè)務(wù)邏輯處理,調(diào)用數(shù)據(jù)訪問(wèn)層接口完成數(shù)據(jù)持久化;表示層負(fù)責(zé)用戶界面顯示。

1.2 基于SSH框架的輕量型Java EE項(xiàng)目

基于SSH框架的J2EE Web項(xiàng)目[2](如圖2所示),本文在表示層使用Struts2框架,接收用戶發(fā)起的請(qǐng)求信息,向用戶反饋系統(tǒng)處理的結(jié)果;數(shù)據(jù)訪問(wèn)層使用Hibernate4框架對(duì)數(shù)據(jù)庫(kù)的操作進(jìn)行封裝;業(yè)務(wù)邏輯層的Bean處理具體的業(yè)務(wù)邏輯。三層中的Bean均交由Spring4負(fù)責(zé)管理,由Spring負(fù)責(zé)管理。值對(duì)象(VO)、數(shù)據(jù)傳輸對(duì)象(DTO)、普通Java對(duì)象(POJO)根據(jù)各層具體需求使用。

1.3 Java EE Web項(xiàng)目應(yīng)用模塊結(jié)構(gòu)

根據(jù)Java EE WEB應(yīng)用的模塊結(jié)構(gòu)約定[3],發(fā)布后的war文件在Java容器目錄下展開后存放WEB-INF目錄,JSP頁(yè)面、靜態(tài)Web文件以及其他靜態(tài)資源(如圖片、Javascript等)。其中WEB-INF目錄下存放web.xml文件、lib和classes目錄。Lib下存放項(xiàng)目引用的jar包,classes目錄存放java源碼編譯后的Java中間字節(jié)碼。

Eclipse創(chuàng)建的動(dòng)態(tài)Web項(xiàng)目中,web.xml存放在WebContent\WEB-INF目錄下,引入的庫(kù)文件放入Web Content\WEB-INF\lib目錄下,src目錄用來(lái)存放源代碼。在引入SSH框架后,各框架的配置文件均放入resource目錄下。Eclipse構(gòu)建項(xiàng)目時(shí),自動(dòng)將該目錄下資源與編譯后的.class文件一同放入WEB-INF\class目錄中。

2 基于SSH框架的Java EE代碼生成工具的設(shè)計(jì)與實(shí)現(xiàn)

2.1 代碼生成工具框架

如圖3所示,SSH代碼自動(dòng)化生成工具[4]包括三大模塊,第一部分是數(shù)據(jù)表格信息(或數(shù)據(jù)庫(kù)表格元信息)讀取模塊,它負(fù)責(zé)讀取每一張數(shù)據(jù)表格元信息(字段名稱、字段類型及長(zhǎng)度,是否主鍵,是否可空等約束條件)。第二部分主要負(fù)責(zé)將表格元信息轉(zhuǎn)化為接口、類等代碼生成模塊信息。第三部分根據(jù)相對(duì)應(yīng)的數(shù)據(jù)元素信息在前文所述JavaEE Web模塊應(yīng)用程序文件目錄結(jié)構(gòu),在對(duì)應(yīng)目錄結(jié)構(gòu)下自動(dòng)生成相應(yīng)的JSP頁(yè)面、輸出映射的JAVA代碼、以及相應(yīng)的配置文件。

代碼生成器使用數(shù)據(jù)庫(kù)或自定義的excel表格作為將要生成的代碼生成的數(shù)據(jù)來(lái)源。主要是在已經(jīng)設(shè)計(jì)好的數(shù)據(jù)庫(kù)中,或者在設(shè)計(jì)的excel表格中,讀取相關(guān)數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)表格、字段、約束條件等元信息,以此為基礎(chǔ)生成項(xiàng)目各層所需要代碼的信息。其中使用數(shù)據(jù)庫(kù)作為元數(shù)據(jù)信息元時(shí),可利用JAVA的DatabaseMetaData對(duì)象可以獲得數(shù)據(jù)庫(kù)元信息,進(jìn)而獲得數(shù)據(jù)庫(kù)表格、字段的名稱、屬性以及其約束條件等相關(guān)信息。Excel表格作為元數(shù)據(jù)信息源時(shí)使用Apache POI讀取Excel表格,設(shè)計(jì)格式如表1。

2.2 關(guān)鍵流程

代碼生成工具首先讀取自身配置文件ssh.properties,一方面用來(lái)確定項(xiàng)目的相關(guān)信息(比如開發(fā)機(jī)構(gòu)、項(xiàng)目名稱、項(xiàng)目存放路徑等),另一方面用以確定用戶選取的數(shù)據(jù)源是excel設(shè)計(jì)表格,還是數(shù)據(jù)庫(kù)表格,根據(jù)選擇讀取表格信息(字段名稱、字段注解、字段類型、字段約束),采集到的表格信息均存放入數(shù)據(jù)庫(kù)元信息列表,將各層的代碼生成器加入生成器接口列表,以便循環(huán)生成。數(shù)據(jù)元信息采集完畢后,各層代碼生成器通過(guò)映射關(guān)系轉(zhuǎn)換器將所有的對(duì)象名稱轉(zhuǎn)換成為相應(yīng)層的待生成對(duì)象的代碼名稱,與此同時(shí),XML配置生成器將分別生成Hibernate的OR映射文件、Spring的接口中注入管理配置文件和Struts的MVC配置文件。最后,統(tǒng)一調(diào)用各個(gè)層面的代碼生成器接口生成相應(yīng)代碼文件,并根據(jù)項(xiàng)目配置信息存放于相應(yīng)位置。

2.3 關(guān)鍵代碼實(shí)現(xiàn)

// 讀取配置文件,找不到文件則使用設(shè)定的默認(rèn)值

Properties props = getProperties();

// 獲得項(xiàng)目配置信息

ProjectConfiguration pc= ConfigManager.getProjectConfig(props);

// 讀取數(shù)據(jù)庫(kù)表結(jié)構(gòu)信息endprint

Configuration cfg = ConfigManager.getTableMeta(pc);

// 從excel表定義中加載項(xiàng)目實(shí)體表數(shù)據(jù)

List tableMetaDatas = cfg.readDataTables();

// 從數(shù)據(jù)庫(kù)表基礎(chǔ)結(jié)構(gòu)轉(zhuǎn)化為類實(shí)體,形成ORM對(duì)應(yīng)關(guān)系

List ecs= new ArrayList();

for( TableMetaData tableMetaData : tableMetaDatas){

EntityClass ec= Converter.table2Class(pc, tableMetaData);

ecs.add(ec);

}

List cg = new ArrayList();

// 數(shù)據(jù)庫(kù)定義語(yǔ)言生成器,以便生成數(shù)據(jù)庫(kù)的SQL代碼

cg.add(new DdlCodeGenerator(tableMetaDatas,pc));

// 依次加入Pojo、Dao、Service、Action、Jsp代碼生成器

cg.add(new PojoCodeGenerator(ecs, pc));

cg.add(new DaoCodeGenerator(ecs, pc));

cg.add(new ServiceCodeGenerator(ecs, pc));

cg.add(new ActionCodeGenerator(ecs, pc));

cg.add(new JspCodeGenerator(ecs, pc));

// XML配置生成器

cg.add(new HbmXmlGenerator(tableMetaDatas, ecs, pc));

cg.add(new HibernateXmlGenerator(tableMetaDatas, ecs, pc));

cg.add(new SpringXmlGenerator(ecs, pc));

cg.add(new Struts2XmlGenerator(ecs, pc));

// 日志properties配置

cg.add(new LogPropsGenerator(pc));

// 現(xiàn)有資源文件(圖片、JS、jar包等)生成器(簡(jiǎn)單拷貝文件至目標(biāo)文件夾)

cg.add(new ResourceGenerator(pc));

// eclipse項(xiàng)目工程生成器(將模板信息具化后放到目標(biāo)工程文件夾)

cg.add(new EclipseProjectGenerator(pc));

// 依次生成各層代碼

for( ICodeGenerator codeGenerator : cg){

codeGenerator.generate();

}

3 結(jié)語(yǔ)

本文研究實(shí)現(xiàn)的以數(shù)據(jù)表格驅(qū)動(dòng)的基于SSH框架的Java EE代碼自動(dòng)化生成工具,簡(jiǎn)化了SSH框架的應(yīng)用,提高了開發(fā)生產(chǎn)效率。下一步,我們將深入研究整合相關(guān)工具形成可視化配置界面,提高代碼生成器的易用性和便利性。

參考文獻(xiàn)

[1]Kayal D著,張平 等譯.JavaEE 設(shè)計(jì)模式Spring企業(yè)級(jí)開發(fā)最佳實(shí)踐[M].北京:人民郵電出版社,2010:1-4.

[2]基于MVC模式的Java主流框架整合技術(shù)研究[J].計(jì)算機(jī)與數(shù)字工程,2009,37(10):91-93.

[3]Jendrock E等著,李鵬等譯.Java EE6權(quán)威指南基礎(chǔ)篇(第4版)[M].北京:人民郵電出版社,2012:13-14.

[4]丁亮,許舒人.基于SSH框架的java代碼自動(dòng)生成[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2014,23(9):72-77.

Abstract:This paper analyzes the characteristics of lightweight Java EE project based on SSH framework, and implements a table driven SSH framework code generation tool. Developers to design a database table structure as input part of the tool, then the code generation tool for the automatic generation of SSH project in Spring, Struts, Hibernate configuration files and Java EE project code, in order to achieve the rapid generation of code, to show the prototype system. This tool improves the efficiency of application development, and has significant practical significance in production.

Key Words:SSH framework;Java EE;code generation

猜你喜歡
代碼生成
Lustre語(yǔ)言可信代碼生成器研究進(jìn)展
代碼生成技術(shù)在軟件開發(fā)中的應(yīng)用
基于XML的代碼自動(dòng)生成工具
基于關(guān)系數(shù)據(jù)模型代碼生成器的設(shè)計(jì)與實(shí)現(xiàn)
潍坊市| 三穗县| 道真| 喀喇沁旗| 满洲里市| 克什克腾旗| 山东| 宾川县| 寻乌县| 翼城县| 日喀则市| 射洪县| 新晃| 乌兰察布市| 礼泉县| 兴城市| 绥化市| 沭阳县| 南安市| 清丰县| 平和县| 平遥县| 镇赉县| 泸州市| 临沂市| 瓦房店市| 乡宁县| 吴桥县| 离岛区| 湘西| 龙州县| 顺昌县| 基隆市| 汉川市| 玉龙| 舒城县| 邯郸市| 青冈县| 勃利县| 丰城市| 万安县|