0

私の小さなプロジェクトでは、従業員に関するデータ(名前、電話番号、電子メール)を含むデータベーステーブルを使用しています。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 {
    }

}
4

1 に答える 1

1

前の質問は、このチュートリアルに従おうとしていたことを裏付けています。ただし、これはCaucho Resinを対象としています。これは本格的な Java EE アプリケーション サーバーであり、JAR を追加する必要なく、すぐに使用できるすべての Java EE ファンシーをサポートします。

ただし、Tomcat を使用しています。Tomcat は必要最小限の JSP/サーブレット コンテナーであり、他のすべての Java EE ファンシーをすぐにサポートするわけではありません。JSPサーブレットのみをサポートします。CDIの@Inject一部である は、そもそも Java サーブレット コードにインポートできませんでした。コンパイルできるようになったということは、JAR を含むものをダウンロードjavax.inject.Injectして実行時のクラスパスにドロップしたことを意味するだけです。

これは Tomcat に CDI をインストールする方法ではありません。あなたはもう少し仕事をする必要があります。Tomcat の Weld (CDI 参照実装) ドキュメントも参照してください。


ただし、そのチュートリアルを読むのをやめることをお勧めします。これは、Java EE の紹介としてはあまり適切ではありません (@JDBC注釈は、それ自体が多少「wtf?」でもあります)。別のチュートリアルを探すか、実際の本を探すことをお勧めします。Java EE を真剣に学びたい場合は、Tomcat をTomEEGlassfishJBoss ASなどの実際の Java EE アプリケーション サーバーに置き換えることもお勧めします。 JDBC よりもはるかに優れています)。

于 2012-10-24T20:14:45.430 に答える