Java EE,Java 平台企业版(Java Platform Enterprise Edition),之前称为Java 2 Platform, Enterprise Edition (J2EE),2018年3月更名为 Jakarta EE(这个名称应该还没有得到群众认可)。狭义的 Java EE 是 Sun 公司为企业级应用推出的标准平台,用来开发B/S架构软件,可以说是一个框架,也可以说是一种规范。广义的 Java EE 包含各种框架,其中最重要的就是 Spring 全家桶。Spring 诞生之初是为了改进 Java EE 开发的体验,后来逐渐成为了 Java Web 开发的实际标准。

JavaEE主要技术

JavaEE 目前有十三种核心技术。它们分别是:JDBC、JNDI、EJB、RMI、Servlet、JSP、XML、JMS、Java IDL、JTS、JTA、JavaMail和JAF。

简单介绍下需要重点关注的技术。

  • JDBC Java 数据库连接,(Java Database Connectivity,JDBC)是 Java 语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。

  • JNDI Java 命名和目录接口(Java Naming and Directory Interface,JNDI),是 Java 的一个目录服务应用程序界面(API),它提供一个目录系统,并将服务名称与对象关联起来,从而使得开发人员在开发过程中可以使用名称来访问对象。

  • EJB 企业级 JavaBean(Enterprise JavaBean, EJB)是一个用来构筑企业级应用的服务器端可被管理组件。不过这个东西在 Spring 问世后便被替代了。

  • Servlet Servlet(Server Applet),是用 Java 编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。

    狭义的 Servlet 是指 Java 语言实现的一个接口,广义的 Servlet 是指任何实现了这个 Servlet 接口的类,一般情况下,人们将 Servlet 理解为后者。

  • JSP JSP(全称JavaServer Pages)是由 Sun 公司主导创建的一种动态网页技术标准。JSP 部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成 HTML、XML 或其他格式文档的 Web 网页,然后返回给请求者。

JaveEE的三层架构

所谓系统架构是指,整合应用系统程序大的结构。经常提到的系统结构有两种:三层架构与 MVC。这两种结构既有区别,又有联系。但这两种结构的使用,均是为了降低系统模块间的耦合度。

三层架构

三层架构是指:视图层 Controller、服务层 Service,与持久层 DAO。它们分别完成不同的功能。

  • Controller 层:用于接收用户提交请求的代码
  • Service 层:系统的业务逻辑主要在这里完成
  • DAO 层:直接操作数据库的代码

JavaEE三层架构

为了更好的降低各层间的耦合度,在三层架构程序设计中,采用面向抽象编程。即上层对下层的调用,是通过接口实现的。而下层对上层的真正服务提供者,是下层接口的实现类。服务标准(接口)是相同的,服务提供者(实现类)可以更换。这就实现了层间解耦合。

命名规范

  • 持久层(DAO 层):

    包名:项目根目录.dao

    接口名:IXxxDao

    实现类子包:impl

    实现类:XxxDaoImpl

  • 服务层(Service 层):

    包名:项目根目录.service

    接口名:IXxxService

    实现类子包:impl

    实现类:XxxServiceImpl

  • 视图层(Controller 层):

    包名:项目根目录.controller

完善三层架构层的步骤:分层需要一个媒介来进行传输domain(域对象)

  1. 先创建一个domain包 ,在包里面创建相应的实体类(例如:Student)

2 在domain包的同一级,建daoservicecontroller包,每个包里都需要写接口。

接口名称命名: IXxxDAOXxxDaoIXxxServiceXxxServiceIXxxControllerXxxController

  1. 在每层的包里面再建一个包用于存储对应接口的实现类: impl

    这个包类的名称:XxxDAOImpl/XxxDaoImpl

MVC模型

MVC(Model View Controller)是一种软件设计的框架模式,它采用模型(Model)-视图(View)-控制器(controller)的方法把业务逻辑、数据与界面显示分离。把众多的业务逻辑聚集到一个部件里面。核心思想:将数据的展示、业务处理、控制处理进行分离,使用不同的组件进行处理。

  • V:View视图,Web程序中指用户可以看到的并可以与之进行数据交互的界面,比如一个Html网页界面,或者某些客户端的界面。

  • M:Model模型:进行所有数据的处理工作,模型返回的数据是中立的,和数据格式无关,一个模型可以为多个视图来提供数据,所以模型的代码重复性比较低,Model是不能直接与视图交互的。

  • C:Controller控制器:负责接受用户的输入,并且调用模型和视图去完成用户的需求,控制器不会输出也不会做出任何处理,只会接受请求并调用模型构件去处理用户的请求,然后在确定用哪个视图去显示返回的数据。

两者关系

三层架构和MVC并没有直接的联系,MVC是一种设计模式,而三层架构是一种软件架构。目的都是解耦,提高代码复用,适用于团队开发;

表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得;

业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理;

数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等;

MVC与三层架构

这两者之间的联系如下:

三层架构与MVC的关系

JavaEE框架

JavaEE 拥有广泛市场的原因之一就是可以使用多种框架来使开发变得简单。对于框架的选择多种多样,目前比较常见的框架组合有 SSH和SSM。在后面的章节中会作详细介绍。另外Spring本身也提供了多种层次的框架供选择,可以到Spring官网了解详情。

  • Spring

    Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。任何 Java 应用都可以从 Spring 中受益。Spring 的核心是控制反转(IOC)和面向切面(AOP)。简单来说,Spring 是一个分层的 JavaSE/EE full-stack(一站式) 轻量级开源框架

  • SpringMVC

    SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。

  • mybatis

    mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。

  • Struts

    Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。Struts能充分满足应用开发的需求,简单易用,敏捷迅速。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间。

  • Hibernate

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

SSH

SSH(Struts+Spring+Hibernate) 是一个集成框架,是目前较流行的一种JAVA Web应用程序开源框架。

SSH架构

Struts负责Web层:ActionFormBean接收网页中表单提交的数据,然后通过Action进行处理,再Forward到对应的网页,在Struts-config.xml中定义了<action-mapping>,ActionServlet会加载进来。

Spring负责业务层管理,即Service:Service为Action提供统一的调用接口,封装持久层的DAO,并集成Hibernate,Spring可对JavaBean和事物进行统一管理。

Hibernate负责持久层,完成数据库的CRUD操作:Hibernate有一组hbm.xml文件和PO,是与数据库中的表相对应的,然后定义DAO,这些是与数据库打交道的类。

在Struts+Spring+Hibernate系统中,对象之间的调用流程如下:

Struts—>Spring—>Hibernate

JSP—>Action—>Service—>DAO—>Hibernate

SSM

SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容),常作为数据源较简单的web项目的框架。

持久层(MyBatis): Dao层(Mapper)主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此。其设计首先是设计DAO接口,然后在 Spring配置文件中定义此接口的实现类,然后就可在模块调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰。DAO层的数据源配置,以及有关数据库连接的参数都在 Spring的配置文件中进行配置。

业务层(Spring):Service层主要负责业务模块的逻辑应用设计。首先设计接口,再设计其实现的类;接着再在 Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用 Service接口来进行业务处理。Service层的业务实现,具体要调用到已定义的DAO层的接口。封装 Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁。

表现层(SpringMVC):Controller层负责具体的业务模块流程的控制。在Controller层里面要调用 Service层的接口来控制业务流程。控制的配置也同样是在 Spring的配置文件里面进行,针对具体的业务流程,会有不同的控制器,我们具体的设计过程中可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块,这样不仅使程序结构变得清晰,也大大减少了代码量。

视图层:View层与控制层结合比较紧密,需要二者结合起来协同工发。View层主要负责前台sp页面的表示。