【Java & Tomcat】サーブレットでGetとPost両方に対応する(サンプルコード付き)

  • このエントリーをはてなブックマークに追加
  • Pocket

ひとつのサーブレットでGETとPOST、両方に対応する事は可能なのだろうか。ここではその方法について説明する

GETとPOST両方に対応する方法

GETリクエストとPOSTリクエストの両方をひとつのサーブレットで処理することは可能である。Webコンテナは、GETを受け付けた時はサーブレットのdoGet()メソッドを呼び出し、POSTの時はdoPost()メソッドを呼び出す。このサーブレットの親クラスのHttpServletメソッドをオーバーライドすればよい。

GETとPOST両方に対応するサンプルプログラム

このサンプルプログラムは、クライアントからリクエストメソッドのGETとPOSTの両方を受け付ける。

リクエストでGETをdoGet()で受けた時は、現在の番号の値を表示し、同じ画面で新規の番号の入力を行う。この画面で変更ボタンが押されると、リクエストがPOSTで新規の番号とともにサーブレットに送られる。サーブレットは、doPost()によって新規の番号で現在の番号を更新し、更新された番号を表示する。

サーブレットの配置とプログラムのコードは次のようになっている。

ひとつのサーブレットにGETリクエストとPOSTリクエストの両方の処理が入ったコードを以下に示す。

実行結果

ブラウザにURL:http://localhost:8080/Servlet/GetAndPostServlet を入力し、Enterを押す。

表示されるブラウザ画面:

「新規の番号:」の入力フィールドに「5678」と入力する。そして、変更ボタンを押すと、次の画面が表示される。

表示されるブラウザ画面:

更新された新規の番号が表示される。完了ボタンを押すと、新規の番号入力画面が表示される。

表示されるブラウザ画面:

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] @WebServletアノテーションでurlPatternの宣言をする。
  • [2] HttpServletを継承して、GetAndPostServletクラスを定義する。
  • [3] 文字列変数numberを、初期値:1234で宣言する。
  • [4] doGet()メソッドをオーバーライドして定義する。
  • [5] Content Typeに「text/html; charset=Shift_JIS」を設定する。
  • [6] HTMLを出力するためのoutオブジェクトを取得する。
  • [7]-[8] 現在の番号の値を表示する。
  • [9] 画面フォームからの入力が、リクエストのPOSTメソッドとして送られるように設定する。
  • [10]-[19] 同じ画面で新規の番号の入力を行う画面のHTMLをoutオブジェクトに出力する。

 

  • [40] doPost()メソッドをオーバーライドして定義する。
  • [41] パラメータIdがnumberの文字列を取得して、フィールドnumberに設定する。
  • [42] Content Typeに「text/html; charset=Shift_JIS」を設定する。
  • [43] HTMLを出力するためのoutオブジェクトを取得する。
  • [44]-[45] 画面フォームからの入力が、リクエストのGETメソッドとして送られるように設定する。
  • [46]-[50] 更新された番号を表示する画面のHTMLをoutオブジェクトに出力する。

まとめ

doGetとdoPostの処理を1つのサーブレットに書くことでWebブラウザからどちらのリクエストが来ても処理できるようになった事がよくわかると思う。応用の利くプログラムなので、サンプルを基に色々と改造してみよう。

 

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できる。

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメントを残す

*

ゼロからエンジニアを目指す方へ
短期間でエンジニアになる方法

必要な勉強や技術の最新動向、本当に使えるIT資格、学習に役立つ国からの奨励金などの情報を無料でお届け

資料を見てみる