Programming/Servlet & JSP

Servlet & JSP (2) - Page 이동

코딩하는 포메라니안 2022. 3. 27. 16:47

여기서 말하는 Page이동이란, 클라이언트의 요청을 받은 서버가 클라이언트에게 "이 페이지로 가!"라고 보낼 수 있는 것을 말한다.

Servlet | JSP에서 html | Servlet | JSP 등으로 이동 가능하다.

 

두 가지 방법이 있으며, 특징을 파악하고 상황에 맞게 선택하여 사용해야 한다.

 

  forward(request, response) setRedirect(location)
사용법 String path="/경로";
RequestDispatcher dispatcher = request.getRequestDispatcher(path);
dispatcher.forward(request, response);

*클라이언트에 다시 돌려주지 않고 페이지를 바로 변경하기 때문에 request의 url을 얻어와서 dispatcher로 변경할 url을 넣어준다.
*context_root 이름은 경로에 적으면 error(context내에서만 이동 가능하므로 알아서 붙여놓고 시작함)
response.setRedirect(location);
이동 가능 범위 동일 프로젝트내 동일 프로젝트, 타 URL도 가능
location bar(=url) 기존 URL 유지 (변경X) 이동하는 page의 url로 변경됨
객체 이동 전 페이지는 request와 response를 같이 전달한다. 기존의 request와 response가 소멸되고, 새로 생성된다.
속도 빠른편 느린편
데이터 전달 request의 setAttribute(name, value)를 통해 전달 가능 request가 새로 생성되기 때문에, request로는 data전달 불가능
session이나 cookie를 이용

 


 

1. forward(request, response)

1. 동작 과정

- 서버에서 알아서 바꿔서 반환해준다.

- url이 바뀌지 않기 때문에, 새로고침하면 다시 /test페이지로 돌아간다.

- request로 온 url에 dispatcher로 변환할 url로 만듦

 

 

 

2. 예시

String url = "list.jsp"
RequestDispatcher dispatcher = request.getRequestDispatcher(url);
dispatcher.forward(request, response);

 

 

2. sendRedirect(location)

1. 동작 과정

- 새로운 곳에 접근하려면 새 네트워크로 다시 통신하기 때문에, request와 response가 새로 생성되는 것임

- response로 변환할 url을 알려준다.

 

 

 

2. 예시

String url = "/list.jsp"; // '/'는 context root부터 시작을 의미
response.sendRedirect(url);