반응형
Redirect와 Forward 차이
1. Redirect
특정 URL에 접속하면 클라이언트에 이동할 URL 정보를 제공하고(상태 코드 302) 클라이언트는 리다이렉트 주소로 이동한다(웹 브라우저 주소는 리다이렉트 URL 주소로 변경된다).
response.sendRedirect("home.jsp");
(1) 클라이언트 ----> 서버 URL1(서블릿/JSP)
(2) 서버 URL1 ----> 클라이언트 (서버는 다른 주소로 연결할 것을 응답)
(3) 클라이언트 ----> 서버 URL2(서블릿/JSP) (클라이언트는 제공받은 다른 주소로 요청)
(4) 서버 URL2(서블릿/JSP) ----> 클라이언트
[예제 코드] 접속한 url에서 다른 url(예; home.jsp)로 보내기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
response.sendRedirect("home.jsp");
%>
2. Forward
요청된 내용을 처리하다가 추가 처리를 위해 다른 서블릿/JSP를 호출하면서 응답을 위임한다. (웹 브라우저에서 처음 접속한 URL은 바뀌지 않고 유지된다).
(1) 클라이언트 ----> 서버 URL1(서블릿/JSP)
(2) 서버 URL1 ----> 다른 서블릿/JSP (서버 URL1에서 다른 서블릿/JSP 파일에 응답하게 함)
(3) 다른 서블릿/JSP ----> 클라이언트 (클라이언트에 응답함)
[예제 코드] FrontServlet (/front)
package examples;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
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("/front")
public class FrontServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public FrontServlet() {
super();
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("username", "홍길동");
RequestDispatcher requestDispatehcer = request.getRequestDispatcher("/next");
requestDispatehcer.forward(request, response);
}
}
[예제 코드] NextServlet.java (/next)
package examples;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
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("/forward")
public class ForwardServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public ForwardServlet() {
super();
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>next</title></head>");
out.println("<body>");
String username = (String)request.getAttribute("username");
out.println(username + "님, 반갑습니다.");
out.println("</body>");
out.println("</html>");
}
}
반응형
'JAVA Servlet,JSP' 카테고리의 다른 글
JSP, EL(Expression Language) 표기 (0) | 2022.06.04 |
---|---|
Servlet/JSP, 변수 Scope 종류 (0) | 2022.06.04 |
JSP 내장 객체 (JSP Implicit Objects) (0) | 2022.06.03 |
JSP에서 사용할 수 있는 설명문 표기 종류 (0) | 2022.06.03 |
JAVA Servlet, JSP 표기 문법 (0) | 2022.06.03 |