여기서 말하는 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);
'Programming > Servlet & JSP' 카테고리의 다른 글
Servlet & JSP (4) - Cookie와 Session (0) | 2022.03.27 |
---|---|
Servlet & JSP (3) - MVC 패턴 (0) | 2022.03.27 |
[환경설정] Eclipse의 Web Project와 DB(MySQL) 연결하기 (0) | 2022.03.26 |
Servlet & JSP (1) - 기본객체(내장객체) (0) | 2022.03.25 |
[환경설정] Context root 변경 (0) | 2022.03.24 |