1.javaEE应用的分层模型

不管是经典的Java EE架构,还是轻量级的Java EE架构,大致上都可以分为以下几层:

Damain Object(领域对象)层:该层是由系列的POJO(普通的,传统的,Java对象)组成,这些对象是该系统的Domain Object,往往包含了各自需要实现的业务逻辑方法。

Dao(Data Access Object,数据访问对象)层:此层是由系列的DAO组件组成,这些Dao实现了对数据库的创建,查询,更新和删除(CRUD,增删改查)等原子操作。

业务逻辑层:此层是有一系列的业务逻辑对象组成,这些业务逻辑对象实现了系统所需要的业务逻辑方法,这些业务逻辑方法可能仅仅用于暴露Domain Object对象所实现的业务逻辑方法,也可能是依赖Dao组件实现的业务逻辑方法。

控制器层:此层由系列控制器组成,这些控制器用于拦截用户的请求,并调用业务逻辑组健的业务逻辑方法,处理用户的请求,并根据处理结果转发到不同的表现层组件。

表现层:此层是由系列的jsp等页面组成,用于获取用户的请求,并负责将处理结果显示出来。

各层Java EE组件之间是以松耦合的方法耦合在一起,各组件并不以硬编码的方法耦合,这种方法是为了应用以后的扩展性。从上到下,上面的组件依赖下面的组件的功能,从下到上,下面的组件支持上面组健的实现。

2.Java EE应用的组件

总体而言,Java EE应用大致包括如下几类组件:

表现层组件:主要是负责用户的输入数据,或者向客户端显示系统状态,最常用的表现层技术是JSP,但是JSP并不是唯一的表现层技术。

控制器组件:对于Java EE的MVC框架来说,框架提供一个前端核心控制器,而核心控制器用来负责拦截用户的请求,并将请求转发给用户实现的控制器组件,而这些用户实现的控制器组件则负责处理调用业务逻辑方法,处理用户请求。

业务逻辑组件:是系统的核心组件,实现系统的业务逻辑,通常,一个业务逻辑方法对应一此用户操作,一个业务逻辑方法应该是一个整体的,应此,要求,业务逻辑方法增加事务性,业务逻辑方法只负责实现业务逻辑,不应该进行数据库的访问。

Dao组件:也称为数据库访问对象,这个类型的对象比较缺少变化,每个Dao组件都提供Domain Object的创建,查询,更新,删除等操作。这些操作对应数据库中的CRUD等原子操作。当然,如果采用不同的持久层访问技术,Dao组件实现也不同。为了实现业务逻辑层和Dao层的分离,每个Dao组件都提供了接口,业务逻辑组件面向Dao接口编程,从而提供了更好的解耦。

领域对象组件:领域对象抽象了系统的对象模型,通常而言,这些领域对象的状态都是保存再数据库中,因此,每个领域对象通常对应一个后多个数据表。

使业务逻辑和Dao操作分开的原因是因为保证业务逻辑方法的实现,与具体的持久层访问技术分离,当系统需要在不同的持久层技术之间切换时,系统的业务逻辑组件无需任何改变。

持久层:

所谓持久,就是把数据保存到可以永久保持的存储设备当中。一般来说,持久更为直接的理解就是对数据库的各种操作,如CRUD(增加,删除,修改,查询),更新等操作,

持久层,就是把持久的动作封装成一个独立的层,这是为了降低功能代码之间的关联。创建一个更清晰的抽象,提高代码的内聚力,降低代码的耦合度,从而增强代码的要劳动局生和可重用性。

实现持久层的框架有: JDBC, Hibernate,Mybatis,JPA等技术。

3.常用的Java EE服务器

采用Struts+Spring+Hibermate这种架构的软件系统,无需专业的Java EE服务器支持,只需要简单的Web服务器就可,Java中常见的Web服务器都是开源的,而且具有很好的稳定性。

常见的Web服务器:

Tomcat:此服务器和Java结合的最好,时Sun官方推荐的JSP服务器。

Jetty:另一个优秀的服务器

Resin:目前最快的JSP,Servlet运行平台,支持EJB个人学习是免费的,但是商用的话是需要交纳相应的费用。

除了常用的Web服务器之外,还有许多的Java EE服务器,相对于Web服务器,Java EE服务器支持更多的Java EE特性,如分布式事务,EJB容器等,常用的Java EE服务器有:

JBoss:开源的Java EE服务器。

web Logic和WebSphere:专业的商用的JavaEE服务器,价格不菲。

对于轻量级的Java EE而言,没有必要使用Java EE服务器,简单的Web服务器即可。

