日期:2014-05-17  浏览次数:20886 次

如图,我照着老师的一模一样的代码,报一个空指针,求解!
package com.zpc;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Properties;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Servlet5 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletExceptionIOException {

response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//利用ServletContext读取资源文件
InputStream inputStream=this.getServletContext().getResourceAsStream("dbinfo.properties");
//创建Properties
Properties pp=new Properties();
pp.load(inputStream);
out.println("name="+pp.getProperty("username"));
//读取一个文件的全路径
String path=this.getServletContext().getRealPath("/images/Linux1.png");
out.println("path="+path);
}



public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}

}

------解决方案--------------------
看异常 哪一行
------解决方案--------------------
还是拷贝复制更靠谱
------解决方案--------------------
楼主会用IDe的断点吗?你这种有环境的,还是自己测异常出在哪了吧,谁也看不出你可能出异常的地方

this.getServletContext().getResourceAsStream("dbinfo.properties");

这里的dbinfo.properties的位置放得不对,你放在webroot下或者src下分别试一下
------解决方案--------------------
既然是空指针异常,大概分析一下几种可能,你依次检查:
1.InputStream inputStream=this.getServletContext().getResourceAsStream("dbinfo.properties");
如果你没有在web.xml设置初始化参数,那么你的dbinfo.properties文件应该放在类路径下(src下)。
2.out.println("name="+pp.getProperty("username"));  你最好检查以保证pp.getProperty("username")不为null。
3.String path=this.getServletContext().getRealPath("/images/Linux1.png");你最好检查以保证path不为null。
------解决方案--------------------
用断点调试,查看一下,对照去看
------解决方案--------------------
引用:
package com.zpc;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Properties;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Servlet5 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html;charset=utf