2020-11-23 JAVA EE:概述

第一章 Java EE概述

      Java EE,即java平台企业版。主要用于快速设计、开发、部署和管理企业级软件系统。

1.1 Java EE简介

      Java的三种版本如下图所示:
在这里插入图片描述

1.1.1 什么是Java EE

      Java EE是sun公司为企业级应用推出的标准平台。它为应用程序组件定义了四种容器:

  • Web
  • Enterprise JavaBean(EJB)
  • 用用程序客户机
  • Applet
          能够帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序。
          典型的Java EE结构包括四层:
  1. 客户层
  2. 表示逻辑层(Web层)
  3. 业务逻辑层
  4. 企业信息系统层

1.1.2 Java EE 的新特性

  1. 提高开发人员效率:减少编写大量核心业务逻辑所需要的样板代码;引入更多的注释POJO来降低XML配置的复杂性;使用更紧密呢集成技术,提供一个更加无缝的开发体验;
  2. 加强对HTML5动态可伸缩应用的支持;
  3. 满足苛刻的企业需求:
  4. 减少冗余代码
  5. 更多带注释的POJO
  6. 更紧密集成的平台
  7. 通过精简现有技术来简化Java EE
  8. 低延迟数据交换“Java API for WebSocket 1.0
  9. 简化应用数据分析和处理
  10. 可扩展的RESTful服务:JAX-RS2.0
  11. 增强开发的易用性:JSF 2.2
  12. 提高批处理应用程序的效率使开发过程变得更加便捷和高效

1.2 Java EE应用分层结构

      架构大泥球: 导致程序过度耦合、容易被破坏、难以应对变化,同时,很难有一个清晰的版本或者方向性。
      好的架构模式能够帮助程序员定义应用程序的基本特征和行为。

1.2.1 分层模式概述

      层(layer)体系架构模式就是把任务系统分解成子任务组,其中每个子任务组处于一个特定的抽象层次。

  1. 层模式概述
          层模式组织成为一个层次结构,每一层为上层服务(Service Provider),同时也做微下层的客户端。
  2. 考虑的因素
          一般在系统涉及时,由一系列高层模块和底层模块处理构成,并且高层的模块依赖于底层。因此设计需要考虑一下因素:
  • 源码的修改会影响整个系统,应该限定在一个部件内部而不影响到其他模块
  • 接口应当稳定,甚至应该被规范。
  • 系统的架构应该灵活,可以更换。
  • 系统的开发需要被划分为多个部分,如团队开发或者异地开发。

1.2.2 Java EE的结构

  1. J2EE层模式的背景
    下图为软件 从两层体系架构到三层的转变:
    在这里插入图片描述
    两层架构缺点:
  • 软件部署开销大
  • 改变数据结构的开销很大
  • 改变数据库类型的开销很大

经典三层架构

  • 表现层 (Presentation layer,PL)
          主要负责数据的输入接口和输出。输入指在Web、客户端或为外界提供的API的数据请求接口;输出则是Web界面、客户端输出、API的数据输出。页面模板、对外API数据格式化、Request接收、Output推送、Commander操作都在这一层。
  • 业务逻辑层(Business Logic layer,BLL)
          主要负责从原始数据到结果数据的中间过程。系统中最关键、最重要的一层。也被称作领域层(Domain Layer),领域中所有对象的逻辑关系和功能事项算法都在这一层中。业务逻辑、服务等处于这一层。
  • 数据访问层 (Data Access Layer,DAL)
          主要是对原始数据的操作(CRUD),为业务逻辑层或表示层提供数据服务。数据源包括数据库、文件、网络存储系统、其他系统开放的API、程序运行上下文环境等。许多框架中的ORM、Active Recode、Dao类或库都处于这层。

四层架构
      分为表示层、服务层、业务逻辑层、数据访问层。服务层是对三层架构中业务逻辑层的再细分,以解决业务逻辑层经常出现的臃肿问题。
      在三层架构中,把业务逻辑层的上层分离出来,组成服务层(Service Layer)。服务层往往是逻辑层的表示层,即向上层(表示层)提供逻辑的外观。事务控制、安全检查、事务脚本等可以置于业务层。
      Java EE应用架构大致可以分为以下几层:
