protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String contentType = response.getContentType();
response.getWriter().write(contentType);------------------------------②
response.getWriter().close();
}
java.lang.NullPointerException
org.apache.catalina.connector.CoyoteWriter.write(CoyoteWriter.java:171)
com.home.servlet.Helloworld.doPost(Helloworld.java:40)
com.home.servlet.Helloworld.doGet(Helloworld.java:28)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
②处抛出空指针异常。原因是contentType的值为NULL。
分析:
1、在javaSE中 PrintWriter对象的writer(str)方法源码:
public void write(String s, int off, int len) {
try {
synchronized (lock) {
ensureOpen();
out.write(s, off, len);
}
}
catch (InterruptedIOException x) {
Thread.currentThread().interrupt();
}
catch (IOException x) {
trouble = true;
}
}
public void write(String s) {
write(s, 0, s.length());---------------------------------①
}
①处如果s == null,则s.length() 抛出NullPointException。
2、servlet中PrintWriter的实现类是org.apache.catalina.connector.CoyoteWriter,其write方法源码:
public void write(String s, int off, int len) {
if (error)
return;
try {
ob.write(s, off, len);----------------------------③
} catch (IOException e) {
error = true;
}
}
public void write(String s) {
write(s, 0, s.length());----------------------------④
}
③处 ob是org.apache.catalina.connector.OutputBuffer的对象。
④处s.length()抛出NullPointException