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

上一篇到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,之后最主要的一个部分就是获取需要注入的参数,最后调用用户方法,处理返回结果。

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

时间: 2024-10-16 21:02:36

Spring MVC 原理 - DispatcherServlet调用完整过程(下)的相关文章

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

本篇主要讲解了Spring mvc的调用过程,通过这个过程来了解Spring的原理. 进入web.xml中配置的Spring拦截(调度)器:   调用堆栈信息: 开始拦截,这一步主要是根据request获取handler(该handler可以配置): (接上面方法)这段代码中的if(isGet-主要解决浏览器的缓存问题,如果没有过修改,则返回(浏览器可能会用缓存响应). 调用方法handler: 进入handler方法: 进入方法invokeHandlerMethod: 440行进入下一个方法i

spring mvc 实现远程服务调用的几种方式

org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter 实现远程服务调用 (1)httpinvoker方式 服务器客户端都是spring时推荐这种方式 服务端 必须要实现 bean实体类  service接口类  serviceImpl服务实现类 客户端只需拷贝 bean 实体类  service接口类(注意 ,客户端 bean,service类要和服务端bean,service类包路径相同,比如都是 com.hlz

一个简单的Spring MVC的例子

一.Spring MVC的优点 1.Spring3 MVC的学习难度小于Struts2,Struts2用不上的多余功能太多.呵呵,当然这不是决定因素. 2.Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分) 3.Spring3 MVC的灵活是你无法想像的,Spring的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制. 二.简单的例子 1.配置web.xml 指除了Control层外

spring mvc

作者:赵磊 博客:http://elf8848.iteye.com   目录 一.前言 二.spring mvc 核心类与接口 三.spring mvc 核心流程图 四.spring mvc DispatcherServlet说明 五.spring mvc 父子上下文的说明 六.springMVC-mvc.xml 配置文件片段讲解 七.spring mvc 如何访问到静态的文件,如jpg,js,css 八.spring mvc 请求如何映射到具体的Action中的方法 九.spring mvc 

Spring MVC 教程,快速入门,深入分析(转载)

作者:赵磊 博客:http://elf8848.iteye.com 下载: Spring的官方下载网址是:http://www.springsource.org/download    (本文使用是的Spring 3.0.5版本) 目录  一.前言二.spring mvc 核心类与接口三.spring mvc 核心流程图 四.spring mvc DispatcherServlet说明 五.spring mvc 父子上下文的说明 六.springMVC-mvc.xml 配置文件片段讲解 七.sp

Spring 2.5:Spring MVC中的新特性

Spring框架从创建伊始就致力于为复杂问题提供强大的.非侵入性的解决方案.Spring 2.0当中为缩减XML配置文件数量引入定制命名空间功能,从此它便深深植根于核心Spring框架(aop.context.jee.jms. lang.tx和util命名空间).Spring Portfolio项目(例如Spring Security)和非Spring项目中(例如CXF). Spring 2.5推出了一整套注解,作为基于XML的配置的替换方案.注解可用于Spring管理对象的自动发现.依赖注入.

[读后感]spring Mvc 教程框架实例以及系统演示下载

[读后感]spring Mvc 教程框架实例以及系统演示下载 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 不要好意思,昨晚写的,睡着忘发了,后附是篇好文,赶紧w分享一下. 感脚着,俺好像做了

Spring MVC 基础注解之@RequestMapping、@Controller、(二)

我现在学的是spring4.2 今天主要学习了Spring MVC注解  引入注解可以减少我们的代码量,优化我们的代码. @Controller:用于标识是处理器类: @RequestMapping:请求到处理器功能方法的映射规则: 还是以示例来解释说明   1 创建springAnnotation02项目,导入jar包.    这里的web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app x

Spring系列,第3部分:进入Spring MVC

Spring MVC 框架 Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框架.通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术.Velocity.Tiles.iText 和 POI.Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术.Spri