개발 기록
211108 스프링3 (@RequestBody) 본문
- 오늘 실강때 알게된 것 !
프레젠테이션 레이어에서 레포지토리 레이어로 바로 접근하면 잘 못 된거구나 어떻게보면 당연한 건데 인지하지 못 하고 있었다 그래서 튜터님이 죄악을 저질렀다고 하셨을때도 어떤 부분인지 몰랐는데 이번에 인지했다.
그래서 컨트롤러에서 repository.save( ) 같은 리포지토리에 접근하는 코드는 고쳐야한다.
컨트롤러 - 서비스 처럼
**
@RequestBody : 메소드 매개변수가 웹 요청 본문에 바인딩(연결)되어야 함을 나타내는 주석
(Annotation which indicates that a method parameter should be bound to the web request body.)
@RequestBody 주석은 HttpRequest 본문을 전송 또는 도메인 개체에 매핑(하나의 값을 다른 값으로 대응시킴)하여 Java 개체에 대한 인바운드 HttpRequest 본문의 자동 역직렬화(byte로 변환된 Data를 원래대로 Object나 Data로 변환)를 활성화합니다.
기본적으로 @RequestBody으로 주석을 추가하는 유형은 클라이언트 측 컨트롤러에서 보낸 JSON과 일치해야 합니다.
영어로된 문서는 아직 어려워서 블로그도 참고 했다..
*HTTP 요청과 함께 받은 JSON 데이터를 Java 객체에 매핑할때 사용
출처: https://memostack.tistory.com/245?category=755742 [MemoStack]
- 실습 중 오류
controller-java 26번째줄이라고 친절하게 알려줬다.
그니까 리포지토리랑 뭔가 연결이 문제가 있던 것 같다.
컨트롤러에서 다른 레이어 연결해줄때 final을 넣어주니까 됐다.
에러 메시지 복사 해서 구글링했을 때 나온 내용
Query에 Null 값이 들어갔을 경우 발생하는 문제입니다. 해결 방법 1. Controller, DAO, Service 단에서 각각에 넘겨주는 쿼리값의 주입이 됐는지 확인 2. DB가 run 중인지 확인 출처: https://beagle-dev.tistory.com/80 [언젠간 되어있겠지] |
그리고 post때 @RequestBody를 안 써도 오류가 안 떠서 안 쓰고 데이터를 보내봤더니 오류가 났다
json 데이터를 자바에서 제대로 받으려면 @requestBody를 써야한다
어노테이션 안 썻을때 오류났다고 알려준 21번째 / 데이터 저장이 안된다는 거 같음
다시 @RequestBody 추가해서 써서 post 요청 했더니 성공.
- 스프링 기초 강의(4주차)
-컴포넌트 등록 ?! 스프링이 자동으로 필요한 클래스를 필요한 곳에 생성하려면 그렇게 해야할 목록을 확인 할 수 있어야한다. 그 목록에 등록하는 간단한 방법 필요할때 쓰라고 스프링에게 알려주는 것(권한을 주는 것)
-함수에 값 넣어줄때는 문자열 형태로 넣어줘야 한다. 저번에 프로젝트 수정할때 배열이 왜 안 들어가지했는데 그게 json 형태라 그런것이였다.! 하지만 다시 파라미터로 전달이 될때는 다시 josn으로 바뀐다.
예전에 물어봤던거
onclick="CancelChallenge(${challenge}) 치면 Uncaught SyntaxError: Unexpected identifier 이 오류 나던데 challenge 는 왜 못 보내는 건가요? |
이거랑 관련된거 맞겠지..?
'TIL' 카테고리의 다른 글
211110 스프링 (IOC,DI) (0) | 2021.11.10 |
---|---|
211109 스프링4 (0) | 2021.11.09 |
211107 WIL (0) | 2021.11.07 |
211104 스프링2 (0) | 2021.11.04 |
1103 TIL (스프링 ) (0) | 2021.11.04 |