java ee domain作用_java EE应用概述相关推荐

  1. java关键字的作用_java关键字及其作用

    java关键字及其作用 java 关键字及其作用 一. 关键字总览:关键字 含义abstract 表明类或者成员方法具有抽象属性assert 用来进行程序调试boolean 基本数据类型之一,布尔类型 ...

  2. java ee打印功能_Java EE 8的前5个新功能

    java ee打印功能 备受期待的Java Enterprise Edition 8版本具有两个令人兴奋的新API(JSON绑定1.0和Java EE Security 1.0),并且对当前API进行 ...

  3. java ee打印功能_Java EE:异步构造和功能

    java ee打印功能 介绍 Java EE具有许多API和构造以支持异步执行. 从可伸缩性和性能的角度来看,这是至关重要的. 让我们假设2个模块相互交互. 当模块A (发送方)以同步方式向模块B ( ...

  4. java ee 7精粹_Java EE 7精粹 ([美]Arun Gupta) 中文pdf扫描版[68MB]

    Java EE 7是Java EE最新版本的平台,它为建立Web应用和企业应用提供了简单.易用和全栈式的服务. Java EE 7精粹这本书提供了Java EE 7平台中关键规范的概述.全书共16个章 ...

  5. java ee 期末考试_JAVA EE 期末试题 (1)

    41.Servlet间完成协作,需要用到(A)完成请求指派 A.Requestdispatcher B.Responsedispatcher C.Servletdispatcher D.include ...

  6. java ee 7 新_Java EE 7:新功能???

    java ee 7 新 我有点"晚点",可以这么说--就Java EE 7的 "博客"而言. 自2013年6月发布以来,已经差不多10个月了 ,但是它仍然相对较 ...

  7. java ee基础知识_Java EE:基础知识

    java ee基础知识 想要了解一些基本原则,即与Java EE相关的技术术语. 对于许多人来说,Java EE / J2EE仍然最多意味着Servlet,JSP或Struts. 没有冒犯或双关语! ...

  8. java ee 怎么改名_Java EE 改名 Jakarta EE 后 又要换 Logo 了

    关于 Jakarta EE 的规范及版本化的问题,官方还整理一篇"关于 Jakarta EE 你必须知道的 5 件事",主要内容如下: 1.规范 Jakarta EE 规范将由 J ...

  9. java ee是什么_java ee与java的区别是什么

    JavaEE是指java enterprise edition,java企业版,多用于企业级开发,包括web开发等等很多组件. Java和JavaEE区别: 1. Java是一种可以撰写跨平台应用软件 ...

最新文章

  1. R语言ggplot2可视化使用guide_axis函数避免X轴标签互相重叠(Overlapping)、Dodge Overlapping X-axis Text with guide_axis()
  2. vb6.0快速操作注册表函数大全(仅字符串KEY值部分)
  3. python 两个列表相互映射_零基础同学,一看就会的Python字典操作指南
  4. Java 图片验证码的实现和模拟简单的登录
  5. django关闭debug后,报400错误
  6. 微信隐藏功能系列2:微信语音怎么转发?
  7. html中使用js实现福彩双色球随机选号
  8. fedora14更新yum源
  9. MD5加密算法(python)
  10. 大数据实操篇 No.17-Flink State介绍和使用(Datastream API)
  11. 微信小程序实现表情包编辑
  12. 黑苹果 Monterey wifi 蓝牙驱动 AX系网卡 解决方案
  13. A001-185-2521-李子泓
  14. python列表查找值_查找列表中某个值的位置(python)
  15. CentOS 7无法启动,在进度条卡死问题解决
  16. RK3399驱动开发 | 04 - WK2124串口芯片驱动浅析
  17. 昨晚(2009-09-08),自己的第一个项目上线成功,踩个脚印
  18. 实时监控网站内容更新,微信来提醒
  19. ElementUI的Drawer加上滚动条
  20. 思科路由器的时间配置

热门文章

  1. 【Python】青少年蓝桥杯_每日一题_2.27_杨辉三角
  2. Android——TabLayout 默认某个选项卡选中
  3. Android --- 新版本取色器吸管工具点击无效,没反应
  4. Python list列表的使用(增删改查)
  5. 微擎html注释,微擎界面设计规范
  6. 河北工程大学科信学院计算机二级,河北工程大学科信学院计算机科学与技术专业...
  7. 全球云数据中心发展预测白皮书2016~2021
  8. java https 慢_jetty https慢怎么调优?
  9. 微服务发展的历史_Spring Cloud Alibaba#03. 微服务的发展史
  10. 成功解决AttributeError: module ‘tensorflow‘ has no attribute ‘get_variable‘