Servlet/JSP 基礎編10 リダイレクト
リダイレクトとは
リダイレクトとは、サーブレット・JSPがレスポンスで、指定したWebページをブラウザに開かせる機能のことである。実際にリダイレクトを経験した人も多いと思う。ブラウザで見てみると、サーブレットやJSPのファイルを開いたにもかかわらず、突然、別のURLを開いたかのようになる。
この機は、Webサイトが引っ越ししたときなどに利用されている。
メリットとデメリット
前回と今回で、「フォワード」「インクルード」「リダイレクト」という機能がでてきたが、それぞれの動きが理解できたでしょうか。少し難しいと思うので、図で表したいと思う。
まずは、フォワードの図である。
フォワードはリクエスト先のファイルから他のファイルに処理を完全に委託するイメージである。
次は、インクルードの図である。
インクルードは、処理を途中まで、他のファイルに委託し、返答をしてもらう。そして、残りのレスポンスまでを元のファイルで行う。
そして、次の図はリダイレクトである。
リダイレクトは、一旦、URLをレスポンスとして、ブラウザに返し、ブラウザは再び、そのURLへリクエストを送り、レスポンスを待つ。
これらの図を見れば、メリットとデメリットが理解できると思う。
まず、デメリットは、通信の回数である。「リダイレクト」はブラウザとサーバの通信が2往復で、他の二つは1往復である。
メリットは、外部のリソースにアクセスできることである。「フォワード」「インクルード」は内部リソースのみに限られる。
つまり、使いたいファイルが内部にあるのか、外部にあるのかで使い分けるべきである。
作成するプログラム
今回は、リダイレクトという機能を感じてほしいので、外部リソースのサイトを表示できるプログラムにする。そこで、作成したサーブレットを開くと、Tomcatのページを表示するようにする。
リダイレクトをするには、「sendRedirect」を利用する。引数には、URLを入れる。プログラムは以下である。
特に難しいことは書いていない。ただ、「sendRedirect」を使っていて、URLにTomcatのページを入力しているだけである。
実際に、このサーブレットを開くと、このような画面が出てきた。
これはTomcatのページである。しっかりとリダイレクトされていることがわかる。
さいごに
リダイレクトについて、解説した。これで、3つの画面遷移について、それぞれの違いやメリット、デメリットが理解して頂けたかと思う。次回は、「フィルタ」を紹介したいとおもう。フィルタを利用すると、複数のファイルを扱うときに、コード量を減らせるという利点があるので、是非、知っていただきたい。