springmvc从入门到源码分析专题3_tomcat服务启动过程中DispatcherServlet初始化过程

本文详细解析了Tomcat启动时DispatcherServlet的初始化过程,包括web.xml配置、DispatcherServlet的继承关系、Servlet接口和ServletConfig接口的介绍,以及DispatcherServlet的初始化流程。通过分析,展示了DispatcherServlet如何创建webApplicationContext及其内部关键方法的执行步骤。
摘要由CSDN通过智能技术生成

返回专题目录

springmvc从入门到源码分析专题3_tomcat服务启动过程中DispatcherServlet初始化过程

在上一篇 springmvc从入门到源码分析专题2_tomcat服务启动过程中如何加载ContextLoaderListener的 文章中我们分析了 ContextLoaderListener 是如何初始化的,讲解了springmvc是如何创建根ApplicationContext的过程,本篇文章我们来分析DispatcherServlet初始化过程

web.xml的配置
<!-- 
	SpringMVC的前端控制器,当DispatcherServlet载入后,它将从一个XML文件中
	载入Spring的应用上下文,该XML文件的名字取决于这里DispathcerServlet将试图从一个
   叫做Springmvc-servlet.xml的文件中载入应用上下文
 -->
  <servlet>
	<servlet-name>springmvc</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<load-on-startup>1</load-on-startup>
	<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:spring-servlet.xml</param-value>
	</init-param>
</servlet>
DispatcherServlet的继承关系

首先我们先看下DispatcherServlet的继承关系,然后我们再来逐步分析。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
在这里插入图片描述

重要接口Servlet详解
/**
* 该接口定义了初始化Servlet,处理请求以及从服务器中删除Servlet的方法。这些称为生命周期方法,按以下顺序调用:
* 1.构建servlet,然后使用init方法初始化。
* 2.处理客户对服务方法的任何调用。
* 3.停止使用Servlet,然后使用destroy方法将其销毁,然后对垃圾进行收集并最终确定。
* 
* 除了生命周期方法外,此接口还提供了Servlet可用于获取任何启动信息的getServletConfig方法,以及允许Servlet返回有关自身的基本信息(如作者,版本和版本)的getServletInfo方法。版权。
*/
public interface Servlet {
   /**
    * 在servlet的配置当中,<load-on-startup>1</load-on-startup>的含义是:
    * <p> 当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;
    * <p> 当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。
    * <p> 正数的值越小,启动该servlet的优先级越高。
    * 
    * <p> 如果我们在web.xml中设置了多个servlet的时候,可以使用load-on-startup来指定servlet的加载顺序,服务器会根据load-on-startup的大小依次对servlet进行初始化。不过即使我们将load-on-startup设置重复也不会出现异常,服务器会自己决定初始化顺序
    * 
    * <p> 配置load-on-startup后,servlet在startup后立即加载,但只是调用servlet的init()方法,用以初始化该servlet相关的资源。初始化成功后,该servlet可响应web请求;如未配置lo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值