com.jobyab.controllers.registerController.doPost中的java.lang.NullPointerException

时间:2016-05-13 11:18:38

标签: java nullpointerexception

persist类的EntityManager方法看起来有问题。我每次尝试时都使用apache tomcat并收到HTTP Status 500-页面。

这是DataQuery类:

public class DataQuery {
    EntityManagerFactory emf;
    EntityManager em;

    public DataQuery() {
        emf = Persistence.createEntityManagerFactory("com.sbu.ac.jobyab");
        em = emf.createEntityManager();
        em.getTransaction().begin();
    }

    public void registerUser(Employee e){
        em.persist(e);
    }
}

这是registerController类,它接收来自用户的输入并执行注册任务:

public class registerController extends HttpServlet {
    private DataQuery query;
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String email = request.getParameter("register_email");
        String pwd = request.getParameter("register_password");
        Employee e = new Employee(10, email, pwd);
        query.registerUser(e);
    }
}

这是完整堆栈错误:

  

输入例外报告

     

消息

     

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

     

例外

     

显示java.lang.NullPointerException     com.jobyab.controllers.registerController.doPost(registerController.java:39)     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注意Apache中提供了根本原因的完整堆栈跟踪   Tomcat / 8。0。3。3日志。

3 个答案:

答案 0 :(得分:1)

尝试在doPost()方法中添加query = new DataQuery();

答案 1 :(得分:0)

看起来像是null

private DataQuery query;

应该使用@Inject@EJB

注入
@EJB
private DataQuery query;

但可能是其他东西,你的控制器的第39行是什么?

答案 2 :(得分:0)

我不相信你Tomcat附带了一个EJB容器或CDI容器,所以用@EJB@Inject符号注入它的可能性是关闭的。您可能必须以编程方式创建DataQuery实例并使用它,如@ypp。

所述