• Forward
    • 클라잉언트가 서버1한테 요청했는데 클라이언트 모르게 서버2한테 넘겨줌 
    • 요청 넘기는 것
    • 클라이언트는 모른다. 
    • MVC패턴이 forward기반
      • 요청받는 얘랑 응답하는 얘가 따로
        • 응답 : jsp
        • 요청 : servlet
      • servlet이 받아서 jsp가 응답하도록 해야하는 것
    • 같은 웹프로젝트 안에 있는 얘만 forward대상이 될 수가 있다.
      • 다른 프로젝트에 있는 얘는 forward할 수가 없다. 
    •  
  • Redirect
    • 클라이언트가 서버1를 요청했는데 서버2의 결과를 보게 됨
    • 서버1이 응답을 하긴 함.
      • 응답상태 코드 200 (성공)이 아니라 302이란 응답코드와 함께 url(서버2에 대한)을 클라이언트한테 준다. 
      • 클라이언트가 300받으면 다시 받은 url받아서 그 url 가지고 다시 요청하게 된다.
    • 클라이언트가 그 사실을 안다
    • ex) 몇 초 뒤에 사이트가 이동하는 것
    • 갔다 왔다, 갔다 왔다함

package base;

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("/forward")
public class ForwardServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("FowardServlet 수행 시작");		

		RequestDispatcher rd = request.getRequestDispatcher("/htmlexam/first.html");	// 컨텍스트패스 이후 부분을 줘야
		//RequestDispatcher rd = request.getRequestDispatcher("http://www.naver.com/");	// 컨텍스트패스 이후 부분을 줘야	
		
		rd.forward(request, response);	
		System.out.println("FowardServlet 수행 종료");		
	}
}
  • forward대상에 대한 path 정보 전달
  • /htmlexam/first.html에 /edu붙이면 안됨
    • 동일한 자원안에서 요청할 수 있다고
    • 다른 프로젝트는 forward대상으로 붙일 수 없다.
  • forward해도 밑에 있는 내용은 내용대로 수행함

redirect

 


  • 다른 사이트면 redirect, 
  • 동일 프로젝트면 forward사용해라
    • forward사용할 때, 상대 패스 주면 안 나옴
    • 절대 url써라
    •  

'study > JAVA 전문가' 카테고리의 다른 글

[jsp] 액션태그  (0) 2022.01.03
[fileIUpload,jsp] 서블릿 구현  (0) 2021.12.30
[servlet] 상태정보 유지 기술  (0) 2021.12.29
[Servlet] Get방식  (0) 2021.12.28
[HTML] 연습  (0) 2021.12.28

+ Recent posts