在这里插入图片描述

  • Domain Object (领域对象层):由系列POJO组成,这些对象是该系统的Domain Object,往往包含了各自所需要实现的业务逻辑方法。于业务逻辑层可在同一层。
  • DAO(Data Access Object,数据访问对象层):由DAO组件组成,实现对数据库的创建、查询、更新和删除(CRUD)等原子操作。
  • 业务逻辑层:由业务对象组成,这些业务逻辑对象实现了所需要的业务逻辑方法。这些业务逻辑方法可能仅仅用于暴露Domain Object对象所实现的业务逻辑方法,也可能是依赖DAO组件实现的业务逻辑方法。
  • MVC控制层:此层由控制器组成,这些控制器用于拦截用户请求,并调用业务逻辑组件的业务逻辑方法,处理用户请求,并根据处理结果转发到不同的表现层组件。
  • 表现层:此层由系列的JSP页面、Velocity页面、PDF文档视图组件组成。此层负责手机用户请求,并将显示处理结果。

MVC设计模式
      其主要包括三个部分,Model-View-Controller(模型-视图-控制器),注重前端。

  1. J2EE分层应用概述
         &nbspJ2EE平台为设计、开发、集成和部署企业应用提供基于组件的方法。降低成本,还能对设计和实施过程进行快速跟踪。Java EE 7体系结构及提供的主要服务如下图所示:
    在这里插入图片描述
  • JPA (Java Persistence API,java持久化API)和JMS(Java Message Service,Java信息服务),JPA是在数据库中存储对象的ORM(Object/Relational mapping,对象关系表)定义提供基本的服务,如数据库访问。JMS这个API保证服务器和应用在网络上的通信可靠、异步。如ActiveMQ实现了JMS。
  • JCA(Java EE Connector Architecture, J2EE连接器架构)允许连接到源系统,批量处理非交互、块状任务。通过批服务可以链接不同开发架构的应用程序。
  • Managed Beans和EJB(Enterprise java beans,企业级java beans)使用POJO基本服务,提供一种简化的编程模型。Managed Beans可以执行嵌入代码的java对象。在Spring框架中,这是一些添加@Autowired注释的对象。
  • CDI(Contexts and Dependency Injecttion,上下文和依赖注入),提供适用于各种组件的概念拦截和注释,如类型安全的依赖注入,使用拦截器和一套共同的注释表示横切关注点。JTA事务拦截器实现,可以应用于任何POJO。
  • CDI是javaEE整个下一代类型安全的依赖注入事实上的API。在Spring框架中,应用程序可以设计应用的上下文,控制反转(IOC)和依赖注入功能(DI)CDI扩展允许以标准的方式超出现有能力来扩展平台。
  • Web Service使用JAX-RS(定义REST含状态传输之类服务的API)、JAX-WS、JSF、JSP和EL定义编程模型的Web应用。Web Fragments允许以自然方式自动注册第三方web框架。JSON提供一种方法来解析和WEB层生成JSON结构。Web Socket可以通过一个TCP链接建立双向、全双工的通信信道。
  • Bean VAlidation标准化了Java平台的约束定义、描述和验证,即使用注释的方式对Java Bean 进行约束验证。

