web容器ServletContext

ServletContext

启动web容器流程:

<context-param>
   <param-name>key</param-name>
   <param-value>value123</param-value>
</context-param>
<listener> 
   <listener-class>com.brolanda.contextlistener.listener.ContextListenerTest</listener-class>
</listener>

  1. 读取配置文件web.xml
  2. 创建ServletContext
  3. 将配置文件中的参数设置到ServletContext上下文中
  4. 创建监听器执行初始化方法或销毁方法

web项目并没有启动完,配置的监听器或者Servlet会可以继续创建子容器

package com.brolanda.contextlistener.listener;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class ContextListenerTest implements ServletContextListener {
    
    public void contextDestroyed(ServletContextEvent event) {
        System.out.println("*************destroy ContextListener*************");
    }
    
    @SuppressWarnings("unused")
    public void contextInitialized(ServletContextEvent event) {
        System.out.println("*************init ContextListener*************");
        ServletContext servletContext = event.getServletContext();
        System.out.println("key:"+servletContext.getInitParameter("key"));
    }
    
}

Spring web上下文配置

Spring通过ContextLoaderListener初始化WebApplicationContext上下文,并将参数设置到ServletContext中

  • ContextLoaderListener

这个监听器通过读取容器配置文件初始化并创建容器;指定配置文件的的地址和文件名称如下

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml,/WEB-INF/action-servlet.xml,/WEB-INF/jason-servlet.xml</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

监听器默认读取WEB-INF下面的appilicationContext.xml,也可以通过contextParam配置文件修改路径.ContextLoaderListener便会创建WebAppllicationContext,并设置参数到ServletContext.

总结:

Servlet启动, 创建ServletContext;

容器创建web.xml中的Listener的实例,ServletContextListener实现类—ContextLoaderListener,初始化WebApplicationContext上下文环境(IoC容器),将context-param中的参数设置到ServletContext;

容器创建web.xml中配置的Servlet(比如SprinMvc的DispatchServlet),为其创建自己的ServletContext,并将WebApplicationContext设置为父容器(可以配置多个Servlet);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值