ServletによるPOST受信処理

 クライアントからPOST要求があった場合、ServletではPOST受信の処理が行われます。その時に呼び出されるのが、HttpServletクラスのdoPostメソッドです。

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

○ ファイル

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

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

サンプルダウンロード

○ プログラム

 doPostメソッドを追加したクラスに記述します。ここでは前節と同様にdoPostメソッドの仕様に従って記述することができますが、Eclipseの機能を使って追加するメソッドを選択して記述させることもできます。前節を参考に「メソッドをオーバーライド/実装」ダイアログボックスを表示し、次のように選択してください。

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

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

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

〇 Webアプリケーション設定ファイルの編集

 web.xmlに次の内容を追加してください。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3.   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.   xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
  5.   http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  6.   version="3.1">
(そのほかの記述…)
  1.  <servlet>
  2.   <servlet-name>PostServlet</servlet-name>
  3.   <servlet-class>test.servlet.PostServlet</servlet-class>
  4.  </servlet>
  5.  <servlet-mapping>
  6.   <servlet-name>PostServlet</servlet-name>
  7.   <url-pattern>/postservlet</url-pattern>
  8.  </servlet-mapping>
  9. </web-app>

○ ファイル

 POST送信用のWebページを作成します。プロジェクトに次のようなファイルを追加してください。

ファイル名 PostSend.html

サンプルダウンロード

 プロジェクトを右クリックして表示されるメニューより「新規(W)」―「その他(O)...」をクリックします。すると次の図のように「新規」ダイアログボックスが表示されます。そのダイアログの「ウィザード(W):」内の「Web」―「Htmlファイル」を選択します。その後、「次へ(N) >」ボタンをクリックします。

新しいファイルの選択画面
新しいファイルの選択画面

 すると、次の図のように「新規Htmlファイル」ダイアログボックスが表示されるので、「ファイル名(M):」に「PostSend」を入力して「完了(F)」をクリックします。

ファイル名を指定する
ファイル名を指定する

 すると、次の図のように「パッケージ・エクスプローラー」のプロジェクト内にHtmlファイルが配置されます。

Htmlファイルが追加された
Htmlファイルが追加された

○ プログラム

 次のようにHtmlを入力してください。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>POST受信処理テスト</title>
  6. </head>
  7. <body>
  8.  <form action="postservlet" method="POST">
  9.   <input type="submit" value="送信">
  10.  </form>
  11. </body>
  12. </html>

〇 実行結果

http://localhost:8080/WebApp/PostSend.html

実行結果
実行結果

○ 解説

 今回のサンプルはPostSend.htmlからアクセスします。このファイルの8行目でフォームの送信先として「postservelt」、送信メソッドの指定を「POST」に指定しています。9行目で指定しているSubmitボタンをクリックすることで「http://localst:8080/WebApp/postservlet」にPOST要求が送信されます。

 POST要求がPostServletクラスのdoPostメソッドで処理されます。このメソッドでは前節のdoGetメソッドと同様にクライアントのWebブラウザーにメッセージを表示させます。

前へ   次へ