博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC - 运行流程图
阅读量:7035 次
发布时间:2019-06-28

本文共 968 字,大约阅读时间需要 3 分钟。

hot3.png

Spring工作流程描述

    1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获;

    2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回;

    3. DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(...)方法)

    4.  提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。 在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:

        HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息

        数据转换:对请求消息进行数据转换。如String转换成Integer、Double等

        数据格式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等

        数据验证: 验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中

    5.  Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象;

    6.  若使用RequestBody,则直接返回http报文;未使用RequestBody,则返回ModelAndView;

    7. 将逻辑视图返回给前端控制器;

    8. 选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver),对于逻辑视图,则将逻辑视图解析绑定到指定视图,非逻辑视图,则直接返回到视图;

    9.将视图返回给前端控制器;

    10. 解析对应的视图进行渲染;

    11.将渲染结果返回给客户端。

转载于:https://my.oschina.net/langwanghuangshifu/blog/2052097

你可能感兴趣的文章
通过js写一个消息弹框
查看>>
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var mysql 启动不了
查看>>
Leetcode: Non-overlapping Intervals
查看>>
Spring组件扫描<context:component-scan/>使用详解
查看>>
CodeIgniter(3.1.4)框架使用静态文件(js,css)
查看>>
python练习笔记——用函数对列表奇偶分类,且过程不增加新列表
查看>>
CentOS 6.9永久设置静态路由表以及路由表常用设置
查看>>
spring mvc : 中文传值(post/get)中文乱码
查看>>
Mysql中处理1970年前的日期(unixtime为负数的情况)负数时间戳格式化
查看>>
【转】单片机为什么叫单片机
查看>>
物联网架构成长之路(24)-Docker练习之Compose容器编排
查看>>
set 容器的用法
查看>>
iocp (改天完善)
查看>>
水波探测算法的实现
查看>>
JsDemo
查看>>
JQuery EasyUI Tree
查看>>
.net Sql server 事务的两种用法
查看>>
【143】360云盘资源
查看>>
gradle编译出错:Execution failed for task &#39;:app:compileTestDebugJava&#39;.
查看>>
django之创建第9个项目-管理后台admin
查看>>