작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
349
0
안녕하세요.
원래 스프링이 기존 경로 세팅이 controller에 매핑된
값을 찾아서 return 시 resources:template/{name}.html
로 간다고 하셨고, 없을 시 static에서 찾아본 후 이동시켜
준다고 말씀하셨습니다.
이 내용은 이해를 했는데, 그렇다면 controller에 존재하는
메소드의 return 값은 경로를 지정해주기 위한 것인가?
라는 생각이 듭니다. 경로를 지정해준 것처럼 동작했기
때문입니다.
근데 ResponseBody를 통한 api 방식은 return 부분에
적는 것이 경로가 아닌 문자열 or 객체 등의 직접적인
값인 것 같아서 혼동됩니다.
프로그래밍 초보라 질문내용을 정확히 전달하기가 힘든데,
다시 정리하자면 기존의 메소드는 반환형을 기재할 시
해당 함수를 처리하고 반환 값을 return 해주기 위한
용도로만 알고 있었습니다. 근데 spring의 controller에서
는 메소드가 기존 용도라기 보다는 이동할 경로를 매핑
해주는 용도로 이해했습니다. 그런데, ResponseBody를
통해 기재한다면 후자보다는 전자쪽에 가까운 것 같은
느낌이 들었습니다. 그리고 혼동되었습니다.
어느 화면에서 띄워주는지는 기재되지 않았는데, 어느
화면에 해당 데이터를 띄워주는 것인지, controller의
역할이 무엇인지, 메소드에 대해 잘못 알고 있었는지
등등 말로 표현 못하지만 이 글을 적으면서도 여러
혼란이 생겼습니다. 딱 정리되진 않지만 질문드려 봅니다.
ㅠㅠ
읽어주셔서 감사하고 좋은하루 되시길 바랍니다..!
답변 2
0
안녕하세요. 유진이님
결론부터 말씀드리면 @ResponseBody를 사용하면 경로라는 개념이 없습니다. HTTP 메시지 바디에 직접 결과가 적히게 됩니다. (보통 JSON으로)
이 부분에 대한 이해가 어려운 이유는 보통 HTTP에 대한 기본 지식이 부족하기 때문입니다.
관련해서 다음 강의를 추천드립니다.
감사합니다.
0
안녕하세요. 유진이님^^
단순하게 스프링이 크게 2가지 다른 방식을 제공한다고 이해하시면 됩니다.
1. 화면 파일을 찾는 기능
2. HTTP에 바로 응답하는 기능(@ResponseBody)
감사합니다.
http에 바로 응답하게 되면 경로는 어디로 위치하게 되는건가요? 예를들어 ajax를
스프링에서 썼을때, 성공 후에 javscript쪽으로 데이터가 돌아오지 않던데.. 당시
구글링을 해봤을때는 @responsebody를 기재해라, modelAndView를 사용해라,
model을 사용해라 등등 방법을 다 써봤지만 ajax의 success 함수에 값이 찍히지가
않았던 경험이 있습니다. 그래서 그때 생각했던게 @ResponseBody로 돌려보내면
이걸 보낼 경로를 따로 설정해주지 못해서 ajax로 돌아가지 못한게 아닌가..?
이런 생각이였습니다.. 개발공부 경력이 얼마안되서 횡설수설.. 제가 궁금한점을
명확하게 말씀드리질 못하고 이런식으로 쓰게됐습니다 .. ㅠㅠ
다시 한번 정리해보자면 이런것 같습니다. 개발자님이 답변해주신 1번의 기능으로 컨트롤러가
html 경로를 찾아줄때는 model(?)에 데이터를 담아놓으면 같이 전달되는 것으로 알고
있습니다.
근데 responsebody로 전달해주게되면 return 부분에 경로가 아닌 return data를 적어주기
때문에 경로가 없는데 어디로 보내주느냐가 궁금했습니다. 이때 modelandview(?)를 이용해서
보내려고 했는데도 안됐었던것 같습니다..
넵 답변 감사합니다. 무료강의 수강이 끝나면 야생? 학습법에 따라서 전강의 수강하도록 하겠습니다 ㅎㅎ