在源码中,getServletContext()方法的代码如下:
public ServletContext getServletContext() {
return getServletConfig().getServletContext();
}
那么,其中getServletConfig()是得到ServletConfig,但是ServletConfig是一个接口,且其中并没有ServletContext啊,就算是ServletConfig的实现类GenericServlet中,也没有ServletContext啊,那这个ServletContext是怎么取出来的呢?请问是不是inti(ServletConfig config)方法接收到的传自Tomcat服务器的那个config其实是一个特殊的实现类?
ServletContext可以理解成应用程序上下文。
我们都知道tomcat启动的时候会去加载web.xml
tomcat启动web.xml配置文件加载流程(具体不细说,可以看源码):
1.StandardContext.java⇒startInternal
2.LifecycleBase.java⇒fireLifecycleEvent
3.LifecycleSupport.java⇒fireLifecycleEvent
4.ContextConfig.java⇒lifecycleEvent⇒configureStart
接下来看ServletContext接口类的实现类ApplicationContext下面的getContext方法,从这个方法里面返回的就是启动时加载的标准上下文。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。