ServeltによるGET受信処理

Servletは、JavaプログラムにHTML文書を埋め込む形で記述します。ロジックを重視したプログラムが書きやすくなっています。Webアプリケーション構成の「Controller」の役割を担わせることができます。

ServletはHttpServletクラスを継承して使用します。このクラスは次のようなメンバを持っています。

メソッド名 説明
doGet(HttpServletRequest, HttpServletResponse) サーブレットがGET要求を処理する際に呼び出される。
doPost(HttpServletRequest, HttpServletResponse) サーブレットがPOST要求を処理する際に呼び出される。
主なメソッド

この節では、Servletを使ってGET送信を処理する方法を見てみましょう。

○ ファイル

プロジェクトに次のようなServletを追加してください。

パッケージ名 test.servlet
クラス名 GetServlet
スーパークラス名 javax.servlet.http.HttpServlet

サンプルダウンロード

○ プログラム

doGetメソッドを、追加したクラスに記述します。doGetメソッドの仕様に従って記述することができますが、Eclipseの機能を使って追加するメソッドを選択して記述させることもできます。エディターを右クリックして表示されるメニューより、「ソース(S)」―「メソッドのオーバーライド/実装(V)...」をクリックしてください。すると、次の図のようなダイアログボックスが表示されるので、「doGet(…)」メソッドにチェックを入れ、「OK」ボタンをクリックします。すると、ソースが追加されるので、追加されたメソッド内にプログラムを記述します。

追加するメソッドを選択する
追加するメソッドを選択する

次のように追加したメソッドにプログラムを記述してください。

GetServlet.java

  1. package test.servlet;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.annotation.WebServlet;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. @WebServlet("/getservlet")
  10. public class GetServlet extends HttpServlet {
  11.     @Override
  12.     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  13.         //クライアントへの出力準備をする
  14.         resp.setContentType("text/html;charset=utf-8");
  15.         PrintWriter pw = resp.getWriter();
  16.         //クライアントにHTMLを書き出す
  17.         pw.println("GET送信の応答です。");
  18.     }
  19. }

○ 実行結果

コンテキストの定義を更新した後で、次のURLを入力して実行してみましょう。

http://localhost:8080/WebApp/getservlet

実行結果
実行結果

○ 解説

今回のサンプルはGET要求に対する処理をServletで行っています。URLに入力して要求をするとGET送信されるので、サーバーはServletからdoGetメソッドを呼び出します。doGetメソッドは引数にクライアントからの要求を表すHttpServletRequestオブジェクトと、クライアントへの応答を表すHttpServletRequestオブジェクトがセットされます。それらのオブジェクトを使ってクライアントから送られてきたデータを取得したり、クライアントにデータを送信したりします。

HttpServletRequestインタフェースには主に次のようなメソッドが用意されています。

メソッド名 説明
getCookies クライアントから送られてきた崛起オブジェクトの配列を取得する
getHeader リクエストヘッダーをString値として取得する
getMethod GET、POST、PUTのような、リクエストを生成したHTTPメソッド名を取得する
getQueryString リクエストのURLのパスの後ろに含まれているクエリ文字列を取得する
getSession リクエストに関連付けられているセッションオブジェクトを取得する
HttpServletRequestインタフェースの主なメソッド

HttpServletResponseインタフェースには主に次のようなメソッドが用意されています。

メソッド名 説明
addCookie レスポンスに指定されたクッキーを追加する
getWriter 文字データをクライアントに送り返すのに使用するPrintWriterオブジェクトを取得する
setContentType クライアントに送るコンテントタイプをセットする。getWriterメソッドを呼び出す前にこのメソッドを呼び出した場合のみ、指定したコンテントタイプが設定される
HttpServletResponseインタフェースの主なメソッド

今回作成したファイルを再び確認しましょう。18行目では、HttpServletResponseインタフェースのsetContentTypeメソッドを呼び出しています。ここでコンテンツのタイプとしてHTMLファイル、文字コードはUTF-8を指定しています。Webブラウザーはその情報を使って表示します。

19行目では、HttpServletResposeインタフェースのgetWriterメソッドを呼び出しています。結果としてレスポンス(応答)する情報を書き込みのできるPrintWriterオブジェクトが取得でき、このオブジェクトのメソッドを使ってクライアントに送りたい情報を設定します。

22行目では、PrintWriterクラスのprintlnメソッドを使って、HTML情報を書き出しています。これによりクライアント側のWebブラウザーに書き出した内容が表示されるようになります。

前へ   次へ