- 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 |