在servlet中使用doGet()或doPost()方法出现空指针异常

// 获取servlet初始化参数
 String enconding = this.getInitParameter("enconding");
 System.out.println("servlet初始化参数:" + enconding);

    今日在编写一个servlet类时,结果在运行的时候老是出现空指针异常,结果弄得很是焦做的说。java

type Exception reportweb

message apache

description The server encountered an internal error that prevented it from fulfilling this request.tomcat

exceptionwebsocket

java.lang.NullPointerException
	javax.servlet.GenericServlet.getInitParameter(GenericServlet.java:80)
	com.servlet.LoginServlet.doGet(LoginServlet.java:39)
	com.servlet.LoginServlet.doPost(LoginServlet.java:74)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.36 logs.socket


  最后进过反复检查并经过查询资料才发现,本身在创建一个继承HttpServlet类时,重写了该类的init()方法,可是重写该方法后并无保留
super.init(config);

  若是没有这一行代码,doGet() 和doPost()方法中出现的空指针异常将不会被处理而致使空指针异常。其实也能够发现init(ServletConfig config)方法是调用了父类的ide

public void init(ServletConfig config) throws ServletException
{
      this.config = config;
    init();
}
public void init() throws ServletException
{
}

而在这里其对异常作出了处理。因此,总结一下:若是创建一个类继承了HttpServlet类而且重写了该类的init()方法,那么必需要保留this

super.init(config);

这一行代码,不然会出现空指针异常。spa


以上仅为我的看法,若有失误,欢迎指出! ^ ^!
指针

相关文章
相关标签/搜索