転送方法による違い
- フォワード ... 転送元と転送先が同じアプリケーションの場合に限り、使用することができます。
- リダイレクト ... 転送元と転送先が別のアプリケーションを場合に使用する。転送速度が遅いというデメリットがあります。
フォワードによるViewの描画
フォワードを使って、出力処理をJSPファイルに依頼していきます。
@ RequestDispatcherインスタンスのfoward()メソッドを使用します。
foward()構文
RequestDispatcher dispatcher = request.getRequestDispatcher("フォワード先");
dispatcher.foward(request, response);
サンプルプログラム
フォワードを使って,サーブレットクラスからJSPファイルを出力します。
ForwardServlet.java
package servlet;
import java.io.IOException;
import javax.sevlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServlet.Request;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/ForwardServlet")
public class ForwardServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//フォワード
RequestDispatcher dispatcher = request.getRecestDispatcher("/WEB-INF/jsp/forward.jsp");
dispatcher.forward(request, response);
}
}
forward.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>サンプルページ</title>
</head>
<body>
<h1>これはサンプルです</h1>
<p>サンプルページ</p>
</body>
</html>
結果
これはサンプルです
サンプルページ
リダイレクトによるViewの描画
リダイレクトとは、ブラウザのリクエスト先を変更して処理の転送を行う方法です。転送元と転送先のアプリケーションが違う場合に使用します。
@ HttpServletResponseインスタンスのsendRedirect()メソッドを使用します。
リダイレクト構文
response.sendRedirect("リダイレクト先のURL");
リダイレクト先はURLか、アプリケーション内の場合は相対パスを使って指定できます。
サンプルプログラム
RedirectServlet.java
package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/RedirectServlet")
public class RedirectServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//リダイレクト
response.sendRedirect("/sample/SampleServlet");
}
}