Language/Java
웹 요청 처리 Forward와 Redirect 에러 파악하기
쿠키오빠
2024. 11. 25. 21:46
반응형
주말에 Spring( mybatis와 db , thymeleaf 연동) 공부중이었다.
이제 기본적으로 데이터를 가져와서 뿌려주는 건 잘 한다고 생각했으나 자만이었다....
Model로 받아서 Model로 뿌려줄 땐 에러 없이 잘 출력이 됐지만 Redirect로도 보내보고 싶어서 보내보니 계속 404가 뜨는 거 아닌가...
<Model로 받아서 뿌려줄 때> 이상 없음

- 수행 : 조인 버튼 클릭 시 ,
Controller 의 Getmappaing으로 로직 수행하고, 서비스 갔다가 매퍼 갔다가 xml에서 쿼리 정보 가지고 오기


<출력 결과>

이상 없이 잘 출력 된다.

Redirect 입력하지 않을시, Default 가 forward다.
<RedirectAttributes 로 받아서 뿌려줄 때 에러> 계속 404 출현 (경로를 못찾는다)


대충 경로를 못 찾는다 라고 하는 것 같다.
이거 가지고 몇시간을 찾아본 결과.... 리다이렉트의 특징을 간과하고 있었다는 걸 늦게나마 깨달았따.
Model로 뿌려 줄 때(forward)에와 달리 url의 변화가 없었으나,
Redirect 는 최초 요청에 대한 request 데이터를 가지고 있지 않고, url이 변경되는 특징이 있다.

url 변경에 필요한 핸들러 메서드가 필요했던 것이다!

이로써 문제가 해결 되었다. 이번 바보짓 덕분에 다신 잊어먹지 않을 것 같다.
값진 에러였다.
Forward와 Redirect의 간단한 용어 정리를 하고 집에 가야겠다.
Forward

<forward> 위임하다
- 서버 내부에서 요청을 다른 리소스(예: JSP, Servlet)로 전달. 클라이언트는 이 과정에서 아무것도 알지 못함.
- 기존, request 요청을 받은 서블릿에서 response를 전달했지만, forward는 서블릿에서 바로 response하지 않고 다른 서블릿 객체에 위임하여 response받고 request 받은 객체가 response!!!
Redirect

- redirect는 forward와는 다르게 request가 들어오면 다른 서블릿 객체에 명령을 내려, 서블릿 객체가 실행
- 클라이언트에게 새로운 URL로 요청을 하도록 지시, 서버가 클라이언트에게 다른 URL로 이동하라는 응답 보냄.
반응형