1.3 Java EE技术规范

      Java EE 平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,对开发基于Web的多层应用程序提供了功能支持。

  • 多层式应用(Multitier Application)
  • 多层式服务(Mulititier Service)
  • 部署描述符(Deployment Description)
  • Java Bean Component:JavaBean 的同义词,主要用在jsp范例中。Java Bean 则是有一些包含是有属性的Java类组成,对外提供get和set方法。从技术上讲,这些类必须保证有一个不含参数的构造器并且实现Serializable接口。
  • JDBC(java database Connectivity):JDBC API为访问不同的数据库提供了一种统一的途径,ODBC一样,JDBC对开发者屏蔽了一些细节问题,另外,JDBC对书库库的访问也具有平台无关性。
  • JNDI(java Name and Directory Interface):JNDI API被用于执行名字和目录服务。一种能存储和检索资源或者通过名字查找信息的方式。
  • EJB(Enterprise Javabean)
  • PMI(Remote Method Invoke):RMI协议调用远程对象上的方法。它使用了序列化方式在客户端和服务器端传递数据。RMI是一种被EJB使用的更底层的协议。
  • XML(Extensible Markup Language):XML是一种可以用来定义其他标记语言的语言,被用来在不同的商务过程中共享数据。
  • Java EE容器(Java EE Container):也就是应用程序服务器。定义了web容器(包含Servlets和JSP),还定义了EJB容器(包含企业级java Bean )以及应用客户端容器(运行独立的应用程序)和在浏览器上运行的小程序容器。
  • Java IDL/CORBA
  • JSP (Java Server Pages):JSP页面由HTML代码和嵌入其中的Java代码组成。服务器在页面被客户端所请求后对这些java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
  • Java Servlet:是用Java写的一个服务器小程序,可以处理用户的http请求,返回结果。它扩展了Web服务器的功能,作为一种扶额U午安的应用,当被请求是开始执行,这和CGIPerl脚本很相似。Servlet提供的功能大多于JSP类似,不过实现的方式不同。JSP通常是大多数HTML代码中嵌入少来那个的java嗲吗,而Servlets全部由java写成并且生成HTML。
  • JavaMail:是通过应用程序发送邮件方式的API,提供了一套邮件服务器的抽象类,不仅支持SMTP服务器,也支持IMAP服务器。
  • JMA(Java Message Service):是用于和面向消息的中间件相互通信的应用程序接口(API)
  • JTA(Java Transaction Architecture):JTA 定义了一种标准的API,应用系统有此可以访问各种事务监控,划清数据库中上行和下行的通信界限。
  • JTS(Java Trasaction Service)
  • JCA(Java EE Connector Architecture,J2EE连接器架构):使应用程序能和信息系统(通常是数据库)通信
  • JPA(Java Persistence API,Java持久化API):这是一个在数据库中存储对象的ORM(Object/Relational mapping)定义。
  • JAAS(Java Authentication and Authorization Service,java鉴别于授权服务):识别并控制服务权限的一种方式。
  • JAXP(java API for XML Processing,加工XML文件的API):提供了处理XML文件的方式。
  • JAXR(Java API for XML Registies,提供XML注册为API):一个可以注册包含源数据的XML的API。
  • JAX-RS:定义REST(含状态传输)之类的服务。
  • JACC(Java authorization Contact for Container)
  • JASPIC(Java Authentication Service Provider Interface,java认证服务提供者接口):定义了应用程序如何通过传统的认证服务。
  • Managed Beans:一个可以执行嵌代码的java对象。在Spring框架中,这是一些添加了@Autowired注释的对象。
  • CDI(Contexts and Dependency Injection for Java EE,上下文和依赖注入):CDI是java EE整个下一代类型安全的依赖注入的事实上的API。在Spring框架中,应用程序可以设计应用的上下文,控制反转(IOC)和依赖注入(DI)。
  • Bean确认:通过定好的规则判断Java bean 的状态是有效的。

1.4 敏捷轻型框架

1.4.1 Hibernate简介

Hibernate
是一个开放源代码的对象关系映射框架,对JDBC进行了非常轻量级的对象封装,使得java程序员可以随心所欲的使用对象编程思维来操纵。即可以在Java客户端使用,也可以咋Servlet、JSP的web应用中使用。
Hibernate五个核心接口:

  • Session
  • SessionFactory
  • Transaction
  • Query
  • Configuration
    通过以上这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。
    Hibernate 4.x
  • 使用简单,功能强大
  • 原理和JDBC一样,通过insert、select、delete、update操作数据,但是Hibernate充当DAO层,根据POJO与实体类的映射配置自动生产SQL语句

数据的两种状态

  • 瞬时态
  • 持久态

瞬时态到持久态转换方法

  • 使用JDBC手工转换
  • 使用ORM框架解决,主流框架是Hibernate、JDO、TooLic

