您当前的位置:首页 > 电脑百科 > 程序开发 > 框架

解析SSH和SSM两大框架的组成及其区别

时间:2019-11-08 10:33:07  来源:  作者:
解析SSH和SSM两大框架的组成及其区别

 

前言

熟悉当下流行的两种企业开发MVC开源框架,是JAVA程序猿必备知识。MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。M是指业务模型,V是指用户界面,C则是控制器。一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。小编在学校的时候学习过SSH,SSM则是去公司后用的。

一、SSH 和 SSM 的定义

SSH 通常指的是 Struts2 做前端控制器,Spring 管理各层的组件,Hibernate 负责持久化层。
SSM 则指的是 SpringMVC 做前端控制器,Spring 管理各层的组件,MyBatis 负责持久化层。

二、SSH 和 SSM 的实现原理

解析SSH和SSM两大框架的组成及其区别

 

1.Struts2 的原理

解析SSH和SSM两大框架的组成及其区别

 

Struts2框架执行过程:

1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求

2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin

3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMApper来决定这个请求是否需要调用某个Action,FilterDispatcher是控制器的核心,就是mvc中c控制层的核心

4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy

5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类

6、ActionProxy创建一个ActionInvocation的实例

7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用

8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版

9、将处理结果返回给客户端

2.SpringMVC 的原理

解析SSH和SSM两大框架的组成及其区别

 

SpringMVC框架执行过程:

1、客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet

2、DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http方法、请求报文头和请求参数Cookie等)以及HandlerMapping的配置找到处理请求的处理器(Handler)

3、DispatcherServlet根据HandlerMapping找到对应的Handler,并返回

4、将处理权交给Handler(Handler将具体的处理进行封装),再由具体的处理器适配器(HandlerAdapter)对Handler进行具体的调用

5、处理器适配器执行Handler

6、Handler对数据处理完成以后将返回一个ModelAndView对象给处理器适配器

7、处理器适配器向前端控制器返回ModelAndView
ModelAndView是springmvc框架的一个底层对象,包括Model和View

8、Handler返回的ModelAndView只是一个逻辑视图并不是一个正式的视图,前端控制器请求视图解析器(ViewResolver)去进行视图解析,根据逻辑视图名解析成真正的视图(jsp)

9、视图解析器向前端控制器返回View

10、前端控制器进行视图渲染,视图渲染将模型数据(在ModelAndView对象中)填充到request域

11、前端控制器向用户响应结果

3.Hibernate 的原理

解析SSH和SSM两大框架的组成及其区别

 

Hibernate框架执行过程:

1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件

2.由hibernate.cfg.xml中的读取并解析映射信息

3.通过config.buildSessionFactory();//创建SessionFactory

4.sessionFactory.openSession();//打开Sesssion

5.session.beginTransaction();//创建事务Transation

6.persistent operate持久化操作

7.session.getTransaction().commit();//提交事务

8.关闭Session

9.关闭SesstionFactory

4、MyBatis原理

解析SSH和SSM两大框架的组成及其区别

 

MyBatis框架执行过程:

1、配置MyBatis的配置文件,SqlMapConfig.xml(名称不固定)

2、通过配置文件,加载MyBatis运行环境,创建SqlSessionFactory会话工厂SqlSessionFactory 在实际使用时按单例方式

3、通过SqlSessionFactory创建SqlSession,SqlSession 是一个面向用户接口(提供操作数据库方法),实现对象是线程不安全的,建议sqlSession应用场合在方法体内

4、调用 sqlSession 的方法去操作数据。如果需要提交事务,需要执行 SqlSession 的 commit() 方法

5、释放资源,关闭SqlSession

Struts2和SpringMVC两种框架对比

1.springmvc和struts2都是负责取转发的,但是两者针对request的请求上面区别很大。springmvc是针对于方法级别的请求的,也就是一个方法对应于一个请求,属于方法拦截,请求的数据方法不共享;而struts2则是针对一个Action类来进行请求的,即一个Action类对应于一个请求,所以类拦截,请求的数据类共享

