SSM框架搭建背景

Java web开发中SSM框架搭建背景

从web开发技术历史看javaweb

从静态到动态

追溯到最早的web开发,那个时候还没有动态页面,当时只有HTML技术,主要是文本和图片(包括gif动态图片)。这种页面显示内容简单,而且重点是它只能做信息的展示,无法同用户进行交互。在这种情况下,一旦有需要同服务器通信的需求,静态页面就无能为力了,此时产生了早期的动态网页技术CGI。

CGI定义了Web服务器与外部应用程序之间的通信接口标准,因此Web服务器可以通过CGI执行外部程序,让外部程序根据Web请求内容生成动态的内容。Perl因为跨操作系统和易于修改的特性成为CGI的主要编写语言。当然,CGI可以用任何支持标准输入输出和环境变量的语言编写,比如Shell脚本,C/C++语言,只要符合接口标准即可。

Web编程脚本语言产生

CGI技术固然可以实现简单的交互,但是也有很多性能和维护的问题。CGI对每个请求都会启动一个进程来处理,因此性能上的扩展性不高。另外,用在Perl和c语言中的程序中去输出一大堆复杂的HTML字符串,可读性和维护性是个大问题。在这种情况下,PHP/ASP/JSP这些web页面脚本语言就产生了。

web编程脚本语言可以把程序(动态内容)嵌入到HTML(模版)中去执行,不仅能更好的组织Web应用的内容,而且执行效率比CGI还更高,这类脚本语言得到了广泛的应用。于此同时,客户端的css技术产生也很大程度上降低了html的维护成本。

大型web项目构建

应对与越来越复杂的企业级web工程,Java EE核心规范被提出。其中,Servlet和JSP是运行在服务器端的Web组件,EJB运行在服务器端的业务组件,是一种分布式组件技术。2000年随之而来的.net平台,其ASP.NET构件化的Web开发方式以及Visual Stidio.net开发环境的强大支持,大大降低了开发企业应用的复杂度,Java平台后来出现的JSF也承袭了这一思想。两大平台在相互竞争和模仿中不断向前发展。

轻量级框架开发

随着业务不断复杂,我们需要在架构层面上解决维护性和扩展性等问题,这个时候,MVC的概念被引入到了Web开发中,模型Model用于封装与业务逻辑相关的数据和数据处理方法,视图View是数据的HTML展现,控制器Controller负责响应请求,协调Model和View。Model,View和Controller的分开,是一种典型的关注点分离的思想。此外,数据访问也逐渐通过面向对象的方式来替代直接的SQL访问,出现了ORM(Object Relation Mapping)的概念。此时框架化开发非常流行。而基于IoC和AOP思想的Spring框架的出现,使得各层次间解耦变得非常容易,摒弃了早期EJB的笨重,SSH(Struts2+spring+hibernate)一度成为Java web开发中最流行的框架组合,至今仍有很多基于SSH开发的java web工程。

为什么选择SSM

上面说了这么多,那么,现阶段java web开发要采用什么技术,我们今天的主角SSM究竟是一种怎样的存在,还要看看它们都是什么。

Mybatis–更轻量灵活的ORM

在建立对象关系映射时候,早期都使用hibernate,这是一个提供了完整ORM的框架,它屏蔽了SQL操作,使得我们可以通过面向对象的方式操作数据库。然而有两个问题,首先hibernate为了适配所有的不同类型数据库的SQl方言,所以它很重量级。另一个问题就是一旦不能直接操作SQL,就无法针对数据库访问性能作优化。而mybatis最大的好处就是sql完全手写,框架只提供映射,不但没有了上面的问题,还降低了学习成本。它也很容易和spring整合。

Spring–java开发的春天

spring的产生本来就是一种颠覆性的存在,在那个众多继承接口限制的ejb开发的时代,spring提供了一种完全不同的思路,依赖注入和控制反转,轻松实现了各层次之间的解耦,面向切面编程扩展了面向对象编程。在ssm中,spring发挥了和ssh中相同的作用,能够很方便地整合其它功能。

SpringMVC–非侵入式的MVC

Struts2曾经是非常火爆的web MVC框架,不过它是侵入式的框架,使用的时候要继承它提供的类,加上它确实很笨重也不太方便,所以springMVC一出现,就迅速占领了市场,加上Struts2一度被曝出重大漏洞,所以现在使用的不多了。springMVC本来就是spring项目的一部分,所以可以与spring无缝整合,成为目前使用人数最多的java web MVC框架。


其实框架只是工具,不变的是思想,随着spring boot的发展,其实现在有跟多人开始喜欢选择这种简化的快速开发方案,而且也确实好用,将来某一天可能会有新的技术再出现那么情况又会不一样。今天选择SSM是因为它能提供一套成熟且完备的开发方案。

后面我会发文章整理SSM搭建流程。

-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!