SSM:Struts、Spring、Mybatis SSM三层集成框架系统总体设计:模块划分、数据库表,存储过程
J2EE框架是一种非常流行的Web开发框架。J2EE框架完整地定义了一套标准的应用开发体系结构和部署环境。基于SSH的轻量级组件模型的出现,为中小企业的应用开发提供了新的解决问题的方法。但SSH框架中持久层技术Hibernate是一种“全自动”式的ORM实现方案,该方案对数据库设计模式要求苛刻,且限制使用存储过程,给数据操作较多、表结构多变的系统的开发带来了很大的不便。SSM轻量级开发框架解决了这个问题,该框架中的数据持久层技术是MyBatis。MyBatis是一种“半自动”式的ORM实现方案,它在SQL开发的工作量和数据库移植性方面的让步,为系统设计提供了最大的自由空间。
基于J2EE的Web应用被划分为表示层、控制层、业务逻辑层和数据持久层,每一层在系统实现中起到不同的作用。这四层开发模式能够更好的实现“高内聚、低耦合”。将项目划分为不同的层次,有利于系统的开发、部署和维护。
Struts 1.0/Struts 2.0是当前Web系统开发使用最广泛的表示层框架技术。 Struts1.0是最早的MVC框架,包括模型、视图、控制器三部分。模型由实现业务逻辑的JavaBean构成;控制层由ActionServlet来实现;视图主要由一组JSP文件构成。
Spring是开发人员首选的业务逻辑层轻量级解决方案。Spring被称为JavaEE应用的一站式解决方案。Spring本身提供了一个设计优良的MVC框架–SpringMVC,该框架一直被数据操作量少的小型项目广泛使用。 Spring是J2EE框架的中间层容器,具有强大的整合框架能力。Spring可以向上与MVC框架无缝整合,向下可以与各种持久层框架无缝整合。Spring框架能够通过配置文件很好的将控制层框架和数据持久层框架整合到一起。强大的整合框架能力使之成业务逻辑层首选实现框架。
数据持久层框架的作用是将数据库存储从服务层中分离出来,降低耦合度。持久层设计的关键问题就是如何在对象和关系型数据库之间建立一种映射关系。持久层框架现分为两大主流:自己编写JDBC实现SQL语句;使用O/RMapping技术实现的“全自动”式(如Hibernate)和“半自动”式(如iBatis,MyBatis)的ORM实现方案。
JDBC框架是一种能够解决性能障碍的持久层框架。该框架只有在请求的时候才能被调用,能够节省内存。可是JDBC的实现当时需要开发人员非常精通SQL和JDBC,需要写很多的DAO方法,而且每一次数据请求都要开启和关闭数据连接。
JDBC框架适合小型简单项目。对于企业级项目,Hibernate是被广为推行的一个运行效率较高的持久层框架。它将Java对象(POJO)映射成持久化类,使应用程序能够以面向对象的方式来操作POJO,并将这些操作转换为底层的SQL语句来执行。企业级大型项目使用Hibernate,能够大大提高项目开发效率。
MyBatis是iBatis的升级版本。MyBatis为Java提供了更为强大的功能。
SSM框架是由Struts,Spring和MyBatis三个框架集成的。SSM框架自上而下被分别分为表现层、控制层、业务逻辑层和数据持久层。
业务逻辑层利用Spring框架的依赖注入实现对业务逻辑接口和DAO接口的实例 托管;在对象关系映射方面,利用Spring对数据库连接池的托管和对MyBatis框架的 支持;开发人员需要完成Spring配置文件applicationContext.xml中对数据源以及不同 模块所对应的bean进行配置,同时还要定义业务逻辑接口及其实现。 数据持久层利用MyBatis来实现半自动化对象的关系映射。这种方式为系统设计 提供了更大的自由空间,开发人员可以编写具体的SQL语句或存储过程。另外,开 发人员需要完成对MyBatis的配置文件SqlMapConfig.xml的配置,来实现DAO接口 及其实现的映射。
以“流程流转角色列表框的数据显示”功能的实现为例,来详细描述表示层、控制层、业务逻辑层和数据持久层的具体实现细节,以此介绍SSM框架的实现原理。表现层负责页面的设计以及处理用户请求,该层使用DIV分区和CSS样式表进行元素布局并使用jQuery提供的post方法来实现用户的请求与响应。控制层、业务逻辑层和数据持久层进行后台业务处理,通过层与层之间的相互交互来实现用户数据的处理和响应。
C/S架构与B/S架构是常用的两种系统架构。C/S架构即客户机一服务器架构。C/S架构充分利用客户端和服务器端的硬件环境,将任务合理分配到客户端和服务器端来实现,降低了系统的通讯开销。B/S架构即浏览器一服务器结构。在这种架构下,用户工作界面通过浏览器来实现,事务逻辑在服务器端实现。下文将简要的介绍两种框架的优缺点。
服务器运行时的数据负荷轻。C/S架构的体系结构由客户端应用程序和数据库服务器程序组成。客户端应用程序运行于用户自己的电脑,当需要数据操作时,客户端程序自动寻找服务器程序并发送请求。服务器程序按照规则作出应答,返回结果。该过程简单,服务器的数据负荷低。
系统维护量大。在系统运行时,需要在客户端和服务器端建立数据同步,因此,需要在两者之间建立实时的通讯连接,维持两地的数据库服务器在线运行。网络管理人员既要对服务器维护管理,又要对客户端维护管理,同时还需要较高的投资和技术支持,维护成本高。
系统维护量少,软件升级方便。B/S架构的软件系统只需管理服务器即可,客户端使用浏览器,一般不需要做维护。随着系统版本的不断升级,浏览器的升级和维护也越来越容易,使用起来越来越简单。
##### 缺点 服务器运行时的数据负荷重。B/S架构的系统软件安装在服务器端,事务逻辑在服务器端来实现,所有应用服务器运行数据负荷较重。一旦发生服务器“崩溃”,后果不堪设想,因此需要备有备份数据库的服务器。
通过以上两种架构的优缺点的比较,可以发现: 1)B/S架构的系统维护工作量比C/S架构的少。 2)B/S架构降低了客户端电脑负荷,降低了总成本。 3)从数据一致性和实时性方面考虑,B/S架构优于C/S架构。
MVC是一种架构型模式,它本身不引入新的功能,只是知道我们把Web应用结构做的更加合理,实现逻辑与页面相分离。在MVC模式中,应用程序被划分为了模型、视图和控制器三个部分。
MVC的组件关系图描述了模型、视图、控制器这三个部分的交互关系,下面按照交互顺序来详细描述一下它们的交互关系:
当浏览器向Web服务器发送一个请求时,服务器接收并处理传来的表单,然后返回一个新的页面。这个做法浪费了许多宽带,因为在前后两个页面中的大部分HTML代码是相同的。而出现的Ajax技术无需重新加载相同的页面,只是通过在后台与服务器进行少量数据交换,使得页面实现异步更新,不仅Web服务器的处理时间大大减少了,用户界面的响应时间也快多了。
Ajax技术在大多数现代浏览器中都能使用,而且不需要任何专门的软件和硬件。Ajax是一种客户端方法,它并不关心服务器是什么。Ajax是由HTML、JavaScript技术、DHTML和DOM组成。
Ajax应用程序的优势在于以下3方面。
jQuery凭借简介的语法和跨平台的兼容性,极大的简化了JavaScript开发遍历HTML文档、操作DOM、处理事件、执行动画和开发Ajax的操作。而独特而又优雅的代码风格改变了JavaScript程序员的设计思路和编写程序的方式。
jQuery强调的理念是写的少,做的多。jQuery独特的选择器、链式的DOM操作、事件处理机制和封装完善的Ajax都是其他JavaScript库望尘莫及的。概况起来,jQuery有以下优势:开源、轻量级、强大的选择器、出色的DOM操作的封装、可靠的事件处理机制、完善的Ajax、不污染顶级变量、出色的浏览器兼容性、链式操作方式、丰富的插件支持和完善文档等。