Sibainu Relax Room

柴犬と過ごす

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

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

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

なんだあれは????? と相当気にしているようです。

概要

サーブレットを行ってみたところ、相当に手古摺りました。

ちょっと泥沼状態になりましたが、なんとか這い上がれましたので記録します。

青枠のところにあったサーバーがない

いろいろ触っていると不用意にウィンドウを削除(非表示)にしたことが度々あったので復旧の方法を記録します。

ターゲット・ランタイムのリストから
不要なものを除去

初心のうちは、設定が分からず「新規ランタイム」で作らなくてもいいターゲット・ランタイムを作ってしまうことがありました。左の青枠のサーバーを削除するにも関わらず残ったままです。

消し方が分からず苦労したので記録します。

ここでは、Apache Tomcat v7.0(2) が不要となりました。

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

フォーム「設定」が開きます。

「サーバー」→「ランタイム環境」→除去したい行を選択→「除去」をクリックします。

最後「適用して閉じる」をクリックします。

プロジェクトを Tomcat7 以上で作成

URLパターンに @WebServlet アノテーションを使いたいので、ターゲット・ランタイムを Tomcat7 以上にします。これに気づくのに相当かかりました。

ボタン「次へ」を押下します。

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

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

ボタン「完了」を押下します。

サーバーの作成

前回のサーバーの作成と同じ手順で「Tomcat v7.0 サーバー」を選択します。

Servlet の作成

「プロジェクト・エクスプローラ」→「sample」→「新規」→「サーブレット」とクリックします。

フォーム「サーブレット作成」が開きます。

「Java パッケージ」「クラス名」を適宜入力します。

ボタン「次へ」を押下します。

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

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

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

既定のコードは次のような内容です。

copy

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());
    }
}

これを次のように書き換えます。

copy

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]→「実行」→「サーバーで実行」とクリックします。

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

少でも間違えると、次のようなエラーが発生します。私は、これを何十回と見ました。

一定の手順が必要なようで、慣れるのはなかなか難しそうです。