【Java & Tomcat】リダイレクトの設定(sendRedirect)※サンプルプログラム付き

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

この記事ではサーブレットによって特定のWebページへジャンプさせるための「リダイレクト」について説明する。

リダイレクトの設定の仕方

リダイレクトの設定とは、異なるURLにクライアントのあて先を変更するために適切なヘッダーとコンテンツを設定することである。sendRedirectメソッドを使ってURLパスを指定する。この時相対URLパスを使ってメソッドを呼ぶことも可能である。コンテナが相対パスを完全なURLパスに変換してくれる。

例えば下の図にあるように、リダイレクトを使えばサーブレットが別のWebページ(ここではGoogle検索)を呼び出すことが可能になる。

書き方の基本は簡単だ。

HttpServletResponseオブジェクト. sendRedirect (URLパス);

実際のコードはこうなる。

response.sendRedirect("http://www.google.com");

リダイレクトの設定API仕様

void sendRedirect(java.lang.String location)

戻り値の型

void

内容

指定されたリダイレクトロケーションURLを使用してクライアントに一時的なリダイレクトレスポンスを送る。このメソッドは、相対的なURLを受け取ることができる;サーブレットコンテナは、レスポンスをクライアントに送る前に、相対的なURLを絶対的なURLに変えなければならない。

もしロケーションの先頭に「/」がないならば、コンテナはそれを現在のリクエストURLに相対的なものとして解釈する。

もしロケーションの先頭に「/」があるならば、コンテナはサーブレットコンテナルートに相対的なものとして解釈する。

もしレスポンスがすでにコミットされているならば、このメソッドはIllegalStateException例外を発生させる。このメソッドを使用した後に、レスポンスはコミットされたとみなされるべきであり、書き込まれるべきではない。

引数:location - リダイレクトロケーションURL

例外:

java.io.IOException - もし、インプットもしくはアウトプットの例外が起こるならば。

java.lang.IllegalStateException – もし、レスポンスがコミットされたか、もしくは、URLの一部が与えられて、正しいURLに変換できなければ。

sendRedirectを使用したサンプルプログラム

このサンプルプログラムは、水曜日を英語で入力することを要求する。もし正しく英単語が入力されると、「正しく入力されました」が表示される。もし、間違っているとGoogle検索画面を表示する。このGoogle検索画面を表示する時にリダイレクトの設定を使っている。

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

最初に単語を入力するHTMLで書かれた入力画面redirect.htmlのコードを示す。

次に、HTML画面からリクエストを受け取るサーブレットのコードを示す。

実行結果

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

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

「Wednesday」と正しく入力し、検索ボタンを押す。

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

それ以外の間違った単語を入力し、検索ボタンを押す。

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

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

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

  • [1] アノテーションの宣言をする。
  • [2] HttpServletを継承して、ServletRedirectクラスを定義する。
  • [3] doGet()メソッドをオーバーライドして定義する。
  • [4] Content Typeを設定する。
  • [5] 入力された単語を取得し、変数wordに代入する。
  • [6] 単語をチェックするメソッドcheckWordを呼び出す。
  • [7]-[8] もし、チェックがNGならば、メソッドsendRedirectによってGoogle検索を呼び出す。そして、処理を終了する。
  • [9] HTMLを出力するためのPrintWriterオブジェクトを取得する。
  • [10]-[13] PrintWriterオブジェクトに「正しく入力されました。」と「水曜日は英語でWednesdayです。」を表示するHTMLコードを出力する。

 

  • [20] メソッドcheckWordを定義する。
  • [21]-[22] 引数wordがnullならば、戻り値falseで終了する。
  • [23]-[24] 引数wordがWednesdayならば、戻り値trueで終了する。
  • [25]-[26] 引数wordがwednesdayならば、戻り値trueで終了する。
  • [27] 戻り値trueで終了する。

まとめ

リダイレクトの動作自体は単純なものだが、例えば様々なURLを行き来するための分岐に利用することもできる。まずはサンプルプログラム内のリダイレクト先URLを変更したり、様々な改造にトライしてみよう。

 

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

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

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する