// 获取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.
exceptionjava.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);
这一行代码,否则会出现空指针异常。
以上仅为个人见解,如有失误,欢迎指出! ^ ^!