【SQL开源代码栏目提醒】:以下是网学会员为您推荐的SQL开源代码-基于SSH框架多层结构的代码生成工具 - 硕士论文,希望本篇文章对您学习有所帮助。
Y 1404702分类号:TP319 密级:U D C:004 编号: 工学硕士学位论文 基于SSH框架多层结构的
代码生成工具的 设计与实现 硕士研究生: 王杨 指导教师 : 陶振凯教授级高级工程师 学位级别 ; 工学硕士 学科、专业: 计算机软件与理论 所在单位 : 信息科学与工程学院 论文提交日期: 2008年1月 论文答辩日期: 2008年3月 学位授予单位: 沈阳理工大学 沈阳理-j:大学硕士学位论文 摘 要 为了解决基于SSH(Struts Spring Hibernate)框架的办公自动化系统的快速开发问题,本文结合DOM、模板引擎及Eclipse插件技术,采用面向对象的方法对
代码生成工具的层次结构进行分析与设计。
根据模块化的思想把
代码生成工具划分为显示层、数据层、业务层,各层之间采用统一接口的形式进行数据交换。
在此基础上,出基于SSH框架多层结构的
代码生成工具。
该
代码生成工具通过输入基本数据信息以及加载用户界面原型,实现了
代码的自动生成。
本文研究的主要内容如下: 1.对目标系统进行科学、合理的抽象,分析目标系统所需要的基本数据信息,例如目标系统的类名、包名、目标系统的描述、目标系统的存放位置等等。
为了获得目标系统的各种基本数据信息,采用了SWT技术实现了图形化的用户界面。
2.使用DOM技术生成SSH框架中的XML配置文件;采用Velocity模板引擎技术生成Java
代码。
根据用户界面原型的特点,提出一种用户界面解析算法。
3.使用Eclipse插件技术将
代码生成工具以插件的形式集成在Eclipse开发环境中,方便软件开发人员使用。
通过测试和实际使用证明,基于SSH框架多层结构的
代码生成工具能大幅度提高软件开发的质量和生产效率,降低软件开发的风险和成本,具有良好的适应性和扩展性,把开发人员和维护人员从单调的
代码编写中解放出来。
关键词:
代码生成;SSH;模板引擎 沈阳理丁大学硕士学位论文 Abstract To rapidly develop Office Automation System base on SSH(Struts,Spring,Hibernate)Framework,the thesis analyzes and designs the hierarchical structure ofcode generator by the Object-Oriented method combining the technology of DOM,template engine and Eclipse plug—in.The code generator is divided to display layer,datalayer and operation layer according to the thought of modulization,and data areexchanged through the uniform interface among these layers.The code generator ofmulti—layer based on SSH Framework is designed and implemented.The code generatorCan automatically generate code by inputting basic data and loading UI.The maincontents consist of: First,abstracting the target system scientifically and reasonably,and analyzing thebasic data that is needed in the target system.such嬲class name,package name,description,location,etc..To obtain the basic data of the target system,S、胛technologyis adopted to implement the GUI. Second,generating XML config files in SSH framework by DOM technology andgenerating Java code by Velocity template engine.According to the characteristics ofuser interface prototype,one kind of user interface analysis algorithm was proposed. Third,Eclipse plug-in technology is used to integrate code generator into theEclipse development environment,which facilitates the use of software developers. It is proved that the code generator of multi-layer based on SSH Framework Cangreatly improve the quality and productivity,lower the risk and cost,have a goodadaptability and expandability in the software development,and liberate softwareengineers out from the unexciting hand coding.Key words:code generator;SSH;template engine 沈阳理工大学 硕士学位论文
原创性声明 本人郑重声明:本论文的所有工作,是在导师的指导下,由作者本人独立完成的。
有关观点、方法、数据和文献的引用已在文中指出,并与参考文献相对应。
除文中已注明引用的内容外,本论文不包含任何其他个人或集体已经公开发表的作品成果。
对本文的研究做出重要贡献的个人和集体,均己在文中以明确方式标明。
本人完全意识到本声明的法律结果由本人承担。
作者(签字):;彻 日 期 :加8年≥月,中日 学位论文
版权使用授权书 本学位论文作者完全了解沈阳理工大学有关保留、使用学位论文的规定,即:沈阳理工大学有权保留并向国家有关部门或机构送交学位论文的复印件和磁盘,允许论文被查阅和借阅。
本人授权沈阳理工大学可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或其它复制手段保存、汇编学位论文。
(保密的学位论文在解密后适用本授权书) 学位论文作者签名:≥佃 日 期:2一寥、口;./户 指导教师签名:脚 日 期:2匆彤.矿乡./户 第1章绪 论 第1章 绪论1.1课题来源和背景 随着现代信息技术的迅猛发展,特别是在面向对象思想和UML的理论得到广泛应用后,开发人员的工作得到细分,软件行业越来越认识到需求调研和系统设计对整个系统质量的巨大影响,所以,如何提高开发效率就成为软件企业和用户更关心的课题。
近年来,在项目开发中,发现政府、企业对办公自动化系统的需求与日俱增,但是政府、企业对办公自动化系统的具体需求虽然有所不同,但是他们仍然存在着一定的相同之处。
如果在为不同客户提供系统开发过程中,能尽可能重用己有
代码和设计,将对快速开发和提高软件产品质量有很大帮助。
如果能够按照一定的方式和流程,自动的生成大部分的系统
代码,一方面能够缩短软件项目开发周期,降低成本;另一方面,能够解放开发人员的生产力,提高
软件产品的设计质量Ⅲ。
因此,
代码自动生成技术越来越引起业界的重视。
在办公自动化系统用户中,客户对办公自动化系统需求的相同程度越大,就意味着
代码重用的价值也越大。
所以,本文决定为了快速开发办公自动化系统‘,
设计和开发一套
代码生成工具。
由于现在J2EE技术得到了长足的发展,而且基于SSH框架己经成为当今Web软件开发的主要技术选择之一,为了最大化这个项目的研究价值,本次研究定位为J2EE平台中开发出基于SSH框架多层结构的
代码生成工具,并使用Eclipse插件技术将开发工具集成在Eclipse开发环境中,方便软件开发人员的使用。
本课题的研究意义在于: 第一,实际客户需求千变万化,但仍然具有一定规则和相同之处; 第二,开发人员在开发不同系统时,有大量重复工作,浪费大量人力; 第三,因为机械的重复编码工作对人力资源的大量消耗,设计和开发人员没有足够时间和精力研究业务逻辑,从而造成更大浪费; 沈阿l理jI:人学硕十学位论文 第四,随着Java技术的同趋成熟,其优异的性能帮助软件工作者解决很多棘手问题【ll。
本课题研究的目的就在于创建一种基于SSH框架多层结构的快速
代码生成工具,其工作流程如图1.1所示: 系 图1.1
代码生成工具工作流程图 在实际的应用中,客户根据自身的业务需求,向系统分析员提出办公自动化系统的需求;系统分析员根据需求分析建立数据结构,并根据
代码自动生成工具的要求填写基本数据信息。
作为本课题的研究对象和成果,
代码自动生成工具能根据模板引擎技术和输入的基本数据信息,生成实体类、Action、ActionForm、业务接口、实现业务接口类等。
采用DOM技术,实现struts.eonfig.xml、实体类映射文件、applicationComext.xml等配置文件的自动生成。
同时,根据加载的界面模板,采用用户界面解析算法自动生成用户使用的Jsp界面。
本课题的研究是将多年的编程和系统建设经验进行沉淀和应用,抽象出办公自动化系统的相对相似的实现方式,形成一系列规范的框架格式和目标
代码,极大提高
系统的重用性。
由于自动化的生成
工作能节省大量的重复编码时间,可以把程序员和系统分析员从繁杂和重复的编码工作中解放出来,更进一步理解客户需求,在更短的时间内完成系统建设。
1.2国内外研究现状1.2.1 J2EE的Web框架及其优势 第1章绪 论1.2.1.1 J2EE的Web框架 J2EE为多层Web应用系统提供了容器平台121。
在这里,容器概念实际是指应用服务器提供的特定功能的软件模块,用户所开发的程序构件要在容器内运行,构件和容器的关系有些像
计算机插件和主板的关系;程序构件在部署时被安装在容器里,容器是能提供基本功能的底层平台,它们之间通过接口进行通信;一般web程序开发者只要开发出满足其需要的程序构件并能安装在容器中就够了,程序构件的安装过程包括设置各个构件在J2EE应用服务器中的参数以及设置J2EE应用服务器本身。
这些设置决定了在底层由J2EEH艮务器提供的安全、交易管理、JNDI查寻和远程调用等多种服务【3】。
J2EE应用框架使同样的程序构件在一个Web程序之内能够根据其部署的方式实现不同的功能【4】。
例如,同样的Enterprise JavaBean可以采用不同等级的数据库数据存取安全设置。
J2EE容器还负责管理构件的生命周期、数据库连接资源共享、数据持久性等基本的服务。
J2EE框架图如图1.2所示: 图1.2 J2EE架构图 J2EEl.4应用平台由以下几种类型的程序容器(Container)组成:EnterpriseJavaBeans(EJB)容器负责所有EJB的运行,EJB根据功能可以分为session bean(会话bean)、entity bean(实体bean)、message-drivenbean(消息驱动bean)。
这一层主要负责数据处理以及和数据库或其他Java程序的通信,它对应多层结构的业务层和数据访问层,Web容器管理所有JSP、JSTL和Servlet等Web构件的运行,这些构件主要负责程序和web的
通信,这一层对应多层结构中的表示层。
应用客户端容器负责所 沈阿1理。
I:人学硕十学位论文有Web程序在客户端构件的运行;Applet容器可以看作特殊的应用客户端容器。
它负责在Webij0J览-器¥1Java插件上运行JaVa Applet程序(Applet是一种简化并具有安全保护的Javadx程序〔51),应用客户端容器和Applet程序容器基本对应多层结构中的用户接口层;每种容器内都使用相关的各种Javaweb编程技术。
J2EE含有Servlet、JSP、EJB等各种不同的应用构件,它们构成了应用的主体【6】aJ2EE平台提供的JDBC、JTS、JNDI等应用服务,这些服务保证并促进构件的良好运行。
J2EE的RMI、JMS、JavaMail等应用通信技术在平台底层实现机器和程序之间的信息传递。
1.2.1.2 J2EI;的W曲框架开发Web系统的优势 Web应用框架可以提高Web应用系统开发的效率,使得Web应用系统开发者可以集中精力开发系统所需的业务逻辑,而不必耗费精力在一些Web应用系统共同的操作上。
具体的说,一个Web应用框架可以为Web应用系统的开发提供以下优势口1: (1)为Web应用系统提供优良的软件架构。
Web应用框架根据面向对象框架的软件复用理论和Web应用系统共同的特征,利用一定的、经过实践检验的架构模式将Web应用的体系结构进行固化,从而为Web应用系统提供优良的软件架构。
(2)更大的分离显示与逻辑。
框架将显示和逻辑分离为不同的模块,分别处理应用的显示和逻辑,应用开发者只需对不同的模块进行填充即可,从而更大的分离显示与逻辑。
(3)分离开发者的角色。
通常,应用框架为不同的开发者提供不同的接1:3。
显示模块的开发者只需集中精力在JSP等显示页面的开发。
同时,逻辑开发者只需关注请求的处理和商业逻辑的开发。
这种分离使得应用开发者可以并行的、互不依赖的开发应用系统。
(4)能够提高Web应用系统开发的效率。
框架可以为开发者提供一组高效的、通用的视图处理和逻辑处理方面的组件,还可以减少开发者的
代码,提供系统的开发效率。
(5)方便模块测试和维护。
由于框架为各模块的交互提供的接1:3是统一的,降低了各模块的藕合性,从而方便系统按模块进行测试和维护,也方便系统进行自动化测试。
第1章绪 论 不仅如此,除了技术上的优势之外,Web应用框架也给开发的项目管理工作带来了深刻的变化,主要表现在下述几方面: (1)降低项目的开发成本。
由于更清晰的划分了开发团队中的角色,每个角色所承担的工作都很专一,从而降低了开发人员的知识积累和技能方面要求。
软件企业可以迅速的从人力资源市场上获取所需得人力,快速的组建开发团队,同时也降低了人力成本。
(2)缩短项目的开发周期。
在Web应用开发中使用web应用框架,避免了重复开发,重复投资,由此减少了应用开发的
代码量,加快了开发速度,缩短了开发时间。
(3)降低项目的风险。
Web应用框架下的开发角色分工专一,使每一项任务更加明确,由此提高了工作量估算的准确度,同时也使计划实施过程中的跟踪和控制工作变得容易,降低了web应用开发项目计划实施的风险,使开发计划的完成更有保证。
当然利用框架提供的上述优势也是需要付出代价的。
例如,利用框架开发Web应用系统的同时也增加了
学习框架的开销,另外,框架的使用也带来了调试应用系统的难度,一些错误的产生使框架的使用者难以判断错误的根源。
然而实践表明,Web应用框架的产生为Web应用系统的开发提供了一个新的机遇。
1.2.2 SSH框架技术概述1.2.2.1 Struts框架 基于MVC模式创建Struts开放源
代码框架的目的是便于开发人员基于JavaServlet和JSP技术构建Web应用
程序。
Struts框架向开发人员提供了统一的体系结构,以此为基础,可以构建Interact应用程序。
并且Struts框架的应用,使开发人员可以集中精力关注构建业务应用程序的工作,而不必顾虑体系结构的
问题。
Struts框架由CraigR.McClanahan于2000年创建,并捐赠给了Apache SoftwareFoundation(ASF)。
Struts框架是一种众所周知的并极为成功的Apache Jakarta工程。
Jakarta工程共同的目的任务是以开放和协作的方式,在Java平台的基础上开发符合商用标准的服务器解决方案。
沈僻I理jI:火学硕十学位论文 MVC模式英文全称是Model.View—Controller,即把一个应用的输入、处理、输出流程按照View、Model、Controller的方式进行彻底的分离,这样一个应用被分成三个层——视图层、模型层、控制层。
视图层(View):代表用户交互界面。
对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术己层出不穷,例如XHTML,XML/XSL,WML等标识语言。
随着应用的复杂性和规模性不断增加,界面的处理也变得具有挑战性。
一个应用可能有很多不同的视图,MVC模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。
业务流程的处理交给模型处理。
比如一个退休职工的基本信息的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制器和模型。
模型层(Model):是业务流程和状态的处理以及业务规则的制定。
业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。
业务模型的设计可以说是MVC最主要的核心。
目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。
它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。
MVC设计模式是把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。
抽象与具体不能隔得太远,也不能太近。
MVC没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。
控制层(Controller):是从用户接收请求,将模型层与视图层匹配在一起,共同完成用户的请求。
划分控制层的作用也很明显,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。
控制层并不做任何的数据处理。
例如,用户点击~个连接,控制层接受请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。
因此,一个模型可能对应多个视图,一个视图可能对应多个模型【8l。
第1章绪 论1.2.2.2 Spring框架 Spring是一个
开源框架,它由Rod Johnson创建。
它是为了解决企业应用开发的复杂性而创建的。
Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。
然而,Spring的用途不仅限于服务器端的开发。
从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
简单来说,Spring是一个轻量级的控制反转和面向切面的容器框架【9l。
轻量:从大小与开销两方面而言Spring都是轻量的。
完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。
并HSpring所需的处理开销也是微不足道的。
此外,Spring是非侵入式的,Springl立用中的对象不依赖于Springl}CJ特定类。
控制反转:SpringJ匝过一种称作控制反转的技术促进了松耦合。
当应用控制反转时,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。
你可以认为控制反转与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
面向切面:Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与审计和事务管理等系统级服务进行内聚性的开发。
应用对象只完成业务逻辑,仅此而已。
它们并不负责甚至是意识到其它的系统级关注点,例如日志或事务支持。
容器:Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean女l何被创建基于一个可配置原型,你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。
然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。
框架:Spring可以将简单的组件配置、组合成为复杂的应用。
在Spfing中,应用对象被声明式地组合,典型地是在一个XML文件罩。
Spring还提供了事务管理、持久化框架集成等基础功能,将应用逻辑的开发留给了开发人员。
所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的
代码。
它们也为Spring中的各种模块提供了基础支持。
沈田l理:T:人学硕+学位论文1.2.2.3 Hibemate框架 Hibernate是一个基于Java的丌放源
代码的持久化中间件,它对JDBC做了轻量级的封装,不仅提供ORM(Object/Relation Mapping)映射服务,还提供数据
查询和数据缓存功能,Java开发人员可以方便地通过HibernateAPI来操纵数据库。
ORM技术作为数据持久层的解决
方案已经受到越来越多人的关注和重视。
它的作用是在关系型数据库和对象之间做个映射。
把对象模型表示的对象映射到基于SQL的关系模型结构中去,这样,在具体的数据操作的时候,就不需要在和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以。
Hibernate框架在应用程序中是位于数据持久层【-o】,如图1.3所示: 〔二二至兰三 图1.3 Hibernate在应用程序中所处的位置00l l 下面对图中的对象进行说明和介绍。
(1)SessionFactory:对属于单一数据库的编译过的映射文件的一个线性安全的、不可变得缓存快照。
它是Session的工厂,是ConnectionProvider的客户。
可能持有一个可选的数据缓存,可以在进程级别或集群级别保存事务中重用的数据。
可能持有事务之间重用的数据的缓存。
(2)会话Session:一个单线程的短期存活的对象,代表了在应用程序和持久化层之间的一次对话。
封装了一个JDBC连接。
也是Transaction的工厂。
保存必需的持久化对象的缓存,用于遍历对象图或者通过标识符查找对象。
第1章绪 论 (3)持久化对象(Persistent Objects):生命期短期的单线程的对象,包含可持久化状态和商业功能。
它们可能是普通的JavaBeans/POJOs,唯~特别的是他们现在从属于且仅从属于一个Session。
一旦Session被关闭,他们都将从Session中取消联系,可以在任何程序层自由使用,例如直接作为传送到表现层的DTO、数据传输对象。
(4)临时对象(Transient Objects):目前没有从属于一个Session的持久化类的实例。
他们可能是刚刚被程序实例化,还没有来得及被持久化,或者是被一个已经关闭的Session所实例化的。
(5)事务(Transaction):在应用程序中使用的短期的单线程对象,用于保证事务的原子性。
抽象的应用程序可能是基于JDBC、JTA或者CORBA事务的。
一个Session可能是跨多个Transaction。
(6)ConnectionProvider:一个可选的JDBC和JDBC连接池的工厂。
抽象的应用程序是基于Datasource或者DriverManager。
(7)TransactionFactory:事务实例的工厂。
对应用程序不可见,但可以被开发者扩展和实现。
使用Hibernate框架的优点: (1)Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server、EJB没有什么必然的联系。
Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问
代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的
代码。
从这个意义上来说,Hibernate和EJB不是一个范畴的东西,也不存在非此即彼的关系。
(2)Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性、JDBC驱动和数据库都有一定的关系,但是和使用它的Java程序、App Server没有任何关系,也不存在兼容性问题。
(3)Hibernate不能用来直接和Entity Bean作对比,只有放在整个J2EE项.