반응형
주말에 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로 이동하라는 응답 보냄.
반응형
'Language > Java' 카테고리의 다른 글
| Spring / thymeleaf / 인사 등록 / 에러 일기 (2) | 2024.12.18 |
|---|---|
| 스프링 / 인사 조회 및 수정 / xml 쿼리문 에러 수정 (0) | 2024.12.15 |
| java - NullPointerException (target is null for method equals) (2) | 2024.10.15 |
| NullPointerExceotion 및 Map(key, value) 복습 (0) | 2024.10.13 |
| DTO(Data Transfer Object)는 왜 써야 할까~? (0) | 2024.09.12 |