spirngmvc处理请求流程总结:DispatcherServlet_晏无心_新浪博客

本文主要是介绍spirngmvc处理请求流程总结:DispatcherServlet_晏无心_新浪博客,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

springmvc的请求入口是DispatcherServlet(需要在web.xml里进行配置)。

一、DispatcherServlet初始化
1.DispatcherServlet提供了两个构造方法:
spirngmvc处理请求流程总结:DispatcherServlet

spirngmvc处理请求流程总结:DispatcherServlet
无参构造方法用于Servlet 2.5或更早的环境;
带参构造方法在Servlet 3.0及以后的环境中会用到。

2.DispatcherServlet在初始化时对springmvc.xml里配置的HandlerMapping、HandlerAdapter、ViewResolver等进行了实例化,并添加到list里(如果没有配置,则读取默认配置):
spirngmvc处理请求流程总结:DispatcherServlet
HandlerMapping、HandlerAdapter、ViewResolver的实例化和初始化步骤基本一致(以HandlerMapping为例):
a. 根据this.detectAllHandlerMappings标识判断是实例化所有配置的HandlerMapping,还是只实例化beanName为"handlerMapping"的bean;
b. HandlerMapping实例化后,添加到List中,并对list进行排序(根据HandlerMapping的order属性值);
c. 如果springmvc.xml里没有配置任何HandlerMapping,则从实例化默认配置的HandlerMapping。
spirngmvc处理请求流程总结:DispatcherServlet

spirngmvc处理请求流程总结:DispatcherServlet

spirngmvc处理请求流程总结:DispatcherServlet
默认的配置写在DispatcherServlet.properties文件里:
spirngmvc处理请求流程总结:DispatcherServlet
spirngmvc处理请求流程总结:DispatcherServlet
这样,DispatcherServlet就完成了初始化。采用的方式是在初始化时将HandlerMapping、HandlerAdapter、ViewResolver等加载到内存里,处理请求时,直接从内存里获取所需的bean。

二、DispatcherServlet处理请求
1.判断是否有文件数据,如果有,将request转换为multipartRequest:
spirngmvc处理请求流程总结:DispatcherServlet
2.通过HandlerMapping将请求映射到handler:
spirngmvc处理请求流程总结:DispatcherServlet

spirngmvc处理请求流程总结:DispatcherServlet
3.找到匹配handler的HandlerAdapter,将handler交给HandlerAdapter调用处理:
spirngmvc处理请求流程总结:DispatcherServlet

spirngmvc处理请求流程总结:DispatcherServlet
4.由HandlerAdapter来调用handler,处理请求,并返回ModelAndView对象:
spirngmvc处理请求流程总结:DispatcherServlet
5.由ViewResolver处理返回的ModelAndView对象,找到对应处理的View:
spirngmvc处理请求流程总结:DispatcherServlet
6.View对象对Model数据进行渲染,生成页面或者跳转等,将响应返回:
spirngmvc处理请求流程总结:DispatcherServlet

这样,DispatcherServlet处理一个请求的流程就走完了。

这里总结的是基本的流程,这些步骤之前还有很多小步骤,具体详细的实现,后续会一一分析。

这篇关于spirngmvc处理请求流程总结:DispatcherServlet_晏无心_新浪博客的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125912

相关文章

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c