1.リダイレクトとは
リダイレクトとは、サーブレットで実行している処理を別の処理へ転送する方法です。サーブレットからjspへの処理の転送や、サーブレットから別サーブレットへの処理の転送を可能とします。
同じようにサーブレットから特定のjsp/サーブレットに処理を転送するフォワードという方法がありますが、処理の中身ががフォワードとリダイレクトでは異なります。
具体的に、リダイレクトは、ブラウザからのリクエスト先を変更することによって処理の転送を行います。
2.リダイレクトを用いたサンプルプログラム
フォワードを実際に用いたコードを見ていきましょう。
リダイレクト先が同じアプリケーションサーバにある
【jspにリダイレクト】
response.sendRedirect("/アプリケーション名/WebContextからのパス");
※遷移先jspはWebContextの直下に配置する必要があります。
【サーブレットにリダイレクト】
response.sendRedirect("/アプリケーション名/URLパターン");
リダイレクト先が別のアプリケーションサーバにある
response.sendRedirect("/リダイレクト先URL");
<サンプルコード1>
Tojsp.java(jspクラスへのリダイレクト先のサーブレットファイル)
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;
/**
* Servlet implementation class mainController
*/
@WebServlet("/Tojsp")
public class Tojsp extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//対象jspのクラス名を指定してリダイレクト
response.sendRedirect("/SampleRedirect/Display.jsp");
}
}
Display.jsp(リダイレクト先のjspクラス)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>Display.jsp</h3>
</body>
</html>
ファイル構成
実行結果
<サンプルコード2>
ToServlet.java(別サーブレットファイルへのリダイレクトを行うサーブレットファイル)
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;
/**
* Servlet implementation class mainController
*/
@WebServlet("/ToServlet")
public class ToServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//対象サーブレットのURLパスを指定してリダイレクト
response.sendRedirect("/SampleRedirect/DisplayServlet");
}
}
DisplayServlet.java(リダイレクト先のサーブレットファイル)
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class mainController
*/
@WebServlet("/DisplayServlet")
public class DisplayServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<boky>");
out.println("<H3>DisplayServlet</H3>");
out.println("</body>");
out.println("</html>");
}
}
実行結果