文档章节

Spring MVC 原理 - DispatcherServlet调用完整过程(下)

Yemon
 Yemon
发布于 2016/05/17 10:31
字数 405
阅读 21
收藏 0

上一篇到440行返回结果result.



返回result之后,使用result去获取ModelAndView,执行方法getModelAndView:



该方法主要通过result返回值来判断:


当前方法是带ResponseBody注解的,所以执行到这里:


进去方法:


这里是根据http类型做出相应的输出:


用户配置的:


接收的类型:


写的方法:


这里配置的json格式,所以会进入JSON方法:


写入ResponseBody后,返回mav:


最后返回之前调用handler的地方,之后会有一些不同种类的拦截器方法:



拦截器如:




还有一些处理不同异常情况的拦截器。


系统默认都会去执行一个拦截器,这个拦截器基本上都是空方法,是一个private类:



返回调用doDIspatch的地方:



返回到doService的地方:



最后回到httpservlet的service方法:




到这里就完成了一次完整的调用过程。


可以发现,整个过程的流程是比较清晰,程序启动时会根据mvc的配置和spring配置来处理配置信息和注解的类。

Servlet处理请求,通过request(主要是url)来获取handler,之后最主要的一个部分就是获取需要注入的参数,最后调用用户方法,处理返回结果。


整个过程中麻烦的地方就是在一些细节的处理上,这些细节未必一开始就有的,一开始应该是一个主要的流程,后续发现问题或者为了通用性做的改进。

本文转载自:http://blog.csdn.net/hj7jay/article/details/50920806

共有 人打赏支持
Yemon
粉丝 10
博文 320
码字总数 22799
作品 0
广州
架构师
Spring MVC源码学习一之初始化

一、简单提下使用入门(依赖于注解方式) 1、通过在web.xml中添加配置,引入spring mvc框架,类似于Struts2引入需要在web.xml中配置过滤器StrutsPrepareAndExecuteFilter一样,但是Spring MVC是...

silence88
2016/12/20
32
1
Spring MVC 原理探秘 - 一个请求的旅行过程

1.简介 在前面的文章中,我较为详细的分析了 Spring IOC 和 AOP 部分的源码,并写成了文章。为了让我的 Spring 源码分析系列文章更为丰富一些,所以从本篇文章开始,我将来向大家介绍一下 Sp...

coolblog.xyz
07/02
0
0
Spring MVC原理及配置详解

【spring】Spring MVC原理及配置 1.Spring MVC概述: Spring MVC是Spring提供的一个强大而灵活的web框架。借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简...

qq58edf1d989a2d
06/26
0
0
从零学习Spring MVC框架「环境搭建和MVC架构」

这是Spring MVC框架教程的第一篇,首先为大家讲解MVC架构思想,MVC模式并不是Javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型「Model」、视...

技术小能手
07/18
0
0
SpringMVC加载WebApplicationContext源码分析

Spring框架提供了构建Web应用程序的全功能MVC模块,叫Spring MVC,通过Spring Core+Spring MVC即可搭建一套稳定的Java Web项目。本文通过Spring MVC源码分析介绍它的核心实现原理。 Tomcat服...

丶Lion
2015/08/29
231
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

流量劫持是如何产生的?

流量劫持,这种古老的攻击沉寂了一段时间后,最近又开始闹的沸沸扬扬。众多知名品牌的路由器相继爆出存在安全漏洞,引来国内媒体纷纷报道。只要用户没改默认密码,打开一个网页甚至帖子,路由...

谢思华
22分钟前
0
0
Hadoop Client无法使用maven下载源码

最近在学习hadoop,使用maven的时候想看一下源码的注释,结果IDEA一直提示无法下载 搞得我一度以为maven坏掉了。 但是通过搜索,发现在maven仓库里确实没有源码.... 而2.8.1以及之前的版本是...

Iceberg_XTY
24分钟前
0
0
为什么程序员千万不要重写代码?

你所做的事情,也许暂时看不到成果,但不要灰心或焦虑,你不是没有成长,而是在扎根。 图片来自网络 0 前言 程序员都有一颗工程师的心,所以当他们到一片新的场地想做的第一件事就是,将旧的...

Java小铺
25分钟前
0
0
VUE集成AdminLte

1. 安装需要到插件 npm i admin-lte -Snpm i jquery -Snpm i axios -Snpm i vue-router -S 2. 配置webpack.config.js 2.1 module.exports.module.rules修改字体loader: {test: /\.(p......

Pasenger
今天
0
0
Spring Aop原理之切点表达式解析

在前面的文章(Spring AOP切点表达式详解)中,我们总结了Spring Aop切点表达式的用法,而在上文(Spring Aop原理之Advisor过滤)中我们讲到,切点表达式的解析主要是在PatternParser.parse...

爱宝贝丶
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部