1、J2EE快速开发详解Harrisson2023-1-14LOGOLOGO目录以快速开发框架为例,在其内实现一个Demo的增删改查。实例讲解 讲解快速开发框架中使用的开源框架及其原理。框架说明12框架说明Part 11.1 快速开发框架整体结构图 这是一个轻量级的框架组合,整合了当下使用广泛的流行框架,具备良好的性能及灵活性,同时使用Maven来对项目进行构建、管理和部署,令项目有条不紊。1.2.1 Maven介绍 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。常用属性常用属性:project:pom的xml根元素。groupId:
2、定义当前Maven项目隶属的实际项目。artifactId:定义项目中的一个Maven项目模块,一般为实际项目名称。version:定义当前版本。packaging:定义项目构建为jar或war,jar为可导入包,war为可部署Web项目。name:名称。url:jar包下载地址,可设置为本地代理。dependencies-dependency:依赖管理。build-plugins-plugin:插件。properties:自定义属性。1.2.2 Maven优点1、快速构建项目 只需定义好pom.xml,则可以在多个项目中复用,导入项目中右键点击xml运行Maven install,它会自动从
3、Maven官方库中下载第三方依赖库。2、平滑升级框架 Maven将项目所有第三方依赖库的版本管理起来,便于项目的依赖库版本控制。在pom.xml内修改框架版本,先Maven clean然后Maven install,Maven会重复优点1的步骤,将项目框架版本升级为指定的版本。Maven是一款方便易用的工具,现在通过介绍以下几点主要功能,让大家对它有一个大概的掌握。1.2.3 Maven优点3、统一项目结构 可以保证构建的所有Maven项目结构都是统一的,每个目录下放的东西都是固定的。要找源码去src/main/java/下,要找界面去src/main/webapp/WEB-INF/下,要找资
4、源去src/main/resources/下,要找单元测试的源码和资源去src/test/下。4、自动生成(部署)网站 在Maven中Maven install后,会在target目录下生成网站项目war包,可将之手动拷贝Web应用服务器下,也可配置插件直接热部署到Web应用服务器下。1.2.4 Maven缺点 当然,每一款工具都有优点,也有缺点,Maven的主要缺点如下。1、安装配置繁琐 需要配置环境变量,并且使用某些特性要去国外网站下载插件,较为麻烦。2、缺乏详细教程 Maven在网上资料有限,而且都较为简易,如在实际使用过程中遇到问题,通常难以查询到有用的信息。3、资源库不完整 大部分依
5、赖库都能在Maven官网上下载到,但有些使用较少的依赖库是找不到的,虽然Maven提供了在本地库导入特定依赖库的功能,但还是比较麻烦。综上所述,虽然Maven有一些缺点,但也无法阻止它的快速传播,毕竟还是瑕不掩瑜,相信这些缺陷在不久的将来会渐渐弥补。1.2.5 Maven与Ant的区别 通常人们都会将Maven与Ant拿来做比较,说到底还是各有千秋,但对于大型项目来说,Maven的特性更加便捷、实用。MavenAnt标准构建文件project.xml和maven.xmlbuild.xml特性处理顺序1.$maven.home/bin/driver.properties2.$project.ho
6、me/project.properties3.$project.home/build.properties4.$user.home/build.properties5.通过-D 命令行选项定义的系统特性最后一个定义起决定作用。1.通过-D 命令行选项定义的系统特性2.由任务装入的特性第一个定义最先被处理。构建规则构建规则更为动态(类似于编程语言);它们是基于 Jelly 的可执行 XML。构建规则或多或少是静态的,除非使用任务扩展语言插件是用 Jelly(XML)编写的。插件是用 Java 语言编写的。构建规则可扩展性通过定义 和 使构建 goal 可扩展。构建规则不易扩展;可通过使用 任务模
7、拟 和 所起的作用。1.3.1 Mybatis介绍1、Mybatis是什么 Mybatis是数据映射器(数据映射器层:用于在对象和数据库之间搬运数据,同时保证对象、数据库和数据映射器层本身相对独立。)Mybatis不是直接把类映射为数据库表,而是把sql语句的参数与结果(即输入与输出)映射为类。为如何在类和数据库间建立映射带来了更大的灵活性。同时也更好的隔离了数据库设计和应用程序中使用的对象模型。2、Mybatis的作用 Mybatis是三层架构中数据持久层的框架。Mybatis对sql进行了封装和外部化,使sql从应用程序代码中分离出来。(业务逻辑从数据库中分离出来,应用程序更容易部署与测试
8、,有更好的可移植性)1.3.2 Mybatis功能架构1、API接口层 提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。2、数据处理层 负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。3、基础支撑层 负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。1.3.3 与Hibernate的区别 轻量级的Mybatis与重量级的Hibernate相比,M
9、ybatis更容易上手和使用,灵活度更高,而Hibernate因为其完整的封装,导致学习成本及上手难度较大。Mybatis的优点与缺点优点:1、灵活性强,直接操作SQL可以更好的利用数据库特性,优化SQL提高运行效率。2、上手容易,对个人能力要求不高,能够快速开发。缺点:1、轻量级封装,需要手动维护SQL和结果映射。2、移植性较差,不同的数据库需要编写不同的SQL。3、缓存机制不佳,mybatis缓存较hibernate二级缓存差。Hibernate的优点与缺点优点:1、框架封装完整,对象维护简单,数据库无关性好,O/R映射能力强。2、有数据库方言,数据库移植性很好。3、缓存机制较好,二级缓存
10、比mybatis更好,可以使用第三方缓存。缺点:1、学习成本高,能力要求高。2、重量级框架,如果不够非常了解该框架原理,运行效率将会比较低。相同点1.Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。2.Hibernate和MyBatis都支持JDBC和JTA事务处理。1.4.1 Spring mvc介绍1、Spring mvc是什么 Spring MVC是一种基于Java的实现了Web MVC设计模式的请
11、求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring MVC也是要简化我们日常Web开发的。2、Spring mvc能帮我们做什么 1、让我们能非常简单的设计出干净的Web层和薄薄的Web层;2、进行更简洁的Web层的开发;2、天生与Spring框架集成(如IoC容器、AOP等);3、提供强大的约定大于配置的契约式编程支持;4、支持灵活的URL到页面控制器的映射;5、非常容易与其他视图技术集成,如Velocity、FreeMarker等等;6、非常灵活的数据验证、格式化和数据绑定
12、机制;7、提供一套强大的JSP标签库,简化JSP开发;8、支持灵活的本地化、主题等解析;9、对静态资源的支持;10、支持Restful风格。1.4.2 Spring mvc的请求流程 Spring MVC框架也是一个基于请求驱动的Web框架,并且也使用了前端控制器模式来进行设计,再根据请求映射规则分发给相应的页面控制器(动作/处理器)进行处理。首先让我们整体看一下Spring Web MVC处理请求的流程:1.4.3 Spring mvc架构1.4.4 与Struts2的区别Spring mvcStruts2机制基于servlet机制基于filter机制处理方式Springmvc是方法级别的拦
13、截,一个方法对应一个request上下文,而方法同时又跟一个url对应。所以说从架构本身上 Springmvc就容易实现restful urlStruts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入 Struts2实际上是通过setter getter方法与request打交道。性能Springmvc会稍微比Struts2快,Springmvc 是基于方法的设计。Sturts2是基于类,每次发一次请求都会实例一個 action,每个action都会被注入属性。参数传递Springmvc在接受参数的时候是基于方法的,
14、每个方法都可设置自己的参数。Struts2是在接受参数的时候,可以用属性来接受参数,这就说明参数是让多个方法共享。设计思想Springmvc在servlet上做扩展Struts2更符合oop的编程思想。struts2脱离了servlet,Struts2的action可以是一个普通的java类。Interceptor的实现机制spring mvc 用的是独立的AOP方式。Struts2有以自己的interceptor机制。1.5.1 Spring介绍1、Spring是什么 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其
15、著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情,然而,Spring的用途不仅限于服务器端的开发,从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。目的:解决企业应用开发的复杂性 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Java应用 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。1.5.2 S
16、pring特点l 方便解耦,简化开发 通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。l AOP编程的支持 通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。l 声明式事务的支持 在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。l 方便程序的测试 可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。l 方便集成各种优秀框架 Sprin
17、g不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hessian、Quartz)等的直接支持。l 降低Java EE API的使用难度 Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个薄薄的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。1.5.3 Spring架构1、核心容器:核心容器提供 Spring 框架的基本功能(Spring Core)。2、Spring 上下文:Spring 上下文是一个配置文件,向 Sp
18、ring框架提供上下文信息。3、Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向切面的编程功能集成到了 Spring 框架中。4、Spring DAO:JDBCDAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。5、Spring ORM:Spring 框架插入了若干个ORM框架,从而提供了 ORM 的对象关系工具,其中包括JDO、Hibernate和iBatisSQL Map。6、Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。7、Spring MVC
19、框架:MVC框架是一个全功能的构建 Web应用程序的 MVC 实现。1.6.1 快速开发平台介绍1、DevelopFrame是什么 DevelopFrame是一个整合了SSM(Spring+Spring mvc+Mybatis)三大框架的基础项目,该项目与产品或者定制项目无关,作为一个独立维护的项目运作。它的出现是为了避免重复造轮子,把每个项目通用的部分抽取出来,平时在其上增加通用性功能,以便应付紧急情况的项目。DevelopFrame.项目项目4项目项目3项目项目2项目项目11.6.2 快速开发平台介绍1、DevelopTools是什么 DevelopTools是一个集成常用工具包的项目,该
20、项目是作为一个扩展项目存在。它的出现是为了提高项目的开发效率,可自行封装整合各类工具,打成Jar包引入项目即可使用,避免在实际开发时再从网上去寻找相关的代码。DevelopFrame.项目项目2项目项目1DevelopTools扩展1.6.3 快速开发平台的功能1、DevelopFrame 与DevelopTools当前版本 DevelopFrame和DevelopTools当前版本均为1.0,后续会考虑平台、工具包的升级。2、DevelopFrame 1.0 包括哪些功能u 系统用户管理u 权限角色管理u 系统设置3、DevelopTools 1.0 包括哪些工具 日期时间、字符串、缓存、二
21、维码、Json、文件、图片、XML等。1.6.4 快速开发平台的构想1、DevelopFrame功能深化 DevelopFrame后期应该加入更多的通用功能,使之成为一个能够即时拿来使用的项目。2、DevelopFrame数据初始化 DevelopFrame将数据库建表及数据初始化抽取为一个单独的功能,再新建项目时只需在部署项目后访问项目即可一键搞定,同时支持MySql、Sql Server、Oracle等主流数据库。3、DevelopFrame项目分支 DevelopFrame将根据公司主体业务进行分类,进行不同的拓展,比如OA业务、电商业务等,分为不同的领域进行深入的功能拓展,然后将功能组
22、件化,在具体使用时可直接在后台设置需要使用的功能即可形成一个完整的系统。4、DevelopService项目搭建 DevelopService是以高效实现接口为目的的接口平台,将业务项目与接口项目分离,及时适应需求变化调整,便于整体项目架构的后期拓展。4、DevelopTools深入封装 将工具类根据自身业务项目的需要,整理为一套完整的工具包,并且生成API供开发者查阅。实例讲解Part 22.1.1 搭建开发环境1、开发IDE 使用的IDE是MyEclipse 10,也可以使用Eclipse、Netbeans、IntelliJ。2、开发数据库 使用数据库为MySql 5.5,数据库访问客户端
23、工具为Navicat,也有Linux版本。3、开发应用服务器 使用Tomcat 7,简单好用。4、SVN版本管理器 使用TortoiseSVN,在MyEclipse内集成Svn插件,对开发效率有较大的提升。5、JDK版本 使用JDK 1.7.0_51。Eclipse:http:/www.eclipse.org/MySql:http:/ 项目结构2.2.1 开发步骤1、新建数据表2、根据表新建(生成)模型,将表字段转换为模型内的属性3、新建(生成)Mybatis的mapper及xml,在mapper内写好需要使用的方法,一般来说有增加、修改、删除和查询,然后在xml内根据mapper的方法关联起
24、来编写SQL4、新建Spring mvc的控制器controler5、在resources下引入css、image和js,将html转换为jsp6、在controler内编写方法的业务逻辑,设置跳转jsp 基本上一个模块的垂直开发流程就是这样,但是2至3步可以使用官方提供的生成器MybatisGenerator来自动生成,在实际开发中只需关注业务逻辑和前端页面即可。2.3.1 演示步骤1新建数据表 查看项目中的数据库设计,到连接工具中查看该项目的数据库,确认该表是否存在。2.3.2 演示步骤2生成模型 将数据表的字段转换为模型中的属性。2.3.3 演示步骤3配置Mapper和Xml 配置Myb
25、atis的dao方法mapper,使用xml中的sql从数据库返回结果。2.3.4 演示步骤4和6新建控制器controler Spring mvc使用controler作为请求入口,接收请求中的数据执行业务逻辑处理,然后将结果返回至视图层。2.3.5 演示步骤5转换html为jsp 在jsp上使用el表达式可接收从控制器传来的参数,使用$expression的结构可将其获取,如果expression是一个对象,其内有name属性,则应该这样获取$expression.name。2.3.6 演示步骤6最终效果 在DevelopFrame的Demo内实现了增删改查的基本功能。谢谢观看Harrisson2023-1-14四川省嘉骏科技有限公司