티스토리 뷰
친절히 도움받은 곳 : https://doublesprogramming.tistory.com/63
// (JSP 환경 기반) 현재 작업중인 페이지 ⇢ 다른 페이지 이동하는 두 가지 방식의 페이지 전환 기능
forward
- 클라이언트(브라우저)는 총 1번의 요청(ex. 100)을 하지만,
스프링 내부가 알아서 100 › 101 로 이동해 처리 후 결과를 보내준다
- forward는 컨트롤러(서버) 내에서 다른 컨트롤러를 호출
- web container 차원에서 페이지 이동으로 실제 웹 브라우저는
다른 페이지로의 이동 여부를 알 수 없다
- 웹 브라우저에는 최초 호출한 URL만 표시되고 이동한 URL은 알 수 없음
(예를 들어 위의 요청 '100'의 경우 '101'로 이동한 것을 알 수 없다는 것)
- 현재 페이지와 forward에 의해 서버 내부에서 호출되는 페이지는
request, response 객체를 공유한다. (요청에 대한 처리가 끝날 때까지 유효)
- forward 방식은 동일한 web container 안의 페이지로만 이동이 가능한데,
이는 forward가 동일한 웹 서버 내에서 실행되는 웹 컴포넌트 간의 이동을 의미
(그렇기 때문에 redirect 와의 차이가 두드러지는 것.)
- forward 방식은 서버 내 이동한 URL로 요청 정보 그대로 전달.
도움 받은 블로그에 따르면 말 그대로 "건네주기" 하는 것이라 한다.
따라서 클라이언트의 최초 요청에 따른 요청 정보는 다음 URL에서도 유효.
web container(웹 컨테이너)
: 서버 측 컴포넌트를 실행하는데 사용되는 소프트웨어 컴포넌트를 의미.
주로 웹 서버 내에서 동작하며 클라이언트 요청에 대한 응답 생성을 위해
서블릿 or JSP 같은 웹 컴포넌트를 로드하고 실행.
Component(컴포넌트)
: 웹 개발에서는 HTML, CSS, JavaScript 등을 이용해 만든 독립적 UI 부품을 '컴포넌트' 라 일컬
redirect
- 클라이언트에게 새로운 URL을 전달하여, 클라이언트가 그 URL로 다시 요청을 보내는 방식
(다른 웹 서버로의 이동도 가능 / ex. 100 › 101)
- web container는 redirect 명령 시 웹 브라우저에게 다른 페이지 이동 명령을 보냄
그러면 웹 브라우저는 명령받은 주소로 URL 변경 후 이동하게 됨
(ex. 100으로 요청을 보냈다가 101로 다시 요청을 보냄)
- 이동한 새 페이지에서는 request, response 객체가 새로 생성됨
(클라이언트의 요청 정보를 토대로 다시 요청해야 된다는 의미)
- redirect 방법은
1. 최초 요청 URL1을 받음
2. 클라이언트에 redirect 할 URL2를 리턴
3. 클라이언트에게 새로운 요청 생성토록 한 후, URL2에 재요청 보냄
(⁂ 처음 보냈을 때 최초의 요청 정보는 더 이상 유효하지 않음)
결과적으로! forward와 redirect의 차이점은? 🍀
① URL 변화 여부 (forward = 변화X | redirect = 변화O)
② 객체 재사용 여부 (forward = 재사용 | redirect = 재사용X)
forward ▷ 시스템에 변화가 없는 요청 (단순조회) : 리스트 조회 / 검색 등의 경우
redirect ▷ 시스템에 변화가 생기는 요청 (session 혹은 DB) : 로그인 / 회원가입 / 글쓰기 등의 경우
위와 같이 사용하는 것이 적합하겠다 ~
'기술 공부' 카테고리의 다른 글
Spring과 Spring Boot의 차이 (+ 궁금했던 @ResponseBody 정의) (0) | 2024.01.18 |
---|---|
contextPath란? (0) | 2024.01.17 |
자주 보이는 서버 응답 코드 (HTTP 상태 코드) (0) | 2024.01.16 |
SQL SELECT, INSERT, DELETE, UPDATE(DML) 의 반환 값은? (0) | 2024.01.16 |
JSON 파헤치기 (JavaScript Object Notation) (0) | 2024.01.16 |