zoukankan      html  css  js  c++  java
  • SpringMVC系列(十四)Spring MVC的运行流程

    Spring MVC的运行流程图:

    1.首先看能不能发送请求到Spring MVC的DispatcherServlet的url-pattern
    2.如果能发送请求,就看在Spring MVC中是否存在对应的映射
    不存在映射:就看是否配置了<mvc:default-servlet-handler/>,如果没有配置<mvc:default-servlet-handler/>就在控制台打印错误日志:No mapping found for HTTP request with URI [/xx/xx] in DispatcherServlet,同时转向404页面;如果配置了<mvc:default-servlet-handler/>就转向目标资源
    存在映射:由HandlerMapping获取HandlerExectionChain对象,获取HandlerAdaper对象,调用拦截器的Prehandle方法,调用目标handler的目标方法得到ModelAndView对象
    3.调用拦截器的postHandle方法
    存在异常:由异常解析器HandleExceptionResolver组件处理异常,得到新的ModelAndView对象,由视图解析器ViewReslover组件根据ModelAndView对象得到实际的view渲染视图
    不存在异常:由视图解析器ViewReslover组件根据ModelAndView对象得到实际的view渲染视图
    4. 调用拦截器的afterCompletion方法

     说明:

    • 用户请求首先发送到前端控制器DispatcherServlet,DispatcherServlet根据请求的信息来决定使用哪个页面控制器Controller(也就是我们通常编写的Controller)来处理该请求。找到控制器之后,DispatcherServlet将请求委托给控制器去处理。
    • 接下来页面控制器开始处理用户请求,页面控制器会根据请求信息进行处理,调用业务层等等,处理完成之后,会把结果封装成一个ModelAndView返回给DispatcherServlet。
    • 前端控制器DispatcherServlet接到页面控制器的返回结果后,根据返回的视图名选择相应的视图模板(ViewReslover),并根据返回的数据进行渲染。
    • 最后前端控制器DispatcherServlet将结果返回给用户。
  • 相关阅读:
    2012年互联网教育行业观察
    SharePoint 2013的简单介绍
    让Node.js在Azure上运行3
    让Node.js在Azure上运行2
    有一个字符串 "I am a good man",设计一个函数,返回 "man good a am I"。
    json序列化与反序列化
    golang连接mysql数据库进行查询
    简单的WCF服务
    百钱买百鸡问题
    大叔程序员的第九天 @广播启动Activity
  • 原文地址:https://www.cnblogs.com/leeSmall/p/7860473.html
Copyright © 2011-2022 走看看