对象关系映射特征

  • 对象和关系数据是业务实体的两种表现形式。业务实体存在内存中表现为对象,在数据库中表现为关系数据。
  • 两者存在一定的对应关系,如下图:
    在这里插入图片描述
    对应关系
  • 表—类
  • 字段—属性
  • 记录—对象(回想JDBC编程,查询一条纪录时,封装成一个实体对象。查询多条记录时,对应的集合)

一般的ORM包括

  • 一个对持久类对象进行CRUD操作的API
  • 一个语言或API用来规定与类和属性相关的查询(SQL)
  • 一个规定mappingmetadata的工具:元数据,可以实现两个方向的自动转换。

Hibernate体系结构
在这里插入图片描述
Hibernate API的最小子集
在这里插入图片描述
Hibernate全面解决的体系
在这里插入图片描述

1.4.2 Struts2简介

Struts 2

  • 是在struts 1和WebWork的技术基础上进行合并的全新的struts 2 框架。
  • 以webWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制能够与ServletAPI完全脱离开。

Struts 2整体结构
在这里插入图片描述
Struts 2处理流程
在这里插入图片描述

  1. 客户端初始化一个指向Servlet容器(如Tomcat)的请求
  2. 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts 2和其他框架的集成很有帮助,如SiteMesh Plugin)
  3. 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action。
  4. 如果ActionMapper决定调用Action,FilterDispatcher把请求的处理交给Action个Proxy.
  5. ActionProxy创通过Configuration Manager询问框架的配置文件,找到需要调用的Action类。
  6. ActionProxy创建一个ActionInvocation的实例。
  7. ActionInvocation实例使用命名模式来调用,在嗲用Action的过程前后,设计相关拦截器(Intercepter)的调用。
  8. 一旦Action个执行完毕,ActionInvocation负责根据Struts。xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外一个Action链)一个需要被表示的JSP或者FreeMarker的模板。在表示的过程中可以使用struts 2框架中继承的标签,在这个过程中需要涉及ActionMapper.

1.4.3 Spring简介

Spring

  • 开源框架,是为了解决企业级应用程序开发复杂性而创建的。Spring模块构建在核心容器之上,核心容器定义了创建、配置和管理bean的方式。
    在这里插入图片描述
    组成Spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:
  • 核心容器:核心容器提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,它是工厂模式的实现。BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
  • Spring上下文:Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能。
  • Spring AOP:通过配置管理特性,Spring AOP模块直接将面向对象方面的编程功能集成到了Spring框架中,所以,可以很容易的使用Spring框架管理的任何对象支持AOP。Spring AOP模块为基于Spring的应用程序中的对象提供事务管理服务。通过使用Spring AOP,不用依赖EJB组件。
  • Spring DAO: JDBC DAO抽象层提供了有意义的层次结构,可用该结构来管理异常处理和不同供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写异常代码数量。Spring DAO的面向对象JDBC的异常遵从统统的DAO异常层次结构。
  • Spring ORM: Spring框架中插入了若干个ORM框架,从而提供了ORM的对象关系工具,其中包括JDO、Hibernate和Ibatis SQL Map。所有这些都遵从Spring的通用事务和DAO异常层次结构。
  • Spring Web模块:Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。所以,Spring框架支持与Jakarta Struts的集成。Web模块还简化处理多部分请求以及将请求参数绑定到域对象的工作。
  • Spring MVC框架:MVC框架是一个全功能的构建Web应用程序的MVC实现。通过策略接口,MVC框架变为高度可配置的,MVC容纳了大量视图技术,其中包括JSP、Velocity、Tiles、iText和POI。

Spring核心要点

  • 支持不绑定到特定Java EE服务的可重用业务和数据访问对象。

1.5 Java EE开发环境

1.5.1 JDK的下载和安装

  • JDK下载并安装
    JDK:http://www.oracle.com/
    安装略

  • 设置系统变量
    包括JAVA_HOME 、Path (略)

1.5.2 Tomcat 8.0的安装和配置

1.5.3 集成开发环境的安装和使用

1.5.4 MySQL数据库的安装和使用

1.5.5 SQL Server数据库的安装和使用

1.6 小结

小结

1.7 参考资料

《Java EE架构设计与开发实践》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值