前言:
在我们开发过程中,Java框架显得尤为重要,在学习JavaSSM框架学习中,Spring、SpringMVC、MyBatis的进行主要都需要运用maven的依赖管理去进行,不然就需要再自行导入依赖文件,同时也不好进行管理,所以本次的学习主要围绕maven进行。
Spring:
Spring是一个开源的框架,是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。他的核心主要就是控制反转,利用Spring来进行创建管理
SpringMVC:
Controller(控制层)、Model(模型层)、View(视图层)
Controller 接受到客户端请求,调用 Model 相关代码完成业务逻辑操作,获取业务数据并返回给 Controller,Controller 再结合 View 完成业务数据的视图层渲染,并将结果响应给客户端,如下图所示。
核心组件
(1)DispatcherServlet:前端控制器,负责调度其他组件的执行,可降低不同组件之间的耦合性,是整个 Spring MVC 的核心模块。
(2)Handler:处理器,完成具体业务逻辑,相当于 Servlet 或 Action。
(3)HandlerMapping:DispatcherServlet 是通过 HandlerMapping 将请求映射到不同的 Handler。
(4)HandlerInterceptor:处理器拦截器,是一个接口,如果我们需要做一些拦截处理,可以来实现这个接口。
(5)HandlerExecutionChain:处理器执行链,包括两部分内容,即 Handler 和 HandlerInterceptor(系统会有一个默认的 HandlerInterceptor,如果需要额外拦截处理,可以添加拦截器设置)。
(6)HandlerAdapter:处理器适配器,Handler 执行业务方法之前,需要进行一系列的操作包括表单数据的验证、数据类型的转换、将表单数据封装到 POJO 等,这一系列的操作,都是由 HandlerAdapter 来完成,DispatcherServlet 通过 HandlerAdapter 执行不同的 Handler。
(7)ModelAndView:装载了模型数据和视图信息,作为 Handler 的处理结果,返回给 DispatcherServlet。
(8)ViewResolver:视图解析器,DispatcherServlet 通过它将逻辑视图解析成物理视图,最终将渲染结果响应给客户端。
以上就是 Spring MVC 的核心组件,那么这些组件之间是如何进行交互的呢?
工作流程
(1)客户端请求被 DispatcherServlet(前端控制器)接收。
(2)根据 Handler Mapping 映射到 Handler。
(3)生成 Handler 和 HandlerInterceptor(如果有则生成)。
(4)Handler 和 HandlerInterceptor 以 HandlerExecutionChain 的形式一并返回给 DispatcherServlet。
(5)DispatcherServlet 通过 HandlerAdapter 调用 Handler 的方法做业务逻辑处理。
(6)返回一个 ModelAndView 对象给 DispatcherServlet。
(7)DispatcherServlet 将获取的 ModelAndView 对象传给 ViewResolver 视图解析器,将逻辑视图解析成物理视图 View。
(8)ViewResolver 返回一个 View 给 DispatcherServlet。
(9)DispatcherServlet 根据 View 进行视图渲染(将模型数据填充到视图中)。
(10)DispatcherServlet 将渲染后的视图响应给客户端。
mybatis:
mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,使得sql的管理更加简易。
总结:
这次的学习让我更加深刻的认识到了框架的结构,虽然xml的配置有些麻烦,还有很多的底层原理不理解,只知道需要使用他,而不知到为何要去使用它,所以在接下来的学习实践中,不仅要专注与实践会用,还要去了解接触它。