美文网首页
SpringMVC执行流程

SpringMVC执行流程

作者: 若兮缘 | 来源:发表于2019-01-11 21:37 被阅读18次

    详细执行流程

    流程图
    执行流程
    1. 首先客户端发起用户请求,以http形式进入到servlet容器中,servlet容器解析http数据成为一个endpoint对象,endpoint对象包含了请求url、http header以及解析完或者读取完的body数据流。
    2. 然后进入用户自定义的filter,在filter中用户可以对request进行处理,然后经过多个filter处理完后,进入到dispatcherservlet,也就是springmvc的入口。
    3. 然后会先进入到一些常用的解析器中,比如用来解析上传文件的MultipartResolver,如果请求是Multipart,也就是说header包含Multipart,springmvc就会解析上传的请求里面的上传文件,解析成字节流,以及把一些字符串k、v读出来,封装到对象中以供后续的comtroller进行接收,从解析器出来后,就是根据请求url寻找handler(controller)的过程。
    4. 由于我们在controller方法中使用requestMapping注解定义了url映射,在启动过程中springmvc就会将controller及对应的方法注册到HandlerMapping中,如果无法在handlerMapping中找到请求对应的controller,就会报404错误。
    5. 找到controller后进入到HandlerInterceptor,即拦截器,在拦截器中可以进行打印日志,身份鉴权等操作。
    6. 经过拦截器后,springmvc会对数据进行绑定(与方法参数进行绑定),及数据验证,反射调用我们的controller方法,执行方法体中的业务逻辑,执行完成后创建ModelAndView。model就是数据,此时的view只是个viewName(String)。
    7. 如果我们定义了异常处理器,在拦截器处理数据绑定、数据验证、业务处理这些所有环节,只要出现了异常,都会被异常处理器拦截,可以在异常处理中返回相应的错误页面。
    8. 如果正常执行,会通过ViewResolver进行view的资源定位,找到view之后就会进入渲染页面的过程,实际是将数据进行模版的变量替换的过程,数据来源于request,modelMap,session中。
    9. 渲染之后就经过dispatcherservlet返回,再经过filter后续的处理,最终通过servlet容器形式http响应返回给客户端。

    核心执行流程

    流程图
    执行流程
    1. 客户端请求被DispatcherServlet(前端控制器)接收
    2. DispatcherServlet请求HandlerMapping查询Handler
    3. HandlerMapping根据请求URL查找Handler,将Handler和HandlerInterceptor以HandlerExecutionChain的形式一并返回给DispatcherServlet
    4. DispatcherServlet请求HandlerAdapter执行Handler
    5. HandlerAdapter调用Handler的方法做业务逻辑处理
    6. HandlerAdapter处理完Handler会生成一个ModelAndView对象
    7. 将ModelAndView对象返回给DispatcherServlet
    8. DispatcherServlet将获取的ModelAndView对象传给ViewResolver视图解析器,请求进行视图解析
    9. ViewResolver将逻辑视图解析成物理视图View,返回给DispatcherServlet
    10. DispatcherServlet根据View进行视图渲染(将模型数据填充到视图中)
    11. DispatcherServlet将渲染后的视图响应给客户端

    相关文章

      网友评论

          本文标题:SpringMVC执行流程

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