您的位置:首页 > 编程语言 > Java开发

maven+spring+springmvc+hibernate+easyui的真实项目经历

2016-01-21 10:08 483 查看

3.框架描述

3.1 工程项目结构

1.       基于springMVC+spring+maven+hibernate+easyUI架构的MVC模式

2.       告警系统的项目是由Eclipse Luna创建,项目包含了:权限控制、超大附件文件上传、调色板插件、EasyUI基本组件使用等等功能。

3.       项目在Eclipse中的工程截图

3.2 spring管理

3.2.1spring

1.       利用IoC(Inversion of Control)控制反转,对象创建责任的反转,在spring中BeanFacotory是IoC容器的核心接口,负责实例化,定位,配置应用程序中的对象及建立这些对象间的依赖。XmlBeanFacotory实现BeanFactory接口,通过获取xml配置文件数据,组成应用对象及对象间的依赖关系

2.   利用Aop纵向的编程,与其往每个业务中都添加同样的代码,不如写一遍代码,让两个业务共同使用这段代码。
3.   spring在工程中的配置截图

3.2.2spring Web MVC

1.   用了MVC架构模式的思想,将web层进行职责解耦,使用请求-响应模型,框架的帮助简化开发
2.   Spring Web MVC请求处理流程
 
 
a)       首先用户发送请求————>前端控制器,前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分

b)      页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在Spring Web MVC中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个ModelAndView(模型数据和逻辑视图名)

c)       前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染

d)      前端控制器再次收回控制权,将响应返回给用户,至此整个结束

3.       Spring Web MVC核心架构

a)       首先用户发送请求——>DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制

b)       DispatcherServlet——>HandlerMapping,
HandlerMapping将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象,通过这种策略模式,很容易添加新的映射策略

c)       DispatcherServlet——>HandlerAdapter,HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器

d)      HandlerAdapter——>处理器功能处理方法的调用,HandlerAdapter将会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理;并返回一个ModelAndView对象(包含模型数据、逻辑视图名)

e)        ModelAndView的逻辑视图名——>
ViewResolver, ViewResolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术

f)       View——>渲染,View会根据传进来的Model模型数据进行渲染,此处的Model实际是一个Map数据结构,因此很容易支持其他视图技术

g)       返回控制权给DispatcherServlet,由DispatcherServlet返回响应给用户,到此一个流程结束

3.3 Maven 版本控制

3.3.1Maven的作用

Maven是一个项目管理工具,它包含了一个项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(DependencyManagement System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。Maven
有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。

3.3.2Maven的配置

1.       结构图

a)       maven目录结构为src/main/java的格式也可以添加测试目录,自动生成代码在target目录中

b)      使用pom.xml文件进行jar包的版本控制,其中可以有依赖关系的管理

2.       仓库管理

Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库 下载所需要的构件(artifact),但这通常不是一个好的做法,你应该在本地架设一个Maven仓库服务器,在代理远程仓库的同时维护本地仓库,以节省带宽和时间,Nexus就可以满足这样的需要。此外,他还提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的REST客户端,它占用较少的内存,基于简单文件系统而非数据库。这些优点使其日趋成为最流行的Maven仓库管理器。

a)       Nexus是一种开源的仓库管理工具,有良好的目录结构和权限管理和资源管理,只需访问配置网络地址

b)      点击左边导航栏的Repositories,界面的主面板会显示所有一个所有仓库及仓库组的列表,你会看到它们的Type字段的值有group,hosted,proxy,virtual。这里我们不关心virtual,只介绍下另外三种类型:
c)      hosted,本地仓库,通常我们会部署自己的构件到这一类型的仓库。
d)     proxy,代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。
e)      group,仓库组,用来合并多个hosted/proxy仓库,通常我们配置maven依赖仓库组。
3.       仓库配置文件在pom.xml中(本项目未部署)

 

3.4 Hibernate映射(数据中心端)

Hibernate是一个持久化的框架,它对JDBC进行了轻量级的封装。对于源程序来说没有侵入性。能让我们通过操作实体关系模型来操作数据库。大大减轻了sql语句的书写,事务的处理,查询结果的管理等数据库操作。

3.4.1Hibernate总体框架

3.4.2Hibernate的映射

Hibernate的持久化类和关系数据库之间的映射通常是用一个XML文档来定义的。该文档通过一系列XML元素的配置,来将持久化类与数据库表之间建立起一一映射。这意味着映射文档是按照持久化类的定义来创建的,而不是表的定义

