개주 훈련일지/🏋️ 전집중 호흡 훈련

리다이렉트 vs 포워드

lshfood2 2025. 11. 23. 23:02

너무 너무 너무 중요해서

이것만 간단하게 포스팅 남겨둔다.

 

내 컨트롤러 코드에

request.setAttribute()를 했다?
무조건 포워드 사용.

pageContext.forward();

 

없으면 리다이렉트를 사용하면 된다.

response.sendRedirect();

1. request.setAttribute()를 했다면

 
  • request.setAttribute()는 request scope에 데이터를 저장
  • request 객체는 sendRedirect 시 초기화됨
  • 따라서 request attribute를 유지하려면 무조건 forward 사용해야 함

즉, 데이터 전달 목적이면 포워드가 필수

 

2. request.setAttribute()를 안 했다면

 

  • request에 아무것도 저장하지 않았으므로 request 초기화 문제 없음
  • 값이 필요하면 URL 파라미터나 session, cookie로 전달 가능

따라서 sendRedirect 사용 가능

상황 request.setAttribute() 추천 코드
화면 전환 + 데이터 전달 있음 forward
화면 전환 + 데이터 URL/세션으로 전달 없음 sendRedirect


3. 핵심 정리

  • forward → request scope 데이터 유지
  • sendRedirect → 새 요청 → request scope 초기화

그래서 request.setAttribute()를 썼으면 무조건 forward

쓰지 않았으면 URL로 전달하거나 session 사용 → sendRedirect 가능