为什么我收到HTTP Status 500的错误?

时间:2014-01-31 12:14:38

标签: jsp java-ee tomcat servlets nullpointerexception

我创建了一个简单的JSP页面,并创建了一个名为UserController.java的Servlet,它位于包com.pro3.controller中。在jsp页面中,我有一个带get方法的表单。当我提交表单时,它失败并出现以下异常:

HTTP状态500 - javax.servlet.ServletException:实例化servlet类com.pro3.controller.UserController时出错

--------------------------------------------------------------------------------

type Exception report

message javax.servlet.ServletException: Error instantiating servlet class com.pro3.controller.UserController

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

exception 

org.apache.jasper.JasperException: javax.servlet.ServletException: Error instantiating servlet class com.pro3.controller.UserController
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:502)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:412)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723)


root cause 

javax.servlet.ServletException: Error instantiating servlet class com.pro3.controller.UserController
    org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:709)
    org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:680)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:62)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723)


root cause 

java.lang.NullPointerException
    java.util.Properties$LineReader.readLine(Properties.java:418)
    java.util.Properties.load0(Properties.java:337)
    java.util.Properties.load(Properties.java:325)
    com.pro3.util.DbUtil.getConnection(DbUtil.java:26)
    com.pro3.dao.UserDao.<init>(UserDao.java:19)
    com.pro3.controller.UserController.<init>(UserController.java:27)
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    java.lang.Class.newInstance0(Class.java:355)
    java.lang.Class.newInstance(Class.java:308)
    org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:709)
    org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:680)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:62)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723)

任何人都可以帮我解决这个问题。

public class DbUtil 
{
    public static Connection connection = null;

    public static Connection getConnection()
    {
        if(connection!=null)
            return connection;
        else
        {
            try
            {
                Properties prop=new Properties();
                InputStream inputStream=DbUtil.class.getClassLoader().getResourceAsStream("/db.properities");
                prop.load(inputStream);

                String driver=prop.getProperty("driver");
                String url=prop.getProperty("url");
                String user=prop.getProperty("user");
                String password=prop.getProperty("password");

                Class.forName(driver);
                connection=DriverManager.getConnection(url,user,password);

            }catch(ClassNotFoundException e){
                e.printStackTrace();

这是空指针异常:

public class UserController extends HttpServlet 
{
    private static final long serialVersionUID = 1L;
    private static String INSERT_OR_EDIT="/user.jsp";
    private static String LIST_USER="/listuser.jsp";
    private UserDao dao;

    public UserController() 
    {
        super();
        dao = new UserDao();
    }
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
        {
            String forward="";
            String action = request.getParameter("action");

            if(action.equalsIgnoreCase("delete"))
            {
                int userId=Integer.parseInt(request.getParameter("userid"));
                dao.deleteUser(userId);
                forward=LIST_USER;
                request.setAttribute("users", dao.getAllUsers());
            }
            else if(action.equalsIgnoreCase("edit"))
            {
                forward=INSERT_OR_EDIT;
                int userId=Integer.parseInt(request.getParameter("userid"));
                User user=dao.getUserById(userId);
                request.setAttribute("user", user);
            }
            else if(action.equalsIgnoreCase("listUser"))
            {
                forward=LIST_USER;
                request.setAttribute("users", dao.getAllUsers());
            }
            else
            {
                forward=INSERT_OR_EDIT;
            }
            RequestDispatcher view=request.getRequestDispatcher(forward);
            view.forward(request, response);
        }

        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
        {
        User user=new User();
        user.setFirstName(request.getParameter("firstname"));
        user.setLastName(request.getParameter("lastname"));
       try
       {
           Date dob = new SimpleDateFormat("dd/mm/yyyy").parse(request.getParameter("dob"));
           user.setDob(dob);
       }
       catch(ParseException e)
       {
           e.printStackTrace();
       }
        user.setEmail(request.getParameter("email"));
        String userid=request.getParameter("userid");
        if(user==null||userid.isEmpty())    
        {
            dao.addUser(user);
        }
        else
        {
            user.setUserid(Integer.parseInt(userid));
            dao.updateUser(user);
        }
        RequestDispatcher view=request.getRequestDispatcher(LIST_USER);
        request.setAttribute("users", dao.getAllUsers());
        view.forward(request, response);
     }
}

Pablo Lozano:他发现了一些错误,然后生病了,现在我遇到了这种错误。

  

HTTP状态500 - java.lang.NullPointerException

     

----------------------------------------------- --------------------------------- type

异常报告消息java.lang.NullPointerException

  

description服务器遇到阻止它的内部错误   完成此请求。

例外

  

org.apache.jasper.JasperException:java.lang.NullPointerException   org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:502)   org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:430)   org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)   org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)   javax.servlet.http.HttpServlet.service(HttpServlet.java:723)

rootcause

显示java.lang.NullPointerException

  

com.pro3.dao.UserDao.getAllUsers(UserDao.java:74)   com.pro3.controller.UserController.doGet(UserController.java:51)   javax.servlet.http.HttpServlet.service(HttpServlet.java:617)   javax.servlet.http.HttpServlet.service(HttpServlet.java:723)   org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:709)   org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:680)   org.apache.jsp.index_jsp._jspService(index_jsp.java:62)   org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)   javax.servlet.http.HttpServlet.service(HttpServlet.java:723)   org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)   org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)   org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)   javax.servlet.http.HttpServlet.service(HttpServlet.java:723)

2 个答案:

答案 0 :(得分:0)

它说java.lang.NullPointerException,所以有一个对象,没有实例化。我假设你在java.lang.Propertis#load(InputStream)中使用com.pro3.util.DbUtil.getConnection,所以你可能以错误的方式实例化它(如果有的话)。

所以,你不能在你的DbUtils.class中使用getResourceAsStream(我假设,如果你只把你的ptoperties放到同一个包中,它会起作用)。请find out如何在Servlet中正确加载属性。

答案 1 :(得分:0)

DbUtil.class.getClassLoader().getResourceAsStream("/db.properities");

尝试编写db.properties而不是db.properities