Eclipse で サブレット をしてみる

柴犬は、いつもと違うことに気が付きました。

視線の向こうにはこれが見えました。

なんだあれは????? と相当気にしているようです。
概要
サーブレットを行ってみたところ、相当に手古摺りました。
ちょっと泥沼状態になりましたが、なんとか這い上がれましたので記録します。
青枠のところにあったサーバーがない
いろいろ触っていると不用意にウィンドウを削除(非表示)にしたことが度々あったので復旧の方法を記録します。

ターゲット・ランタイムのリストから
不要なものを除去
初心のうちは、設定が分からず「新規ランタイム」で作らなくてもいいターゲット・ランタイムを作ってしまうことがありました。左の青枠のサーバーを削除するにも関わらず残ったままです。
消し方が分からず苦労したので記録します。
ここでは、Apache Tomcat v7.0(2) が不要となりました。

メニューバーのタブ「ウィンドウ」→「設定」とクリックします。

フォーム「設定」が開きます。
「サーバー」→「ランタイム環境」→除去したい行を選択→「除去」をクリックします。
最後「適用して閉じる」をクリックします。

プロジェクトを Tomcat7 以上で作成
URLパターンに @WebServlet アノテーションを使いたいので、ターゲット・ランタイムを Tomcat7 以上にします。これに気づくのに相当かかりました。
ボタン「次へ」を押下します。

ここでは何もせずにボタン「次へ」を押下します。

「web.xlm デプロイ面と記述しの生成」にチェックを入れます。
ボタン「完了」を押下します。

サーバーの作成
前回のサーバーの作成と同じ手順で「Tomcat v7.0 サーバー」を選択します。
Servlet の作成
「プロジェクト・エクスプローラ」→「sample」→「新規」→「サーブレット」とクリックします。

フォーム「サーブレット作成」が開きます。
「Java パッケージ」「クラス名」を適宜入力します。
ボタン「次へ」を押下します。

何もせずにボタン「次へ」を押下します。

「スーパークラスからのコントラクター」「doPost」のチェックを外して、ボタン「完了」を押下します。

中央の赤枠のところに自動的に既定のコードが入ります。

既定のコードは次のような内容です。
package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class SampleServlet
*/
@WebServlet("/SampleServlet")
public class SampleServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
}
これを次のように書き換えます。
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class SampleServlet
*/
@WebServlet("/SampleServlet")
public class SampleServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head></head>");
out.println("<body>");
out.println("<p>Sample</p>");
out.println("<p>Hello World!</p>");
out.println("</body>");
out.println("</html>");
}
}
次のコードの記述がなく PrintWriter の行があると赤マルの警告がでます。またインポートするかと助言があるので助言文をクリックしてインポートします。
import java.io.PrintWriter;

編集が終わったら、メニューバーのタブ「ファイル」→「すべて保存」をクリックして保存します。

Servlet の実行
サーバーに公開します。
中央下のタブ「サーバー」→「停止」→「クリーン」→「公開」→「開始」とクリックしていきます。

メッセージが「始動済み」に変化します。

いよいよブラウザに出してみます。
プロジェクト・エクスプローラ→「sample」→展開→「SampleServlet]→「実行」→「サーバーで実行」とクリックします。

成功です。これを見たときはうれしかったです。やったと叫びたくなりました。

少でも間違えると、次のようなエラーが発生します。私は、これを何十回と見ました。
一定の手順が必要なようで、慣れるのはなかなか難しそうです。