1.   利用spring的管理进行数据库的连接和缓存的配置文件管理

2.   利用Maven的版本控制对所以来的jar包进行加载

3.   利用映射关系创建实体pojo类,总动创建到数据空

4.   利用hql编写基本数据操作方法,便于统一管理

5.   实体类映射图

3.5  EasyUI控件

jQuery EasyUI是一组基于jQuery的UI插件集合,帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。开发者不需要编写复杂的javascript,也不需要对css样式有深入的了解,开发者需要了解的只有一些简单的html标签。

3.5.1EasyUI 控件的引入结构图

1.       控件使用简单,只需在项目中加入相应的插件

2.       功能jsp页面引用实例

3.       easyui控件是一个封装好的jquery和js方法的集合体,对于页面与后台数据之间的交互提供便利

3.5.2EasyUI 控件使用理解

1.       以前,我们为了写一个还看得过去的按钮,得先在HTML里面加入按钮,然后在CSS里面写入样式,又用JS控制它的事件,整个按钮写下来,我们已经快被烦死了,抬起头看看,我们还有label,dropList,text......等N多个这样的东西要写。后来有了JQuery了,我们的日子似乎好过了点儿,尝试过EasyUI,忽然就又体会到了封装的好处。

2.       EasyUI控件便于统一管理,功能的通用性省去了很多不必要的麻烦,比如页面整体格调的不统一,后期的维护,开发的管理...

3.       EasyUI 控件在不断地更新,对于以后的功能扩张和BUG的修复都具有很好的帮助

4. 架构理解

4.1Spring的优势

1.   清晰的角色划分:前端控制器(
DispatcherServlet
)、请求到处理器映射(HandlerMapping)、处理器适配器(HandlerAdapter)、视图解析器(ViewResolver)、处理器或页面控制器(Controller)、验证器(  
Validator)、命令对象(Command 请求参数绑定到的对象就叫命令对象)、表单对象(Form Object提供给表单展示和提交到的对象就叫表单对象)。
2.   分工明确,而且扩展点相当灵活,可以很容易扩展,虽然几乎不需要;
3.   由于命令对象就是一个POJO,无需继承框架特定API,可以使用命令对象直接作为业务对象;
4.   和Spring其他框架无缝集成,是其它Web框架所不具备的;
5.   可适配,通过HandlerAdapter可以支持任意的类作为处理器;
6.   可定制性,HandlerMapping、ViewResolver等能够非常简单的定制;
7.   功能强大的数据验证、格式化、绑定机制;
8.   利用Spring提供的Mock对象能够非常简单的进行Web层单元测试;
9.   本地化、主题的解析的支持,使我们更容易进行国际化和主题的切换。
10.强大的JSP标签库,使JSP编写更容易。
11.还有比如RESTful风格的支持、简单的文件上传、约定大于配置的契约式编程支持、基于注解的零配置支持等等。

4.2Maven的优势

1.  方便重用,如果你有一个新的swing项目需要用到app-dao和app-service,添加对它们的依赖即可,你不再需要去依赖一个WAR。而有些模块,如app-util,完全可以渐渐进化成公司的一份基础工具类库,供所有项目使用。这是模块化最重要的一个目的。
2.  由于你现在划分了模块,每个模块的配置都在各自的pom.xml里,不用再到一个混乱的纷繁复杂的总的POM中寻找自己的配置。
3.  如果你只是在app-dao上工作,你不再需要build整个项目,只要在app-dao目录运行mvn命令进行build即可,这样可以节省时间,尤其是当项目越来越复杂,build越来越耗时后。
4.  某些模块,如app-util被所有人依赖,但你不想给所有人修改,现在你完全可以从这个项目结构出来,做成另外一个项目,svn只给特定的人访问,但仍提供jar给别人使用。
5.    多模块的Maven项目结构支持一些Maven的更有趣的特性(如DepencencyManagement),这留作以后讨论。

4.3Hibernate的优势

1.   对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。

2.   Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作

3.   hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。

4.    hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。

4.4EasyUI的优势

1.   基于jquery用户界面插件的集合
2.   为一些当前用于交互的js应用提供必要的功能
3.   EasyUI支持两种渲染方式分别为javascript方式(如:$('#p').panel({...}))和html标记方式(如:class="easyui-panel")
4.   支持HTML5(通过data-options属性)
5.   开发产品时可节省时间和资源
6.   简单,但很强大
7.   支持扩展,可根据自己的需求扩展控件
8.   目前各项不足正以版本递增的方式不断完善
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: