SSH就是Struts2+Spring+Hibernate。

三个组件的简单介绍

Struts2:通俗的讲就是为了完成MVC模型中的C的功能,也就是编写具体的业务逻辑的地方。从他的设计上来看就是请求到了web容器,然后经过了一系列的过滤器,再通过请求FilterDispatcher询问ActionMapper是否需要调用某个Action,如果要调用的话, 然后执行先前配置好的拦截器,就到了我们的具体逻辑,执行完之后,还会继续执行对应的拦截器和过滤器逻辑,最后返回给调用方。

Spring:通俗的讲只是通过它的核心IOC来管理我们编写逻辑中间的一些bean。我们通过IOC来减少耦合和简化对象的操作。

Hibernate: 是对象关系映射框架,简单的说,它就是对JDBC进行了非常轻量级的对象封装,目的是让操作数据库像操作对象一样简单。

这个就是SSH三者最开始的目的,他们各司其职,在缺乏框架的年代,很好的配合着,以至于一直流传了下来。

三个组件现在的发展情况

介绍完了SSH的本质,接下来介绍一下这三个组件现在的发展情况。

首先Struts2框架爆出了很多高危漏洞,使得应用的安全有了很大程度的隐患。然后很多做法也不够优雅,特别是JSR-311标准出台之后,随着Restful方式的流程程度普及开来,Struts2越来越被大家所抛弃,虽然struts2也加入了一些plugin来进行支持REST,但是还是过于繁琐。所以导致了现在Struts2的没落。

然后spring以IOC为核心,然后进行大力扩展,先后推出了SpringMVC来完成逻辑层的编写逻辑,现在SpringMVC基本已经完成了替代struts2的工作(一些很老的项目可能没有进行改造)。然后在SpringMVC大获成功之后,基于SpringMVC和web容器,把他们两者进行结合,推出了SpringBoot,经过几年的发展和酝酿,现在后端基本被Spring系列所统一。所以现在要我来讲,后端框架的王者就只有一个Spring系列了。

最后Hibernate只是一个对操作数据库进行映射的ORM框架,有很多也可以替代,比如Ibatis, Mybatis, JPA等等,因为ORM框架有自己的优点也有自己缺点,就看使用者如何进行权衡了。

从我个人的意见来看,简单的业务逻辑直接用JPA(Spring基于Hibernate的封装)就可以了,如果是复杂的,还不如直接写SQL来得简单,调优也方便。

三个组件淘汰的原因

现在提倡和流行的是前后端分离(这里指的分离是完全分离,而不是之前通过模版进行分离,前后端数据交互是根据HTTP进行的)。

并且后端设计的接口趋向于Restful的架构。为什么有这种变化,因为现在前端不仅仅是Web浏览器端,在移动互联网时代,APP也是很大一部分。所以从后端的角度来看,他们都是客户端。APP是没办法通过模版进行渲染的,只能通过HTTP传输数据。这也是后端服务发展的趋势。

Java后端技术有很多,如果想要提高,最好的捷径就是踏踏实实的进行学习,对于刚工作不久的人来说,可以把学习SSH框架的时间用来学习SpringMVC,然后掌握Spring的核心,然后学习什么是Restful概念,最后可以了解JDBC的一些概念(前期不推荐学习ORM框架)。

另外的有SSM框架,老一点项目Spring+Struts2+Mybatis,现在主流是Spring+SpringMVC+Mybatis。

Mybatis是半自动的,Mybatis自动化的地方在于它把数据给我们封装后返回给我们,手动的部分在于我们自己来写sql,这样的方式很灵活,我们可以根据需求写最优的sql语句。

Hibernate是全自动的,sql都帮我们写好了,但是这也是Hibernate一个很大的缺点,有时候它给的sql语句并不是最优的,就极大的影响了我们的效率。

"当我们失去的时候,才会知道自己曾经拥有。"

