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日志。
答案 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。