2.springmvc入口是一个servlet前端控制器(DispatcherServlet),struts2入口是一filter过滤器

3.springmvc的配置文件相对struts2来说较为少,容易上手,可以加快软件开发的速度

Hibernate 和 MyBatis 两种框架对比

相同之处

1.Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的

2.Hibernate和MyBatis都支持JDBC和JTA事务处理

不同之处

1.Hibernate是一种O/R关系型,即完成数据库表和持久化类之间的映射,而MyBitas是针对的SQL-Maping,个人理解是一种Hibernate把数据库给封装好以后,可以调用相应的数据库操作语句HQL,而MyBitas则是用的原始的数据库操作语句

2.针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap。而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于业务流程

3.Hibernate优化起来相对MyBitas较难,而且Hibernate掌握起来相对MyBitas较难,但是Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL

Spring家族:

解析SSH和SSM两大框架的组成及其区别

 

三、总结

SSM和SSH相同之处在于都是用Spring依赖注入DI来管理各层的组件,并且都是使用面向切面编程AOP来管理事物、日志、权限等。不同之处在于MVC实现方式,以及ORM持久化方面不同(Hiibernate与Mybatis)。SSM越来越轻量级配置,将注解开发发挥到极致,且ORM实现更加灵活,SQL优化更简便;而SSH较注重配置开发,其中的Hiibernate对JDBC的完整封装更面向对象,对增删改查的数据维护更自动化,但SQL优化方面较弱,且入门门槛稍高。

如果觉得不错有帮助的,可以转发点赞关注一下。谢谢!