ssh框架被淘汰的原因的更多相关文章

  1. SSH框架整合

    SSH框架整合 一.原理图 action:(struts2) 1.获取表单的数据 2.表单的验证,例如非空验证,email验证等 3.调用service,并把数据传递给service Service: ...

  2. 基于SSH框架的学生公寓管理系统的质量属性

    系统名称:学生公寓管理系统 首先介绍一下学生公寓管理系统,在学生公寓管理方面,针对学生有关住宿信息问题进行管理,学生公寓管理系统主要包含了1)学生信息记录:包括学号.姓名.性别.院系.班级:2)住宿信 ...

  3. SSH框架简化(struts2+spring+hibernate)

    目的: 通过对ssh框架有了基础性的学习,本文主要是使用注解的方式来简化ssh框架的代码编写. 注意事项: 1.运行环境:Windows 8-64位,Eclipse(开发工具),jdk1.8.0_91 ...

  4. 转 SSH框架搭建详细图文教程

    原址:http://blog.sina.com.cn/s/blog_a6a6b3cd01017c57.html 什么是SSH? SSH对应 struts spring hibernatestruts ...

  5. 关于SSH框架设计的一些理解

    近期在学习企业开发领域非常流行的SSH框架(Struts.Hibernate.Spring).因为之前有做过原生的Servlet+JSP的项目,所以在学习过程中我会跟原生开发模式进行对照,在这里我把自 ...

  6. javaWeb项目(SSH框架+AJAX+百度地图API+Oracle数据库+MyEclipse+Tomcat)之一 基础Struts框架搭建篇

    即将开始着手写这个项目,所以希望通过这篇博客来记录自己学习的过程 今天开学第一天,就上了软件工程实践课,自己也开始着手做这个大作业了.首先我的项目名称叫做智能班车管理系统. 项目的概况: 该软件产品是 ...

  7. SSH框架搭建最终版【测试、log4j、baseDao】

    最详细搭建SSH框架环境 本博文主要是讲解如何搭建一个比较规范的SSH开发环境,以及对它测试[在前面的搭建中,只是整合了SSH框架,能够使用SSH实现功能],而这次是相对规范的. 导入开发包 在Str ...

  8. Maven 整合 SSH 框架

    前面的一系列文章中,我们总结了三大框架:Struts2,Hibernate,Spring 的基本知识.本篇就姑且尝试着使用 Maven 这个项目构建工具来将这三个框架整合一起.说到这里,如果有对 Ma ...

  9. SSH框架完全整合

    大三学期渐末,事情也挺多的,上周就开始着手整合SSH框架,到现在才真正的完成,过程中碰到了许多小问题(小问题大折腾,哭脸.jpg).本着善始善终的原则,最终把它给完成了. 本篇文章就在: win7 6 ...

随机推荐

  1. python免密远程执行shell

    使用paramiko库:https://github.com/paramiko/paramiko 简单封装SSH类 import paramiko class SSH: def __init__(se ...

  2. java高并发系列 - 第13天:JUC中的Condition对象

    本文目标: synchronized中实现线程等待和唤醒 Condition简介及常用方法介绍及相关示例 使用Condition实现生产者消费者 使用Condition实现同步阻塞队列 Object对 ...

  3. python基础(16):内置函数(二)

    1. lamda匿名函数 为了解决⼀些简单的需求⽽设计的⼀句话函数 # 计算n的n次⽅ def func(n): return n**n print(func(10)) f = lambda n: n ...

  4. PlayJava Day005

    今日所学: /* 2019.08.19开始学习,此为补档. */ 类:一类事物的抽象体(如全人类,学生类,订单类) 对象:具体的个体(如张三,某个外卖订单) 对象具有属性和行为. 声明的属性语句一般放 ...

  5. C++ 自增、自减运算符的重载和性能分析

    01 ++.--运算符重载函数的格式 自增运算符和自减运算符是有前置和后置之分的,如: a++ // 后置自增运算符 ++a // 前置自增运算符 b-- // 后置自减运算符 --b // 前置自减 ...

  6. iOS自定义TabBar使用popToRootViewControllerAnimated返回后tabbar重叠

    解决方法 所以方法就是:遵循UINavigationController的代理,用代理方法解决该Bug,代码如下: 实现代理方法: { // 删除系统自带的tabBarButton for (UIVi ...

  7. Vue实战狗尾草博客管理平台第六章

    Vue实现狗尾草博客后台管理系统第六章 本章节内容 文章列表 文章详情 草稿箱 文章发布. 本章节内容呢,开发的很是随意哈,因为多数就是element-ui的使用,熟悉的童鞋,是可以很快完成本章节的内 ...

  8. [b0024] python 归纳 (十)_线程 _Thread模块

      #!/usr/bin/pythonn # -*- coding: UTF-8 -*- """ 学习线程 thread 总结: 1. 主线程退出,所有子线程都退出 2. ...

  9. VM虚拟机Android安装图形界面

    摘自,转 https://blog.csdn.net/weixin_42633191/article/details/89391188

  10. golang数据结构和算法之StackArray数组堆栈

    用数组实现的堆栈, 另一种,是用链表实现的堆栈, 在各种不同的编程语言上, 实现都是类似的. StackArray.go package StackArray //基于数组实现的堆栈 const ar ...