Servletでのページ遷移(転送)
ページを遷移するほかの方法を見てみましょう。違うページに転送するには、RequestDispatcherインタフェースのforwardメソッドを利用します。次の手順で利用します。
- HttpServletResponseオブジェクトのgetServletContextメソッドでServletContextオブジェクトを取得する。
- ServletContextオブジェクトのgetRequestDispatcherメソッドでRequestDispatcherオブジェクトを取得する。その際、引数に転送先のページのパスをセットする。
- RequestDispatcherオブジェクトのforwardメソッドで転送する。
○ ファイル
プロジェクトに次のようなServletを追加してください。
パッケージ名 |
test.servlet |
クラス名 |
TransferTest |
スーパークラス名 |
javax.servlet.http.HttpServlet |
サンプルダウンロード
○ プログラム
doGetメソッドを追加して、次のようにプログラムを入力してください。
- package test.servlet;
- import java.io.IOException;
- import javax.servlet.RequestDispatcher;
- import javax.servlet.ServletContext;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- public class TransferTest extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- //サーブレットコンテキストを取得する
- ServletContext sc = this.getServletContext();
- //リクエストディスパッチャーオブジェクトを取得する
- RequestDispatcher rd = sc.getRequestDispatcher("/JSPTest.jsp");
- //違うページに転送する
- rd.forward(req, resp);
- }
- }
〇 Webアプリケーション設定ファイルの編集
web.xmlに次の内容を追加してください。
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
- http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
- version="3.1">
(そのほかの記述…)
- <servlet>
- <servlet-name>TransgerTest</servlet-name>
- <servlet-class>test.servlet.TransferTest</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>TransgerTest</servlet-name>
- <url-pattern>/transfertest</url-pattern>
- </servlet-mapping>
- </web-app>
○ 実行結果
http://localhost:8080/WebApp/transfertest
実行結果
○ 解説
17行目で、getServletContextメソッドを使ってServletContextオブジェクトを取得しています。そして20行目で、先ほど取得したServletContextオブジェクトのgetRequestDispatcherメソッドを使ってRequestDispatcherオブジェクトを取得しています。その際に、転送先のページのパスを引数に指定します。今回はJSPTest.jspに転送するためにパスを指定しました。その後、RequestDispatcherオブジェクトのforwardメソッドで転送を行います。その際、引数にHttpServletRequestオブジェクトと、HttpServletResponseオブジェクトを指定します。結果として指定したページに遷移します。
転送は次の手順で遷移します。
転送の仕組み
この手順ではページを遷移するときに、表示したいページの処理へサーバー内部で移動し、その結果を応答として返します。その結果、Webブラウザーの要求アドレスは変わらずに違うページの結果が表示されます。この方法を用いることで、サーバーがWebブラウザーから受け取った情報のオブジェクトを、そのまま違うページで処理することができ、柔軟な処理を記述することが可能になります。
前へ 次へ