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

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

type Exception report

message

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

exception

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.


  最后进过反复检查并通过查询资料才发现,自己在建立一个继承HttpServlet类时,重写了该类的init()方法,但是重写该方法后并没有保留
super.init(config);

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

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

而在这里其对异常做出了处理。所以,总结一下:如果建立一个类继承了HttpServlet类并且重写了该类的init()方法,那么必须要保留

super.init(config);

这一行代码,否则会出现空指针异常。


以上仅为个人见解,如有失误,欢迎指出! ^ ^!