SpringMVC学习笔记6-----SpringMVC的概念与工作流程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38016931/article/details/81416041

尚硅谷的视频进入源码分析阶段,想听听不懂,不听的话出现断层。中间又花了点时间学习了下markdown语法,现在写下第一篇markdown博客,记录尝试看黑马程序员的不一样的收获,两个都是好视频,但总是怕只看了一个而漏掉另一个的重要内容,所以尚硅谷视频看不懂了,过来看看黑马,当是复习吧!

SpringMVC框架

  1. 什么是SpringMVC
    SpringMVC是spring框架的一个模块,所以SpringMVC和Spring是不需要中间层整合层来整合的!SpringMVC是一个基于mvc的web框架。
  2. 什么是MVC
    MVC是一种设计模式,MVC在b/s系统下的应用可以看下面的序列图(markdown纯手打,有错望指出)

    Created with Raphaël 2.1.2 b/s的MVC的工作流程 User User Controller Controller Model Model View View 例如在开发时的Service、 dao、pojo、action等 用户发送请求request 接受请求 调用模型来处理请求 返回请求处理结果 视图渲染,将得到的数据填充到request域 response相应用户的请求
  3. SpringMVC框架工作流程序列图
    这个比较难,梳理起来还是比较复杂的!
Created with Raphaël 2.1.2 SpringMVC的工作流程 User User DispatcherServlet DispatcherServlet HandlerMapping HandlerMapping Handler Handler HandlerAdapter HandlerAdapter ViewResolver ViewResolver View View ①发送url请求 ②请求查找handler ③返回一个执行链 HandlerExecutionChain ④调用Handler适配器来启动Handler ⑤适配器 调用handler ⑥返回ModelAndView ⑦返回ModelAndView ⑧调用视图解析器来将逻辑视图转换为物理视图 ⑨将物理视图view返回 ⑩视图渲染将数据填充至request

我们可以看到,该序列图中大部分的箭头都是和DispatcherServlet有关,这就很好地降低了其他组件之间的耦合性,都通过DispatcherServlet来进行转发!

  1. 对序列图的具体讲解
    User:用户
    DispatcherServlet:前端控制器,直接接受用户请求,就是我们在第一个学习笔记的实例程序中web.xml配置的Servlet!(需要开发人员添加
    HandlerMapping:处理器映射器
    Handler:处理器平常叫controller,即控制器(需要开发人员添加
    HandlerAdapter:处理器适配器,适配不用的Handler,使得不同的种类的Handler也能发挥作用!
    ViewResolver:即我们在springmvc.xml中配置的InternalResourceViewResolver,叫做视图解析器,将逻辑视图解析成物理视图!(需要开发人员添加
    View:即视图,这个有jsp、freemarker、pdf等格式(需要开发人员添加
    工作流程分析
    ①:用户发送url请求到dispatcherServlet(前端控制器)
    ②:前端控制器根据url请求处理器映射器来查找handler,可以根据xml配置或注解查找
    ③:处理器映射器向前端控制器返回Handler!(实际返回的是HandlerExecutionChain,这个类里面包含一个handler和多个处理器拦截器!)
    ④:因为handler的种类多种多样,我们要给其进行适配才可发挥handler的功能,这样前端控制器这一步就调用处理器适配器(HandlerAdapter)来发挥Hanldler的功能
    ⑤:适配器调用handler
    ⑥:handler返回ModelAndView
    ⑦:适配器将ModelAndView返回给前端控制器
    ⑧:前端控制器得到逻辑视图,需要有InternalResourceViewResolver即视图解析器来将逻辑视图解析为物理视图!
    ⑨:返回物理视图给前端控制器
    ⑩:前端控制器将数据填充进request域中,然后视图渲染!用户就能得到请求的页面了!

结尾

流程可以结合第一篇的测试程序一起看,这个视频教学的后面就是mybatis+SprinMVC的案例实战了,这些我想在学完mybatis再看!

猜你喜欢

转载自blog.csdn.net/qq_38016931/article/details/81416041