Servletを使ってアプリケーションを開発してみた。
ソースはこんな感じです。
package servlet;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/FowardServlet")
public class FowardServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet (HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// forward
RequestDispatcher dispatcher =
request.getRequestDispatcher("/WEB-INF/jsp/forward.jsp");
dispatcher.forward(request, response);
}
}
前に書いたJSPファイルをサーブレットから呼び出すアプリケーションである。
さーコンパイル!
$ javac FowardServlet.java
FowardServlet.java:5: エラー: パッケージjavax.servletは存在しません
import javax.servlet.RequestDispatcher;
^
FowardServlet.java:6: エラー: パッケージjavax.servletは存在しません
import javax.servlet.ServletException;
^
FowardServlet.java:7: エラー: パッケージjavax.servlet.annotationは存在しません
import javax.servlet.annotation.WebServlet;
^
FowardServlet.java:8: エラー: パッケージjavax.servlet.httpは存在しません
import javax.servlet.http.HttpServlet;
^
FowardServlet.java:9: エラー: パッケージjavax.servlet.httpは存在しません
import javax.servlet.http.HttpServletRequest;
^
FowardServlet.java:10: エラー: パッケージjavax.servlet.httpは存在しません
import javax.servlet.http.HttpServletResponse;
^
FowardServlet.java:13: エラー: シンボルを見つけられません
public class FowardServlet extends HttpServlet {
^
シンボル: クラス HttpServlet
FowardServlet.java:12: エラー: シンボルを見つけられません
@WebServlet("/FowardServlet")
...
あれ??
たくさんエラーたちが出てきました。
どうやらいろいろとインポートできていないらしい…
調べるとクラスパスでservlet-api.jarをささなければならなかった。
探すこと1時間ありました。
Tomcat7をインストールした時に一緒に落ちてきたみたい。
今度はクラスパスを指定して挑戦
$ javac -classpath /usr/share/tomcat7/lib/servlet-api.jar FowardServlet.java
うまくいきました!
環境変数にTomcat7の場所を設定する方法が一般的らしいですね。
この後すぐに行いました。