【Web】ServletContext与ServletConfig

本文解析了Servlet、ServletConfig与ServletContext的关系及其作用范围。阐述了容器如何为每个Web应用创建唯一的ServletContext对象,并为每个Servlet创建相应的ServletConfig对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       在Servlet相关的对象中还有一个ServletContext对象,很多时候我们分不清楚一些长得像的东东,是因为我们不了解它们的来历.解除疑惑,我们先来看看这个对象是什么时候产生的.

        先来看个简单的图:

 

            

 

        容器启动一个Web应用时为之创建ServletContext对象,每个Web应用都有唯一的ServletContext对象,它相当于Servlet们与容器通信的接口,管理访问容器的各种资源.如,在Web应用范围内共享数据,访问当前Web应用的资源,访问容器中的其它应用,访问服务器端的文件系统资源等.

        而ServletConfig呢,也用一张简单的图来表示下:

            

 

 

       容器启动Web应用也就是创建完ServletContext后,初始化所有的Filter,对需要启动时就初始化的Servlet进行初始化.对当前不要求初始化的Servlet在请求时初始化.在初始化一个Servlet对象时,创建一个ServletConfig对象,容器调用Servlet的初始化方法时会把包含这个Servlet的初始化参数信息的ServletConfig对象当做参数传进去.

 

       可见,ServletConfig和ServletContext根本是在不同的时间,因为不同的情况产生的.下面这张图更清楚地反映了这一先后顺序.

             

 

 

        而且,我们还可以看出这里有一个Web应用,一个ServletContext,却有不止一个Servlet和ServletConfig.这说明了什么呢?

           ServletContext能够在Web应用范围内活动,Web应用范围是什么意思呢?第一,表示由Web应用的生命周期构成的时间段.第二,表示在Web应用的生命周期内所有Web组件的集合.

        ServletConfig可以在特定Servlet范围内活动,这么说,从该Servlet实例化ServletConfig就跟着它,其它Servlet访问不到这个ServletConfig.

        想想我们之前在web.xml中的配置,有<context-param> 和<servlet>两个元素.如果一个参数要在整个Web应用中用呢,就写在<context-param> 节点下,如果只在一个Servlet中用呢,就写在<servlet>节点中.回忆下.

 

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:config/applicationContext-common.xml</param-value>
  </context-param>

 

 <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/spring-mvc.xml,classpath:config/applicationContext-common.xml</param-value>
    </init-param>
 </servlet>

 

 

 

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值