![Java EE轻量级解决方案:S2SH](https://wfqqreader-1252317822.image.myqcloud.com/cover/949/772949/b_772949.jpg)
1.3 Java EE架构技术
Java EE的架构技术很多,在Java EE应用中可以以传统的JSP作为表示层技术,以一系列开源框架作为控制层、中间层和持久层的解决方案,并将这些开源框架有机地结合起来,使得Java EE应用具有高度的可扩展性和可维护性。
1.3.1 JSP&Servlet
JSP和Servlet是Java EE中最早的规范,也是典型的Java EE技术,直到现在,JSP依然广泛应用于各种Java EE开发中,充当表示层的角色。
Servlet和JSP其实是完全统一的,二者在底层运行原理上是完全一样的。运行时,JSP必须被Web服务器编译成Servlet,所以真正在Web服务器中运行的是Servlet,真正提供HTTP服务的也是Servlet,因此广义的Servlet包含JSP和Servlet。目前Java EE应用中,已经很少单纯使用Servlet充当表示层,因为这样开发成本太高且不易维护,所以Servlet更多的是作为控制层组件来实现相应的功能。
1.3.2 Struts2介绍
Struts是最早的MVC框架,其作者Craig McClanahan是JSP规范的制定者之一,并参与了Tomcat的开发,所以从诞生的第一天起,就备受Java EE应用开发者的青睐。多年来,Struts确实是Java EE应用中使用最为广泛的MVC框架,拥有广泛的市场支持。
随着Java EE项目复杂性的提高,原来的Struts框架已难以胜任更复杂的需求,于是Struts与另一个优秀的MVC框架WebWork结合,诞生出了全新的Struts2。
Struts2拥有众多优秀的设计,吸收了传统Struts和WebWork二者的精华,其目标很简单——使Web开发变得更加容易。为了达成这一目标,Struts2中提供了很多新特性,比如智能的默认设置、annotation的使用以及“惯例重于配置”原则的应用(大大减少了XML配置)等。另一方面Struts2也减小了框架内部的耦合度,开发人员还可以通过拦截器(可以自定义拦截器或者使用Struts2提供的拦截器)对请求进行预处理和后处理,如此处理请求就变得更加模块化,进一步减小了耦合度。
1.3.3 Hibernate介绍
Hibernate是一个开源的、轻量级的ORM(Object Relation Mapping)持久化框架,它允许应用程序以面向对象的方式来操作关系型的数据库,负责将对象数据保存到关系型数据库中和从关系型数据库中读取数据并封装成对象的工作。通过简单的配置和编码即可替代JDBC烦琐的程序代码。
Hibernate最大的优点就在于以面向对象的方式处理持久化数据,从而很好地解决了面向对象的Java语言与关系型数据库之间数据表示形式不一致的矛盾。在Java语言中,数据可以存储在实体对象中,同时实体对象之间具有继承、多态和聚合等特点,而在数据库中存储的是二维关系数据,表与表的关系只有主外键关联关系,Hibernate的引入可以解决上述矛盾。
1.3.4 Spring介绍
Spring框架是Java EE应用的全方位解决方案,它贯穿表示层、业务层和持久层。Spring本身还提供了一个MVC框架:Spring MVC,使用Spring框架可以直接使用该MVC框架,也可以方便地与其他MVC框架集成。Spring框架能与大多持久层框架无缝整合,如Hibernate、iBATIS、OJB等,也可以直接使用JDBC。如此,Spring像一个中间层容器,向上可以与MVC框架整合,向下可以和各种持久层框架整合,将系统中的各部分组件以松散的方式结合在一起。
Spring作为一个一站式的Java EE解决方案,渗透了Java EE技术的方方面面,它主要用来实现依赖注入、面向切面的编程、声明式事务以及对持久层的支持和简化等功能。
S2SH集成框架就是Struts2+Spring+Hibernate,使用此集成框架使Java EE应用更加健壮、稳固、轻巧和优雅,也是当前最流行的轻量级Java EE技术框架。
1.3.5 EJB3.0介绍
EJB(Enterprise JavaBean)是一种用于分布式应用的标准服务器端组件模型。EJB是构造可移植、可重用以及可伸缩的业务应用程序的平台。从EJB诞生开始,EJB就被号称为可构造的企业级Java组件模型或框架,提供事务、安全、自动持久化等构造服务。
EJB组件有三种类型,分别是会话Bean、实体Bean和消息驱动Bean。会话和消息驱动Bean用于实现EJB应用中的业务逻辑,而实体Bean用于持久化。
由于EJB2.0的复杂性,在Spring和Hibernate等轻量级框架出现后,大量的用户转向了轻量级框架开发,于是出现了EJB3.0规范。相对于EJB2.0,EJB3.0做到了尽可能的简单和轻量化,它的两个重要的变更是使用了JDK5.0中的注解工具和轻量型的JPA(Java Persistence API,Java持久化API)。EJB3.0规范的简化也得到Java社区的充分认可,且Spring框架也集成了JPA,并实现了EJB3.0的一些特性。