Tags:SSH   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
转自: https://kermsite.com/p/wt-ssh/由于格式问题,部分链接、表格可能会失效,若失效请访问原文密码登录 以及 通过密钥实现免密码登录Dec 15, 2021阅读时长: 6 分钟简介Windo...【详细内容】
2021-12-17  Tags: SSH  点击:(16)  评论:(0)  加入收藏
在本教程中,将展示如何使用Centos8的DVD镜像引导Rescue救援模式,并在救援模式中启用网络、配置SSH服务,供用户远程登录该服务器 系统环境Centos8加载ISO镜像,进入救...【详细内容】
2021-11-30  Tags: SSH  点击:(29)  评论:(0)  加入收藏
事件起因从安全分析系统里面发现一条带有病毒的下载,然后针对这条记录展开了一系列的分析分析过程1.登录到被感染服务器,查看系统状况,hadoop 这个用户在 2020/6/18 20:32 从这...【详细内容】
2021-11-23  Tags: SSH  点击:(32)  评论:(0)  加入收藏
1.背景介绍几乎每一个玩渗透的人都会接触到metasploit framework,简称msf。这是一个渗透测试框架,用ruby语言编写的,该框架集成了很多可用的exploit,比如著名的ms08_067等。你可...【详细内容】
2021-11-15  Tags: SSH  点击:(37)  评论:(0)  加入收藏
老配置文件导到新交换机上,SSH不能登陆,会提示Received disconnect from 192.168.2.163: 2: The connection is closed by SSH ServerCurrent FSM is SSH_Main_VersionMatch其...【详细内容】
2021-10-26  Tags: SSH  点击:(162)  评论:(0)  加入收藏
背景上次给大家介绍了实现基础的运维系统功能—webssh,今日书接上回,继续给大家介绍一个web远程ssh终端录像回放功能。 一、思路网上查了一下资料,搜索了一下关于实现webs...【详细内容】
2021-10-13  Tags: SSH  点击:(40)  评论:(0)  加入收藏
一、背景介绍Metasploit就是一个漏洞框架。它的全称叫做The Metasploit Framework,简称叫做MSF。Metasploit作为全球最受欢迎的工具,不仅仅是因为它的方便性和强大性,更重要的...【详细内容】
2021-09-28  Tags: SSH  点击:(64)  评论:(0)  加入收藏
目的本文的目的是指导在Windows操作系统下面,如何配置通过ssh key来访问gerrit服务器。检查并生成本地的ssh key检查是否已经存在ssh key在生成本地的ssh key之前,我们需要首...【详细内容】
2021-07-23  Tags: SSH  点击:(129)  评论:(0)  加入收藏
作者:左右里编辑:釉子 据BitDefender安全研究人员称,他们发现了一个黑客组织正在以SSH暴力破解的方式攻击Linux设备,目的是在这些设备上安装门罗币恶意挖矿软件。SSH,一种为远程...【详细内容】
2021-07-22  Tags: SSH  点击:(186)  评论:(0)  加入收藏
今天在虚拟机里面安装了docker,利用docker起了一个centos。里面配置完成openssh后,利用xsheel连接docker里面的centos,发现特别慢,差不多要的1分钟才能连接上去。这肯定是有问题...【详细内容】
2021-07-21  Tags: SSH  点击:(131)  评论:(0)  加入收藏
▌简易百科推荐
近日只是为了想尽办法为 Flask 实现 Swagger UI 文档功能,基本上要让 Flask 配合 Flasgger, 所以写了篇 Flask 应用集成 Swagger UI 。然而不断的 Google 过程中偶然间发现了...【详细内容】
2021-12-23  Python阿杰    Tags:FastAPI   点击:(6)  评论:(0)  加入收藏
文章目录1、Quartz1.1 引入依赖<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.2</version></dependency>...【详细内容】
2021-12-22  java老人头    Tags:框架   点击:(12)  评论:(0)  加入收藏
今天来梳理下 Spring 的整体脉络啦,为后面的文章做个铺垫~后面几篇文章应该会讲讲这些内容啦 Spring AOP 插件 (了好久都忘了 ) 分享下 4ye 在项目中利用 AOP + MybatisPlus 对...【详细内容】
2021-12-07  Java4ye    Tags:Spring   点击:(14)  评论:(0)  加入收藏
&emsp;前面通过入门案例介绍,我们发现在SpringSecurity中如果我们没有使用自定义的登录界面,那么SpringSecurity会给我们提供一个系统登录界面。但真实项目中我们一般都会使用...【详细内容】
2021-12-06  波哥带你学Java    Tags:SpringSecurity   点击:(18)  评论:(0)  加入收藏
React 简介 React 基本使用<div id="test"></div><script type="text/javascript" src="../js/react.development.js"></script><script type="text/javascript" src="../js...【详细内容】
2021-11-30  清闲的帆船先生    Tags:框架   点击:(19)  评论:(0)  加入收藏
流水线(Pipeline)是把一个重复的过程分解为若干个子过程,使每个子过程与其他子过程并行进行的技术。本文主要介绍了诞生于云原生时代的流水线框架 Argo。 什么是流水线?在计算机...【详细内容】
2021-11-30  叼着猫的鱼    Tags:框架   点击:(21)  评论:(0)  加入收藏
TKinterThinter 是标准的python包,你可以在linx,macos,windows上使用它,你不需要安装它,因为它是python自带的扩展包。 它采用TCL的控制接口,你可以非常方便地写出图形界面,如...【详细内容】
2021-11-30    梦回故里归来  Tags:框架   点击:(27)  评论:(0)  加入收藏
前言项目中的配置文件会有密码的存在,例如数据库的密码、邮箱的密码、FTP的密码等。配置的密码以明文的方式暴露,并不是一种安全的方式,特别是大型项目的生产环境中,因为配置文...【详细内容】
2021-11-17  充满元气的java爱好者  博客园  Tags:SpringBoot   点击:(25)  评论:(0)  加入收藏
一、搭建环境1、创建数据库表和表结构create table account(id INT identity(1,1) primary key,name varchar(20),[money] DECIMAL2、创建maven的工程SSM,在pom.xml文件引入...【详细内容】
2021-11-11  AT小白在线中  搜狐号  Tags:开发框架   点击:(29)  评论:(0)  加入收藏
SpringBoot开发的物联网通信平台系统项目功能模块 功能 说明 MQTT 1.SSL支持 2.集群化部署时暂不支持retain&will类型消 UDP ...【详细内容】
2021-11-05  小程序建站    Tags:SpringBoot   点击:(56)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条