Eclipseでサーブレットを作成する

これまでJavaScriptでクライアントサイドのアプリケーションを作ってきたが、どうしてもサーバで動かしたい機能もある。そこで、Eclipseでサーブレットを作ってみる。

  • サーブレットプログラムをプロジェクトに追加する(Java)
    Eclipseでプロジェクトを作る時に「Webアプリケーション」を選択した。プロジェクトエクスプローラの’src’の下に設定したパッケージが表示されているので、その下にJavaのクラスを追加していく。
  • サーブレットクラスを新規追加する
    クラス名は任意につけられるが、分かりやすいように機能の名前をサーブレット名とし、末尾に’Servlet’をつける。今回は、GAEのデータストアの内容(チェックイン予定の一覧)を取得するサンプルを作ってみるので、サーブレット名を’ViewSpotPlan’とし、クラス名を ‘ViewSpotPlanServlet’とした。
    eclipse_newservlet00
    サーブレットはHttpServletクラスのサブクラスとして作成する。スーパークラスの横の参照ボタンをクリックして選択する。’httpservlet…’と打っていくと、候補となるパッケージ名が表示される。
    eclipse_newservlet11
    eclipse_newservlet12
    ・パッケージ:com.appspot.triplifeplan (今回から新パッケージに移行した)
    ・クラス名:ViewSpotPlanServlet
    ・スーパークラス:javax.servlet.http.HttpServlet
    ここまで完了すると、クラスの雛形が出来上がる。

    // Java
    package com.appspot.triplifeplan;
    import javax.servlet.http.HttpServlet;
    
    public class ViewSpotPlanServlet extends HttpServlet {
    
    }
    
  • サーブレットクラスを完成させる
    ブラウザからのGETリクエストに応答するdoGet()メソッドを実装する。

    // Java
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
      throws IOException {
        resp.setContentType("text/plain");
        resp.setCharacterEncoding("UTF-8");
        resp.getWriter().println("Hello, world. I'm ViewPlanSpot class.");
        // 以下省略
    }
    
  • サーブレット名とクラスを関連付ける(web.xmlファイルに登録する)
    サーブレット名(ViewSpotPlan)と、作成したJavaクラスを関連付ける。具体的には、/war/WEB-INF/web.xml ファイルの記述を追加する。Eclipseでファイルを選択し、「アプリケーションから開く」-「XMLエディター」で開くと、グリッド形式のエディタが開く。(その他のエディタでも適宜編集可能。)
    ルートノード’web-app’を選択して、「子の追加」からメニューを下にたどっていき、属性「servlet」を追加する。この属性には2つの子属性があり、以下のように記述する。(クラス名はパッケージ名を含めたフルパスで記述する。)

    servlet-name: ViewSpotPlan
    servlet-class: com.appspot.tripliferec.ViewSpotPlanServlet
    

    eclipse_newservlet15

  • サーブレット名とURLを関連付ける(web.xmlファイルに登録する)
    サーブレット名とブラウザからアクセスする際のURLを関連付ける。上記と同じように web.xml に追加する。

    servlet-name: ViewSpotPlan
    url-pattern: /viewSpotPlan
    

    ここではURLを’/viewSpotPlan’としたが、名前は適宜で可。

  • ブラウザからアクセスする
    ここまで実施すると、(ホスト名)/viewSpotPlanでサーブレットを実行できる。例えば、ローカルサーバ(ポート:8888)の場合、http://localhost:8888/viewSpotPlanでアクセスできる。なお、コードを書き換えた場合は、Webサーバの再起動(停止&起動)が必要
  • (用語)サーブレット
    ブラウザからのリクエストを受け付けて、サーバで処理を行い、その結果をブラウザに返すプログラム。よく使うのは、リクエストを受け付けてHTMLページを生成し、ブラウザでそれを表示するパターンだが、今回はページそのものはjQuery/jQuery Mobileで作成しているので、サーブレットではGoogle App Engineのデータストアとのアクセスのみ行う。
カテゴリー: Tips タグ: , , パーマリンク