嘀嘀嘀~~~  页面这在飞快的跑来 . . .

SSM各层级作用


SSM

SSM:spring+springMVC+mybaits

Spring:是一个容器,就是一个bean(实体对象)大集合。

SpringMVC:控制器(业务逻辑层)(视图分发器)。

Mybaits:jdbc的封装(数据库框架)Mapper.xml。

SSM框架集由Spring、SpringMVC、MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架。

其中spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。

SpringMVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。
页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。

各层级

  • 表现层(springMVC):Controller层(Handler层)
    • 负责具体的业务模块流程的控制
    • Controller层通过要调用Service层的接口来控制业务流程,控制的配置也在Spring配置文件里面。
  • 业务层(Spring):Service层
    • Service层:负责业务模块的逻辑应用设计。
    • 首先设计其接口,然后再实现他的实现类。
    • 通过对Spring配置文件中配置其实现的关联,完成此步工作,我们就可以通过调用Service的接口来进行业务处理。
    • 最后通过调用DAO层已定义的接口,去实现Service具体的 实现类。
  • 持久层(Mybatis):Dao层(Mapper层)
    • Dao层:负责与数据库进行交互设计,用来处理数据的持久化工作。
    • DAO层的设计首先是设计DAO的接口,
    • 然后在Spring的配置文件中定义此接口的实现类,就可在其他模块中调用此接口来进行数据业务的处理,而不用关心接口的具体实现类是哪个类,这里用到的就是反射机制, DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。
  • 视图层:View层
    • 负责前台jsp页面的展示。
    • 此层需要与Controller层结合起来开发。
  • 各层间的联系:
    • 本来Controller层与View层是可以放在.jsp文件里一起开发的,但是为了降低代码的复杂度,提高其可维护性,将其分为了这两层,这也体现了MVC框架的特性,即结构清晰,耦合度低。
    • Service层是建立在DAO层之上的,建立了DAO层后才可以建立Service层,而Service层又是在Controller层之下的,因而Service层应该既调用DAO层的接口,又要提供接口给Controller层的类来进行调用,它刚好处于一个中间层的位置。每个模型都有一个Service接口,每个接口分别封装各自的业务处理方法。

Spring MVC

Spring MVC框架也是一个基于请求驱动的Web框架,并且也使用了前端控制器模式来进行设计,再根据请求映射规则分发给相应的页面控制器(动作/处理器)进行处理。

执行流程

  • 首先用户发送请求——>DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制;
  • DispatcherServlet——>HandlerMapping, HandlerMapping将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象,通过这种策略模式,很容易添加新的映射策略;
  • DispatcherServlet——>HandlerAdapter,HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器;
  • HandlerAdapter——>处理器功能处理方法的调用,HandlerAdapter将会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理;并返回一个ModelAndView对象(包含模型数据、逻辑视图名);
  • ModelAndView的逻辑视图名——> ViewResolver, ViewResolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;
  • View——>渲染,View会根据传进来的Model模型数据进行渲染,此处的Model实际是一个Map数据结构,因此很容易支持其他视图技术;
  • 返回控制权给DispatcherServlet,由DispatcherServlet返回响应给用户,到此一个流程结束。

Maybatis

  • 获取配置文件mybatis-config.xml,由SqlSessionFactoryBuilder对象,读取并解析配置文件,返回SqlSessionFactory对象
  • 由SqlSessionFactory创建SqlSession 对象,没有手动设置的话事务默认开启
  • 调用SqlSession中的api,获取指定UserMapper.class文件
  • 由jdk动态代理,获取到UserMapper.xml文件,内部进行复杂的处理,最后调用jdbc执行SQL语句,封装结果返回。

文章作者: HaiLin Zhou
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 HaiLin Zhou !
评论
 上一篇
Spring配置数据源 Spring配置数据源
数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。
2020-08-15
下一篇 
MyBatis MyBatis
mybatis 是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。
2020-08-07
  目录