1.1 Java EE开发技术
首先来了解目前Java EE领域一些常用的开发框架。
1.1.1 Java EE的三层架构
经典的Java EE应用是三层架构,分别为表现层、业务逻辑层和数据访问层。这种应用的划分方式,可以让项目的参与人员发挥各自的专长,更加专注于特定的开发工作。经典的Java EE三层架构如图1-1所示。
图1-1 Java EE应用三层架构
在过去的十年间,这个经典的架构被应用于各种企业级项目中,深得开发者的青睐,精通三层开发技术几乎成为Java程序员的标配。这么多年来,基于这个架构,涌现出了不少优秀的开发框架,下面将介绍目前市面上较为流行的开发框架。
1.1.2 MVC框架
说起Servlet框架,不得不说最经典的Struts。它是一个基于Servlet/JSP的MVC框架,采用了经典的MVC模式。它的诞生,大大减轻了Web开发的工作量,一度成为Java Web领域中最流行的框架。但是由于Struts的部分缺陷(例如过于依赖Servlet),造成很多开发人员转去使用其他的MVC框架(例如WebWork、Tapestry)。Struts在发展的过程中,结合了WebWork框架,从而推出了全新的Struts2。实际上,Struts2已经抛弃了Struts1的核心,完全采用WebWork的核心设计。目前Struts2仍然是主流的MVC框架之一。
除了Struts之外,Java EE领域另一个佼佼者Spring,也推出了自己的MVC框架:Spring Web MVC。这是一个基于Servlet构建的Web框架,刚推出时虽然并没有得到广泛的应用,但随着它不断的发展,现在俨然成为MVC框架的首选。Spring在刚开始,只负责提供IoC容器,用于整合、管理企业应用中的各个组件。之前可能有朋友将Spring划分到业务逻辑层中,认为它是一个业务逻辑层的框架,但随着Spring涉猎的领域越来越广,其不仅推出了Spring MVC,还推出了数据访问层框架Spring Data。Spring Data的作用更像是一个数据访问层的适配器。这样来看,Spring大有“一统江湖”之势。本书后面的章节,也会涉及Spring Data的相关知识。
以上简单介绍了Struts和Spring MVC,除了它们之外,还有诸如Tapestry、JSF等MVC框架,在此就不展开讨论了。由于本书以Spring Boot为核心,因此本书会使用Spring MVC框架。
1.1.3 数据访问层框架
数据访问层主要对数据进行增、删、改、查。最初人们使用JDBC的API进行数据库操作,后来,著名程序员Gavin King创建了Hibernate框架,该框架对JDBC进行了封装,让Java对象与数据库表建立映射关系,操作对象等于操作数据,这使得Hibernate迅速成为数据访问层的热门框架。除了Hibernate之外,另一个开源框架MyBatis也是业界的宠儿,一旦涉及关系型数据库的项目,大家首先想到的就是这两个开源框架。随着NoSQL数据库的兴起,目前在数据访问层,我们拥有更多的技术选项。Spring针对数据访问层,提供了Spring Data框架,这等于在各个数据访问框架之上,增加了一个适配层,其目的是使用同样的模型、代码来实现不同数据库操作。本书将主要讲解Spring Data框架。
1.1.4 视图技术
在传统的Java Web开发中,多使用JSP视图,但也有人使用Freemarker、Velocity等模板技术。Spring MVC支持多种模板技术,例如Freemarker、Thymeleaf、Groovy Markup等。Freemarker作为一个老牌的模板引擎,目前市面上已有非常多的文档可以参考。相对于Freemarker来说,Thymeleaf较为新颖,本书将以Thymeleaf为核心,深入讲解Thymeleaf技术。
本节主要向大家简单介绍了Java EE三层架构及相应的主流技术,再次申明,本书将会以Spring Boot、Thymeleaf、Spring Data整合为主线,讲解全新的Java EE开发技术。下面开始搭建本书的开发环境,如果读者已经掌握相关的工具,可直接跳过下面的内容。