美文网首页编程人生
Web项目框架那些事儿

Web项目框架那些事儿

作者: 烨枫_邱 | 来源:发表于2018-05-29 12:07 被阅读0次

    SSH和SSM定义

    比较流行的两种企业开发MVC开源框架。MVC,即模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。框架之所以流行,在于其易复用和简化开发,精髓在思想,掌握了核心思想,我们掌握其他类似框架也不会有问题,建议大家有精力的话读一下框架源码,尤其是Spring。

    SSH 通常指的是 Struts2 做控制器(controller),spring 管理各层的组件,hibernate 负责持久化层。

    SSM 则指的是 SpringMVC 做控制器(controller),Spring 管理各层的组件,MyBatis 负责持久化层。

    共同点:1. Spring依赖注入DI来管理各层的组件。 2. 使用面向切面编程AOP管理事物、日志、权限等。

    不同点:Struts2 和 SpringMVC 控制器(controller)控制视图和模型的交互机制的不同,Struts2是Action类级别,SpringMVC是方法级别,更容易实现RESTful风格。

    SSH 和 SSM 的实现原理

    1.    Struts2 的实现原理

    Struts2框架执行步骤(Struts2使用Filter嵌入):

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

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

    3)、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action

    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 的实现原理

    SpringMVC框架执行步骤(SpringMVC使用Servlet嵌入):

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

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

    3)、DispatcherServlet根据HandlerMapping找到对应的Handler,将处理权交给Handler(Handler将具体的处理进行封装),再由具体的HandlerAdapter对Handler进行具体的调用。

    4)、Handler对数据处理完成以后将返回一个ModelAndView()对象给DispatcherServlet。

    5)、Handler返回的ModelAndView()只是一个逻辑视图并不是一个正式的视图,DispatcherSevlet通过ViewResolver将逻辑视图转化为真正的视图View。

    6)、Dispatcher通过model解析出ModelAndView()中的参数进行解析最终展现出完整的view并返回给客户端。

    Struct和Spring-MVC框架对比

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

    Spring-MVC的配置文件相对来说较为少,容易上手,可以加快软件开发的速度,亲身体验有效。

    Spring-MVC的入口是Servlet级别的而Struct的级别是Filter级别的。

    Hibernate 和 MyBatis 两种ORM框架对比

    两者的相同点

    Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory

    生成Session,最后由Session来开启执行事务和SQL语句。其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的。

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

    两者各自优势

    MyBatis可以进行更为细致的SQL优化,可以减少查询字段。

    MyBatis容易掌握,而Hibernate门槛较高。

    Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。

    Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便。

    Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。

    Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳,更新操作不能指定刷新指定记录,会清空整个表,但是也可以使用第三方缓存。

    Hibernate 封装性好,屏蔽了数据库差异,自动生成SQL语句,应对数据库变化能力较弱,SQL语句优化困难。

    MyBatis仅实现了SQL语句和对象的映射,需要针对具体的数据库写SQL语句,应对数据库变化能力较强,SQL语句优化较为方便。

    总结:

    SSM和SSH不同主要在MVC实现方式,以及ORM持久化方面不同(Hiibernate与Mybatis)。SSM越来越轻量级配置,将注解开发发挥到极致,且ORM实现更加灵活,SQL优化更简便;而SSH较注重配置开发,其中的Hibernate对JDBC的完整封装更面向对象,对增删改查的数据维护更自动化,但SQL优化方面较弱,且入门门槛稍高。

    附Spring 家族:


    Spring、SpringMVC和SpringBoot的区别

    spring boot就是一个大框架里面包含了许许多多的东西,其中spring就是最核心的内容之一,当然就包含spring mvc。

    spring mvc 只是spring 处理web层请求的一个模块。

    因此他们的关系大概就是这样:spring mvc < spring < spring boot 

    spring boot 是把 spring spring mvc spring data jpa 等等的一些常用的常用的基础框架组合起来,提供默认的配置,然后提供可插拔的设计,就是各种 starter ,来方便开发者使用这一系列的技术,spring boot 就是来解决开发中复杂配置问题的。开发可以先不关心如何配置,可以快速的启动开发,进行业务逻辑编写,各种需要的技术。

    spring 框架有超多的延伸产品例如 boot security jpa etc... 但它的基础就是 spring 的 ioc 和 aop ioc 提供了依赖注入的容器 aop 解决了面向横切面的编程 然后在此两者的基础上实现了其他延伸产品的高级功能 。Spring MVC 是基于 Servlet 的一个 MVC 框架 主要解决 WEB 开发的问题 因为 Spring 的配置太复杂了 各种 XML JavaConfig hin, 麻烦 。于是懒人改变世界推出了 Spring boot 约定优于配置 简化了 spring 的配置流程。

    Spring 最初利用“工厂模式”( DI )和“代理模式”( AOP )解耦应用组件。大家觉得挺好用,于是按照这种模式搞了一个 MVC 框架(一些用 Spring 解耦的组件),用开发 web 应用( SpringMVC )。然后有发现每次开发都要搞很多依赖,写很多样板代码很麻烦,于是搞了一些懒人整合包( starter ),这套就是 Spring Boot 。

    Spring MVC提供了一种轻度耦合的方式来开发web应用。

    Spring MVC是Spring的一个模块,式一个web框架。通过Dispatcher Servlet, ModelAndView 和 View Resolver,开发web应用变得很容易。解决的问题领域是网站应用程序或者服务开发——URL路由、Session、模板引擎、静态Web资源等等。

    Spring Boot实现了自动配置,降低了项目搭建的复杂度。

    众所周知Spring框架需要进行大量的配置,Spring Boot引入自动配置的概念,让项目设置变得很容易。Spring Boot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。同时它集成了大量常用的第三方库配置(例如Jackson, JDBC, Mongo, Redis, Mail等等),Spring Boot应用中这些第三方库几乎可以零配置的开箱即用(out-of-the-box),大部分的Spring Boot应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。

    Spring Boot只是承载者,辅助你简化项目搭建过程的。如果承载的是WEB项目,使用Spring MVC作为MVC框架,那么工作流程和你上面描述的是完全一样的,因为这部分工作是Spring MVC做的而不是Spring Boot。

    对使用者来说,换用Spring Boot以后,项目初始化方法变了,配置文件变了,另外就是不需要单独安装Tomcat这类容器服务器了,maven打出jar包直接跑起来就是个网站,但你最核心的业务逻辑实现与业务流程实现没有任何变化。

    所以,用最简练的语言概括就是:

    Spring 是一个“引擎”;

    Spring MVC 是基于Spring的一个 MVC 框架;

    Spring Boot 是基于Spring4的条件注册的一套快速开发整合包。

    到此,Web项目框架那些基本概念算是说清楚了,欢迎有不同的理解一起探讨~!

    相关文章

      网友评论

        本文标题:Web项目框架那些事儿

        本文链接:https://www.haomeiwen.com/subject/kddojftx.html