通常の 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 について詳しくありません。