Spring MVC 入门(一)知识简介

Java EE 应用概述

Java EE 应用提供的跨平台、开放性以及各种远程访问技术,为异构系统的良好整合提供了保证。

Java EE 应用的分层模型

Java EE 应用大致都可分为如下几层:

  1. Domain Object(领域对象)层。此层由一系列的 POJO( Plain Old Java Object,普通的、传统的 Java 对象)组成,这些对象是该系统的 Domain Object(领域对象),往往包含了各自所需实现的业务逻辑方法。
  2. DAO( Data Access Object,数据访问对象)层。此层由一系列的 DAO 组件组成,这些 DAO 实现了对数据库的创建、查询、更新和删除( CRUD )等原子操作。( DAO 层在 MyBatis 中也被称为 Mapper 层,其通过 SQL 语句的映射完成 CRUD 操作)。DAO 层主要做数据的持久化工作,其设计的总体规划需要与设计的表和实现类之间一一对应。
  3. Service(业务逻辑)层。此层由一系列的业务逻辑对象组成,这些业务逻辑对象实现了系统所需要的业务逻辑方法。这些业务逻辑方法可能仅仅用于暴露 Domain Object 对象所实现的业务逻辑方法,也可能是以来 DAO 组件实现的业务 逻辑方法。(中间层上下衔接,既应调用 DAO 层接口,有提供接口供 Controller 层的类来近行调用。)
  4. Controller(控制器)层。此层由一系列控制器组成,这些控制器用于拦截用户请求,并调用业务逻辑组件的业务逻辑方法,处理用户请求,并根据处理结果向不同的表现层组件转发。
  5. View(表现)层。此层由一些列的 JSP 页面、Velocity 页面、PDF 文档视图组件组成,负责收集用户请求,并显示处理结果。

总的来说,各层的 Java EE 组件之间以松耦合的方式耦合在一起,各组件并不以硬编码的方式耦合,这种方式是为了应用以后的扩展性。从上向下,上面组件的实现依赖于下面组件的功能;从下向上,下面组件支持上面组件的实现。Java EE 架构提供了良好的分离,隔离了各组件之间的代码依赖。

在这里插入图片描述

Java EE 应用的组件

Java EE 应用大致包括如下几类组件:

  1. 表现层组件。主要负责收集用户输入数据,或者向客户显示系统状态。最常用的表现层技术是 JSP,但 JSP 并不是唯一的表现层技术。表现层还可由 Velocity 、 FreeMarker 和 Tapestry 等技术完成,或者使用普通的应用程序充当表现层组件,甚至可以是小型智能设备。
  2. 控制器组件。对于 Java EE 的 MVC 框架,其提供一个前端核心控制器,核心控制器负责拦截用户请求,并将请求转发给用户实现的控制器组件。这些用户实现的控制器组件则负责调用业务逻辑方法,处理用户请求。
  3. 业务逻辑组件。这事系统的核心组件,实现系统的业务逻辑。通常,一个业务逻辑方法对应一次用户操作。一个业务逻辑方法应该是一个整体,因此要求对业务逻辑方法增加事务性。业务逻辑方法仅仅负责实现业务逻辑,不应该近行数据库访问。因此,业务逻辑组件中不应该出现原始的 MyBatis、Hibernate 和 JDBC 等 API。(保证业务逻辑组件中不出现原始的 MyBatis、Hibernate 和 JDBC 等 API 的一个更重要的原因:为保证业务逻辑方法的实现,与具体的持久层访问技术分离。当系统需要在不同持久层技术之间切换时,系统的业务逻辑组件无需任何改变。)
  4. DAO 组件。这个类型的对象比较缺乏变化,每个 DAO 组件都提供 Domain Object 对象基本的创建、查询、更新和删除操作,这些操作对应于数据库的 CRUD (创建、查询、更新、删除) 等原子操作。采用不同的持久层访问技术,DAO 组件的实现会完全不同。为了业务逻辑组件的实现与 DAO 组件实现分离,程序应该为每个 DAO 组件都提供接口,业务逻辑组件面向 DAO 接口编程,这样才能提供更好的解耦。
  5. 领域对象组件。领域对象( Domain Object )抽象了系统的对象模型。通常而言,这些领域对象的状态都必须保存在数据库里。因此,每个领域对象通常对应一个或多个数据表,领域对象通常需要提供对数据记录的访问方式。

Java EE 应用的结构和优势

对于信息化系统,前期开发工作对整个系统工作量而言,仅仅是一小部分,而后期的维护、升级往往占更大的比重。更极端的情况是,可能在前期开发期间,企业需求已经发生了变化,而这种改变是客观的,软件系统必须适应这种改变,这要求然间系统具有很好的伸缩性。这种框架结构其目的是让应用的各组件以松耦合的方式组织在一起,让应用之间的耦合停留在接口层次,而不是代码层次。

发布了6 篇原创文章 · 获赞 5 · 访问量 228

猜你喜欢

转载自blog.csdn.net/qq_41805741/article/details/103943142