너무 너무 너무 중요해서
이것만 간단하게 포스팅 남겨둔다.
내 컨트롤러 코드에
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 가능
'개주 훈련일지 > 🏋️ 전집중 호흡 훈련' 카테고리의 다른 글
| 비밀번호 입력을 '토글 버튼'으로 보이기/숨기기 기능 추가하기 (0) | 2025.11.27 |
|---|---|
| 서블릿 호출을 커스텀하는 xml 설정 (0) | 2025.11.27 |
| 실제 코드로 보는 '조합 선택자' 사용 이유 (0) | 2025.11.23 |
| 커스텀 체크박스 & 통계 UI 구조 분석 (0) | 2025.11.22 |
| 리스너(Listener) 서블릿 등록하기 (0) | 2025.11.21 |