0

通常の Java デスクトップ アプリケーション内に Apache Tomcat Web サーバーが埋め込まれています。Tomcatの組み込み。

アプリケーション内に複数のサーブレットとマッピングを追加しました。

import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.startup.Tomcat;

public class Test {
    public static void main(String[] args) {
        try {
            Tomcat tomcat = new Tomcat(); // creating a tomcat instance
            tomcat.setPort(8080); // set the port
            // Creating a context:
            File docBase = new File("src/");
            Context ctx = tomcat.addContext("", docBase.getAbsolutePath());
            // Adding servlet
            Tomcat.addServlet(ctx, "Input", new InputHandler());
            ctx.addServletMapping("/input", "Input");
            tomcat.start();
            while(true) {
                Thread.sleep(5000);
            }
        } catch (LifecycleException | InterruptedException ex) {
            System.err.println(ex);
        }
    }
}

そして、これは型であるInputHandlerクラスのソースコードですHttpServlet:

public class InputHandler extends HttpServlet {
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // This is where I have problem
        // I think because it can't find the index.jsp file getRequestDispatcher
        // returns null as described in [getRequestDispatcher() documentation][2]
        request.getRequestDispatcher("src/web/index.jsp").forward(request, response);
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException{
        processRequest(request, response);
    }
    // ... and also doPost()...
}

getRequestDespatcher()ドキュメンテーション

私のプロジェクト構造は次のようなものです:

+ Test
|
+---+ Source Packages
|   |
|   +---+ test
|   |   |
|   |   +--- InputHandler.java
|   |   |
|   |   +--- Test.java
|   |
|   +---+ web
|       | 
|       +--- index.jsp
|
+---+ Libraries

添付のリンク1のようにすべてを行いました。メソッドで次NullPointerExceptionの行を実行するときにa がスローされることを除いて、すべて問題ありません。InputHandler.processRequest()

request.getRequestDispatcher("src/web/index.jsp").forward(request, response);

以下のケースも試しましたが、何も変わりません:

request.getRequestDispatcher("../web/index.jsp").forward(request, response);

と:

request.getRequestDispatcher(AbsolutePathToIndex.jsp).forward(request, response);

これの何が問題なのですか?

注: Java Enterprise Edition について詳しくありません。

4

0 に答える 0