ServeltによるPOST受信処理
クライアントからPOST要求があった場合、ServletではPOST受信の処理が行われます。その時に呼び出されるのが、HttpServletクラスのdoPostメソッドです。
この節では、Servletを使ってPOST送信を処理する方法を見てみましょう。
○ ファイル
プロジェクトに次のようなServletを追加してください。
パッケージ名 | test.servlet |
---|---|
クラス名 | PostServlet |
スーパークラス名 | javax.servlet.http.HttpServlet |
○ プログラム
doPostメソッドを追加したクラスに記述します。ここでは前節と同様にdoPostメソッドの仕様に従って記述することができますが、Eclipseの機能を使って追加するメソッドを選択して記述させることもできます。前節を参考に「メソッドをオーバーライド/実装」ダイアログボックスを表示し、次のように選択してください。
次のように追加したメソッドにプログラムを記述してください。
PostServlet.java
- package test.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;
- @WebServlet("/postservlet")
- public class PostServlet extends HttpServlet {
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- //クライアントへの出力準備をする
- resp.setContentType("text/html;charset=utf-8");
- PrintWriter pw = resp.getWriter();
- //クライアントにHTMLを書き出す
- pw.println("POST送信の応答です。");
- }
- }
○ ファイル
POST送信用のWebページを作成します。プロジェクトに次のようなファイルを追加してください。
ファイル名 | PostSend.html |
---|
プロジェクトを右クリックして表示されるメニューより「新規(W)」―「その他(O)...」をクリックします。すると次の図のように「ウィザードを選択」ダイアログボックスが表示されます。そのダイアログの「ウィザード(W):」内の「Web」―「HTMLファイル」を選択します。その後、「次へ(N) >」ボタンをクリックします。
すると、次の図のように「新規HTMLファイル」ダイアログボックスが表示されるので、「ファイル名(M):」に「PostSend」を入力して「完了(F)」をクリックします。
すると、次の図のように「パッケージ・エクスプローラー」のプロジェクト内にHTMLファイルが配置されます。
○ プログラム
次のようにHTMLを入力してください。
PostSend.html
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>POST受信処理テスト</title>
- </head>
- <body>
- <form action="postservlet" method="POST">
- <input type="submit" value="送信">
- </form>
- </body>
- </html>
○ 実行結果
コンテキストの定義を更新した後で、次のURLを入力して実行してみましょう。
http://localhost:8080/WebApp/PostSend.html
○ 解説
今回のサンプルはPostSend.htmlからアクセスします。このファイルの8行目で、フォームの送信先として「postservelt」、送信メソッドの指定を「POST」に指定しています。9行目で指定しているSubmitボタンをクリックすることで「http://localst:8080/WebApp/postservlet」にPOST要求が送信されます。
POST要求がPostServletクラスのdoPostメソッドで処理されます。このメソッドでは前節のdoGetメソッドと同様にクライアントのWebブラウザーにメッセージを表示させます。