在Spring中, ContextLoaderListener只是辅助类,在web 容器启动的时候查找并创建WebApplicationContext对象,通过该对象进行加载spring的配置文件。而真正的逻辑实现其实是在DispatcherServlet中进行的,DispatcherServlet是实现servlet接口的实现类。
DispatcherServlet 在 web.xml 中的配置如下:
<servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern><!-- 如果写斜杠的话那就表示请求是否加后缀都可以 --> </servlet-mapping>
DispatcherServlet 源码解析
DispatcherServlet 的 init() 方法在 HttpServletBean() 中实现的
init()
onRefresh() 方法
在初始化servletBean的时候,最终会调用 onRefresh() 方法,该方法主要是刷新Spring在web功能实现中所必须使用的全局变量。
DispatchServlet的请求处理逻辑
servlet 接受到请求后,会调用service() 方法,然后service根据HTTP响应的请求方法进行调用响应的逻辑处理。
从类结构中,可以看出SpringMVC 支持 GET、POST、PUT、DELETE、OPTIONS、TRACE方法
从代码中,我们发现这几个方法交给 processRequest() 来进行处理请求。
processRequest()->doService()->doDispatch()
通过跟踪代码,最终处理请求的核心代码在doDispatch()方法中。
doDispatch() 方法
processDispatchResult() 方法
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍Java中的RASP机制实现详解,包括了Java中的RASP机制实现详解的使用技巧和注意事项,需要的朋友参考一下 RSAP RASP是Gartner公司提出的一个概念,称:程序不应该依赖于外部组件进行运行时保护,而应该自身拥有运行时环境保护机制; RASP就是运行时应用自我保护(Runtime application self-protection)的缩写,正如RASP字面意思一样,
本文向大家介绍Django权限机制实现代码详解,包括了Django权限机制实现代码详解的使用技巧和注意事项,需要的朋友参考一下 本文研究的主要是Django权限机制的相关内容,具体如下。 1. Django权限机制概述 权限机制能够约束用户行为,控制页面的显示内容,也能使API更加安全和灵活;用好权限机制,能让系统更加强大和健壮。因此,基于Django的开发,理清Django权限机制是非常必要的。
本文向大家介绍JavaScript实现随机点名器实例详解,包括了JavaScript实现随机点名器实例详解的使用技巧和注意事项,需要的朋友参考一下 你是公司的程序员,年会的时候公司要给员工抽奖发福利,要求你写一个页面小程序,用来随机选出幸运员工,分设一二三等奖大致如下图示例: 以下是点名器的一种思路,页面比较简陋,只给出了满足最基本要求的代码户要用到计时器,随机数函数等 本抽奖一二三等奖都只设
本文向大家介绍详解Java动态代理的实现机制,包括了详解Java动态代理的实现机制的使用技巧和注意事项,需要的朋友参考一下 一、概述 代理是一种设计模式,其目的是为其他对象提供一个代理以控制对某个对象的访问,代理类负责为委托类预处理消息,过滤消息并转发消息以及进行消息被委托类执行后的后续处理。为了保持行为的一致性,代理类和委托类通常会实现相同的接口。 按照代理的创建时期,代理类可分为两种:
本文向大家介绍python实现差分隐私Laplace机制详解,包括了python实现差分隐私Laplace机制详解的使用技巧和注意事项,需要的朋友参考一下 Laplace分布定义: 下面先给出Laplace分布实现代码: 效果图如下: 接下来给出Laplace机制实现: Laplace机制,即在操作函数结果中加入服从Laplace分布的噪声。 Laplace概率密度函数Lap(x|b)=1/2b
本文向大家介绍Python 实现随机数详解及实例代码,包括了Python 实现随机数详解及实例代码的使用技巧和注意事项,需要的朋友参考一下 Python3实现随机数 random是用于生成随机数的,我们可以利用它随机生成数字或者选择字符串。 random.seed(x)改变随机数生成器的种子seed。 一般不必特别去设定seed,Python会自动选择seed。 random.random() 用