在Servlet里调用getServletContext() 方法的时候,出现空指针异常。
分析了一下问题原因,因为每个web应用的Servlet都继承自HttpServlet类,HttpServlet又继承自GenericServlet,看了一下getServletContext()源码
public ServletContext getServletContext() {
return getServletConfig().getServletContext();
}
public ServletConfig getServletConfig() {
return config;
}
可以看到getServletConfig方法返回config
public void init(ServletConfig config) throws ServletException {
this.config = config;
this.init();
}
这个config是在Servlet装载之后第一次请求调用init方法传过来的,里面封装了一些servlet的配置信息。现在就看这个全局的config为什么是null。
原来是因为我在自己的Servlet立面重写了init方法,而又没有调用父类的init方法
解决方法:1,在子类里面调用父类的init方法,把config传过去。
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
2.就是不要自己重写init方法。