在尝试从.jsp页面上的数据库表中列出员工时,employeesRepo为null

时间:2012-10-24 19:55:52

标签: java eclipse java-ee nullpointerexception

我的小项目使用的数据库表包含有关员工(姓名,电话,电子邮件)的数据。它通过Web浏览器提供员工列表的前端管理(插入新闻员工,编辑当前,删除现有员工)。

每当我在Eclipse上运行Tomcat服务器上的项目(显示所有员工的列表)时,我都会收到以下错误:

  

显示java.lang.NullPointerException     com.myproject.crud.EmployeesListServlet.doGet(EmployeesListServlet.java:24)     javax.servlet.http.HttpServlet.service(HttpServlet.java:621)     javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

第24行:request.setAttribute("employeess", employeesRepo.listEmployeess());

EmployeesListServlet

package com.myproject.crud;

import java.io.IOException;

import javax.inject.Inject;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
@WebServlet("/employees/")
public class EmployeesListServlet extends HttpServlet {

    @Inject @JDBC
    private EmployeesRepository employeesRepo;

    public EmployeesListServlet() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setAttribute("employeess", employeesRepo.listEmployeess());
        getServletContext().getRequestDispatcher("/WEB-INF/pages/employees-listing.jsp").forward(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }

}

1 个答案:

答案 0 :(得分:1)

您的previous question确认您试图关注this tutorial。但它的目标是Caucho Resin,这是一个完整的Java EE应用服务器,可以支持所有Java EE功能,而无需添加更多JAR。

但是,您正在使用Tomcat。 Tomcat是一个准系统JSP / Servlet容器,它不支持所有其他Java EE功能。它仅支持JSPServlets。作为CDI一部分的@Inject首先不能在Java servlet代码中导入。你得到它进行编译只能意味着你下载了一些包含javax.inject.Inject的JAR并将其放在运行时类路径中。

这不是如何在Tomcat中安装CDI的方式。你需要做更多的工作。另见其他Weld (the CDI reference implementation) documentation on Tomcat


但是我建议停止阅读该教程,它对Java EE来说并不是一个非常好的介绍(@JDBC注释本身也有点" wtf?&# 34;)并寻找另一个教程,或更好的,一本真实的书。如果您想认真学习Java EE,那么我还建议用真正的Java EE应用服务器替换Tomcat,例如TomEEGlassfishJBoss AS等。所有这些都带有CDI开箱即用(JPA和EJB比JDBC好得多)。