45
redirectforward Servlet/JSPについて~

Servlet/JSP【redirectとforward】

Embed Size (px)

Citation preview

redirectとforward~Servlet/JSPについて~

目次

1. Servlet/JSPとは?

2. redirectとforward

Servletとは?

“サーバ上でウェブページなどを動的に生成したりデータ処理を行うために、Javaで作成されたプロ

グラム及びその仕様である。”

Wikipediaより

JSP (JavaServer Pages) とは?

“HTML内にJavaのコードを埋め込んでおき、 Webサーバで動的にWebページを生成してクライ

アントに返す技術のこと。”

Wikipediaより

redirectとforward

サーブレットによる画面遷移の方法 他のリソースに処理を移す方法

redirect <HttpServletResponse>.sendRedirect(url);

• 意味:“再指示、再命令”

• クラス:HttpServletResponse

• 引数: Location (URL)

redirect流れ

URL1要求

URL2返却

URL2要求

redirect命令

クライアント サーバ

forward

• 意味:“転送”

• クラス: RequestDispatcher

• 引数: HttpServletRequest,

HttpServletResponse

<RequestDispatcher>.forward(request, response);

forward流れ

URL1要求

URL2返却

クライアント サーバ

比較

redirectページ1要求

ページ2返却

ページ2要求

redirect命令

クライアント サーバ

forwardページ1要求

ページ2返却

クライアントサーバ

⚫ 4段階(2往復)⚫ 他サーバへのredirect可

2段階(1往復) ⚫

他サーブレットへ ⚫

引数をパス

えっ、えっ、 なんて?

image source: Yahoo! Japan

ちょっと変わった お買い物をしよう!

牛乳をください!

redirectの場合・・・

牛乳をください!

・・・

牛乳をお求めの お客様には

牛の購入を案内すれば いいんだよね!

牛乳をお求めなら お牛をご購入ください!

失礼します!

なるほど!

牛をください!

・・・

はい!

forwardの場合・・・

牛乳をください!

・・・

この方、牛乳が 欲しいんだって!

任せたわ!

牛乳をお求めの お客様には 牛の購入を案内すれば いいんだよね!

はい!

はい!

もう一回見よう・・・

redirectの場合・・・

牛乳をください!

クライアント

要求

牛乳が欲しいなら 牛を買ってください!

サーブレット

redirect

牛をください!

redirectに従って 再び要求

はい!

別のサーブレット

2回目の 要求の結果

forwardの場合・・・

牛乳をください!

クライアント

要求

この方、牛乳が 欲しいんだって!

任せたわ!

サーブレット

forward

はい!

要求の結果

はい!

クライアント から見れば・・・

まとめよう・・・

要素 redirect(再指示) forward(転送)主な動き クライアントに他のurlをパス 他のサーブレットに処理をパス

挙動

1. クライアント: 要求 2. サーバ: redirect命令 3. クライアント: 要求 (redirect命令に従って)

4. サーバ: 返却

1. クライアント: 要求 2. サーバ: 返却

処理 クライアント側 サーバ側パフォーマンス やや遅い やや速い範囲 他サーバでも可 サーバ内クラス HttpServletResponse RequestDispatcherURL 新URL 元のURL

引数 Location (url) HttpServletRequest, HttpServletResponse

イラスト: Illust AC (http://www.ac-illust.com/)