首页 > 编程语言 > DispatcherServlet源码解析

DispatcherServlet源码解析

时间:2023-02-12 18:34:04浏览次数:42  
标签:web 解析 SpringMVC springframework 源码 org DispatcherServlet servlet

DispatcherServlet 中使用的默认策略接口
DispatcherServlet.properties 中指定了 DispatcherServlet.java 中使用的一些策略接口的默认实现:

spring-webmvc-5.3.9.jar!/org/springframework/web/servlet/DispatcherServlet.properties

Default implementation classes for DispatcherServlet's strategy interfaces.

Used as fallback when no matching beans are found in the DispatcherServlet context.

Not meant to be customized by application developers.

org.springframework.web.servlet.LocaleResolver=org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver

org.springframework.web.servlet.ThemeResolver=org.springframework.web.servlet.theme.FixedThemeResolver

org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping,\
org.springframework.web.servlet.function.support.RouterFunctionMapping

org.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter,\
org.springframework.web.servlet.function.support.HandlerFunctionAdapter

org.springframework.web.servlet.HandlerExceptionResolver=org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver,\
org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver,\
org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver

org.springframework.web.servlet.RequestToViewNameTranslator=org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator

org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver

org.springframework.web.servlet.FlashMapManager=org.springframework.web.servlet.support.SessionFlashMapManager
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
小结
DispatcherServlet#doDispatch() 是 Spring MVC 处理请求分发的方法,它的处理大体分了 6 步:
1、获取 request 对应的 HandlerExecutionChain(它包含 handler 和 interceptors)
2、获取 handler 对应的 HandlerAdapter
3、执行 handler 的前置处理: HandlerInterceptor#preHandle()
4、通过 HandlerAdapter#handler() 来执行处理程序
5、执行 handler 的后置处理:HandlerInterceptor#postHandle()
6、对返回值进行处理(包括正常返回 和 异常处理)

HandlerExecutionChain 是 handler 的执行链,它是由 handler 和 interceptors 组成的。
HandlerExecutionChain 是由 HandlerMapping#getHandler() 返回的。


收藏
评论
分享
举报
上一篇:【老王读SpringMVC】url 与 controller method 的映射关系注册

提问和评论都可以,用心的回复会被更多人看到评论
相关文章
SpringMVC源码解析DispatcherServlet#doDispatch方法流程
DispatcherServlet是前端控制器设计模式的实现,提供了Spring Web MVC的集中访问点, 而且负责职责的分派,而且与Spring Ioc容器无缝集成, 从而可以获的Spring的所有好处。作用DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,主要职责如下:文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析通过HandlerMapping,将请求映射到处理器(返回一个HandlerExecution

SpringMVC 源码分析之 DispatcherServlet
前面松哥和大家聊了 DispatcherServlet 的父类 FrameworkServlet,大家从中了解到在 DispatcherServlet 中,方法执行的入口应该是 doService。如果小伙伴们还没看前面的分析,可以先看下,这有助于理解本文,传送门SpringMVC 源码分析之 FrameworkServlet。即使你没看过 DispatcherServlet 的源码,估计也听说过:DispatcherServlet 是 SpringMVC 的大脑,它负责整个 SpringMVC 的调度工

Spring 源码解析之DispatcherServlet源码解析(五)
spring的整个请求流程都是围绕着​​DispatcherServlet​​进行的类结构图根据类的结构来说DispatcherServlet本身也是继承了HttpServlet的,所有的请求都是根据这一个Servlet来进行转发的,同时解释了为什么需要在web.xml进行如下配置,因为Spring是基于一个Servlet来展开的,当然不需要Servlet也能够使用Spring<servle

SpringMVC系列2:DispatcherServlet[附带源码分析]
SpringMVC系列2:DispatcherServlet[附带源码分析]

Java
SpringMVC源码分析2:SpringMVC设计理念与DispatcherServlet
SpringMVC简介 SpringMVC作为Struts2之后异军突起的一个表现层框架,正越来越流行,相信javaee的开发者们就算没使用过SpringMVC,也应该对其略有耳闻。我试图通过对SpringMVC的设计思想


标签:web,解析,SpringMVC,springframework,源码,org,DispatcherServlet,servlet
From: https://blog.51cto.com/u_15962735/6052124

相关文章

  • [16] Zookeeper-源码2
    1.ZkServer选举源码1.1选举准备QuorumPeer@Overridepublicsynchronizedvoidstart(){if(!getView().containsKey(myid)){thrownewRuntimeEx......
  • Kubernetes CSI插件注册(一)—— node-driver-registrar源码分析
    1、概述node-driver-registrar是一个由官方K8ssig小组维护的辅助容器(sidecar),它的主要作用则是获取CSI插件信息并通过GRPC服务(即RegistrationServer)向Kubelet提供插件......
  • Ribbon负载均衡 (源码分析)
    Ribbon负载均衡SpringCloud已经删除了ribbon组件,所以需要手动导入依赖。(要学是因为很多项目业务已经使用了ribbon)服务拉取的时候添加了@LoadBalanced注解,实现负载均衡......
  • StampedLock源码解析
    StampedLock源码解析StampedLock描述一种基于能力的锁,具有三种模式,用于控制读写访问。StampedLock的状态由版本和模式组成。锁获取方法返回一个表示并控制对锁状态访问......
  • [​DuckDB] 多核算子并行的源码解析
    DuckDB是近年来颇受关注的OLAP数据库,号称是OLAP领域的SQLite,以精巧简单,性能优异而著称。笔者前段时间在调研Doris的Pipeline的算子并行方案,而DuckDB基于论文《Morsel-Driv......
  • SpringMVC模型数据解析
    SpringMVC模型数据解析​ jsp四大作用域对应的内置对象:pageContext,request,session,application.模型数据的绑定是由ViewResolver来完成的,实际开发过程中,我们需要先添加......
  • C语言学习:解析时间
     1#define_XOPEN_SOURCE23#include<io_utils.h>4#include<time_utils.h>5#include<time.h>67intmain(){8long_time_tcurrent_time_in_......
  • python django二手商城(课设、学习、毕设、源码下载)
    pythondjango二手商城pythondjango校园二手商城django校园商城django校园商店django电子商城django网上商城前端:htmlcss等后端:python django数据库:MYSQL涉......
  • Python django酒店旅游推荐系统(课设、学习、毕设、源码下载)
    Pythondjango酒店旅游推荐系统酒店系统酒店推荐系统旅游系统旅游推荐系统技术:Python django数据库:MySQL涉及功能:登录、注册、登出、修改密码、查看个人中心酒......
  • python django 个人电影网项目(课设、学习、毕设、源码下载)
    pythondjango个人电影网项目pythondjango电影推荐网pythondjango电影网基于pythondjango个人电影网项目该系统详情:后端:python3.6+MySQL5.7+Django框架......