xiaokeaidn

SSH:

SSH在J2EE项目中表示了3种框架,即 Spring + Struts2 +Hibernate。

Struts2对Model,View和Action都提供了对应的组件,做为前端控制器。

Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。

Hibernate属于数据库持久化框架,是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,可以应用在任何使用JDBC的场合,可以在Servlet/JSP的Web应用中使用,也可以在应用EJB的J2EE架构中,完成数据持久化的重任。

SSH不是一个框架,是把多个框架(Struts2、Spring、Hibernate)结合在一起,用于构建灵活、易于扩展的多层Web应用程序。

Java EE架构大致分为以下几个层次:

实体层(POJO层)

数据库操作层(DAO层)Hibernate、Mybatis

业务逻辑层(Service层)Spring

控制器层(Controller层)Struts2、SpringMVC

视图层(View层)

SSH是目前使用较为广泛并且比较流行的Web程序集成框架,从功能上SSH分为视图层、业务逻辑层、数据库操作层、实体层(POJO)。

SSH运行流程:JSP页面(视图层)负责Request和Response,通过Struts2配置文件将接收到的Request分配到不同的Controller也叫Action(控制器层),然后Action将对应的请求分配到不同的service(业务逻辑层)中,根据不同的业务逻辑将最后的请求数据库操作的请求

到不同的DAO(数据库操作层),将获取到的结果通过原路返回,最终展示在JSP页面。

SSM:

SSM在J2EE项目中表示了3种框架,即 Spring + SpringMVC + Mybatis。

SpringMVC 对Model,View和Controller都提供了对应的组件,做为前端控制器。

Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。

Mybatis属于数据库持久化框架,配置Mybatis的配置文件,SqlMapConfig.xml(名称不固定)通过配置文件,加载Mybatis运行环境,实现数据库操作的运行。

SSM与SSH一样都不是一个框架,是把多个框架(Spring、SpringMVC、Mybatis)结合在一起,用于构建灵活、易于扩展的多层Web应用程序。

Java EE架构大致分为以下几个层次:

实体层(POJO层)

数据库操作层(DAO层)Hibernate、Mybatis

业务逻辑层(Service层)Spring

控制器层(Controller层)Struts2、SpringMVC

视图层(View层)

SSM是目前使用较为广泛并且比较流行的Web程序集成框架,从功能上SSH分为视图层、业务逻辑层、数据库操作层、实体层(POJO)。

SSM运行流程:

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

  2)、DispatcherServlet接收到这个请求之后将根据请求的信息(包括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)、前端控制器向用户响应结果。

SSH与SSM对比:

 

 

 

三、对比:

  1、Struts2与SpringMVC两种框架对比:

  1)不同之处:

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

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

  2、Hibernate和Mybatis两种框架对比:

  1)、相同之处:

    ①:Hibernate与Mybatis都可以是通过SessionFactoryBuilder,由XML配置文件生成SessionFactory,然后由SessionFactory生成Session,最后由Session来开启执行事务和SQL语句;

    ②、Hibernate和Mybatis都支持JDBC事务处理。

  2)、不同之处:

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

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

    ③、Hibernate优化起来相对Mybatis较难,而且Hibernate掌握起来相对Mybatis较难。

目前SSM越来越轻量级配置,利用注解配置将代码进一步优化以及精简,同时Mybatis可以自由编写SQL,可以实现各种复杂的SQL语句,并可以对SQL优化;而SSH目前还是通过Struts2配置文件进行控制,导致项目整个配置较为繁琐,并且Hibernate无法自由编写SQL,SQL语句优化难,而且配置较多,稍有不慎就容易掉进坑,入门容易,深入难。

分类:

技术点:

相关文章: