servlet的init()方法抛出空指针异常
来源:互联网 发布:mac快速认证 编辑:程序博客网 时间:2024/06/05 17:09
2017 8:22:26 下午 org.apache.catalina.core.StandardWrapperValve invoke严重: Allocate exception for servlet LifeCycleServletjava.lang.NullPointerExceptionat javax.servlet.GenericServlet.getServletContext(GenericServlet.java:123)at javax.servlet.GenericServlet.log(GenericServlet.java:188)at com.helloweenvsfel.servlet.LifeCycleServlet.init(LifeCycleServlet.java:17)at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1238)at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1151)at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:828)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:745)
init方法是在Servlet实例化之后执行的,并且只执行一次。
一.先说init(ServletConfig)中参数ServletConfig,代表的是配置信息。即在web.xml中配置的信息,比如:
<servlet>
<servlet-name>RDSDispatchServlet</servlet-name>
<display-name>RDSDispatchServlet</display-name>
<servlet-class>flex.rds.server.servlet.FrontEndServlet</servlet-class>
<init-param>
<param-name>useAppserverSecurity</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>10</load-on-startup>
</servlet>
在程序中可以用this.getServletConfig()方法得到ServletConfig的实例,然后用ServletConfig的相应方法 可以得到ServletConfig的名字(getServletName)和配置参数的名字(getInitParameter("name"))或者 名字枚举(getInitParameterNames()),并且通过参数名字得到相应的参数值。具体方法参见API。二.再说说init方法,从源码中我们不难发现:Servlet接口里面只有init(ServletConfig),这是供tomcat调用的。GenericServlet类里面有成员变量ServletConfig,init(ServletConfig)方法和init()方法:
private transient ServletConfig config;
public void init(ServletConfig config) throws ServletException{
this.config=config;
this.init();
}
public void init() throws ServletException{
}
现在一切都很明了了,当容器(tomcat)帮忙调用init(ServletConfig config)并且给传过来一个参数config,这个方法把参数对象的引用指向类的成员变量this.config,并且调用类的 this.init()方法。如果我们在写Servlet类时只要重写init(ServletConfig config)就可以了,但是init()不就成了多余的了吗?实际上init()方法是为了防止程序员在写Servlet类重写 init(ServletConfig config)时忘记写super.init(ServletConfig config),这样就容易造成出现空指针异常。而这就要求我们最好不要重写init(ServletConfig config)。
阅读全文
0 0
- servlet的init()方法抛出空指针异常
- servlet抛出空指针异常
- getServletContext()空指针异常的原因 和 Servlet的init方法
- getServletContext()空指针异常的原因 和 Servlet的init方法
- getServletContext()空指针异常的原因 和 Servlet的init方法
- 使用jxl包的importSheet方法抛出空指针异常的解决方法
- 创建对象数组时抛出空指针异常的情况
- 【Android开发经验】低版本中PopupWindow的init方法空指针异常的问题
- Servlet技术(四)--Servlet的服务方法抛出异常
- getSupportFragmentManager().getFragments() 抛出空指针异常
- Android调用webservice抛出空指针异常
- 解决Servlet程序中this.getServletContext()抛出异常的方法
- 抛出异常的方法
- 解决URLConnection空指针异常的方法
- Servlet的init方法
- Servlet的init方法
- Servlet的init方法
- Servlet的init方法
- Jquery写的点击显示隐藏的div的代码
- php通过JODConverter将word转换为pdf
- C++引用segment fault
- css基础
- 八大排序算法的python实现
- servlet的init()方法抛出空指针异常
- Codeforces 869A The Artful Expedient
- UE4之跟随移动
- application/json 四种常见的 POST 提交数据方式
- B. Maxim Buys an Apartment
- 制作mongodb的Docker镜像文件
- ROS多线程订阅
- c语言历史
- UVA