[Springboot] Spring 헷갈리는 내용 (21.03.25)

2021. 3. 25. 14:48·Programming/Springboot
728x90
반응형

Springboot 공부하면서 헷갈리는 내용 기록

 

1. PUT, DELETE 요청 방법 / @RequestBody

 

form 태그에서는 put,delete로 보내면 get으로 들어간다.

그래서 ajax로 put 보냈는데 또 안됨(타임리프 쓰기전에는 잘됬음)

타임리프를 쓰면 RestController -> Controller로 바꿔서 그러는것 같다.

그래서 PutMapping하는곳에만 ResponseBody를 붙여줘도 안된다. (메소드 리턴값에 ResponseBody를 붙이면 되는것 같다.)

 

=> properties에  spring.mvc.hiddenmethod.filter.enabled=true 추가한뒤

form 안에 <input type="hidden" name="_method" value="put"/> 추가하니까 put으로 요청이 가능해졌다.

spring.mvc.hiddenmethod.filter.enabled=true
<input type="hidden" name="_method" value="put"/>

 

그래도 Controller에서 RequestBody로 받으면 안되고 ModelAttribute로 받아야 작동한다. (이유를 모르겠는데 타임리프 쓰기 전에는 RequestBody로 받았었음, form으로 보내줄때만 그런가)

 

=> form태그로 값을 서버에 보내주게 되면 Json형식으로 보내주는게 아니기 때문에 @RequestBody를 쓰면 에러가 난다. 그래서 RequestBody를 제거하고 받는 Dto에 Setter를 추가하면 정상적으로 받을 수 있다.

 

그리고 ModelAttribute는 RequestBody와 다르게 set이 없으면 넣어주지 못한다. 원래 이게 맞는것 같은데 RequestBody는 특이하게 set이 없어도 자동으로 넣어준다.

 

자세한 설명은 밑에 자료를 보면 도움이 될 것같다.

jojoldu.tistory.com/407

 

@Request Body에서는 Setter가 필요없다?

회사에서 근무하던중 새로오신 신입 개발자분이 저에게 하나의 질문을 했습니다. POST 요청시에 Setter 가 필요없는것 같다고. 여태 제가 알던것과는 달라서 어떻게 된 일인지 궁금했습니다. 정말

jojoldu.tistory.com

 

2. @ModelAttribute

 

@ModelAttribute를 붙이는 것과 안붙이고 받는차이를 정확히 몰랐다 왜냐면 둘다 Setter를 선언해줘야 했기 때문에 @ModelAttribute를 왜 붙이나 했는데 @ModelAttribute가 붙은 객체는 view단에서 데이터를 호출할 수 있기때문에 쓰이는 것 같다.

 

3. 타임리프 사용할때 RestController

 

@RestController를 사용거나 @ResponseBody가 붙어있으면 return 문자열시 html을 안띄워주고 문자열만 띄워준다.

Controller는 사용자의 요청이 오면 등록된 ViewResolver를 통해 사용자에게 text/html 타입의 응답을 보내주게 된다.

 

RestController는 ViewPage를 통해 출력되는것이 아니라 HTTP ResponseBody에 직접 쓰여지게 된다. 사용자의 요청이 오면 Message Converter를 통해서 application/json, text/plain 등 알맞는 형태로 리턴되게 된다.

 

아직 타임리프가 어떻게 동작하는지 잘 모르기때문에 더 헷갈리는것 같다.

 

 

 

반응형
저작자표시 (새창열림)

'Programming > Springboot' 카테고리의 다른 글

[Springboot] JPA, N + 1 쿼리 증가 문제  (0) 2021.05.15
[Springboot] 자바 ORM 표준 JPA 프로그래밍 - 3  (0) 2021.04.16
[Springboot] 자바 ORM 표준 JPA 프로그래밍 - 2  (0) 2021.04.11
[Springboot] 자바 ORM 표준 JPA 프로그래밍 - 1  (0) 2021.04.08
'Programming/Springboot' 카테고리의 다른 글
  • [Springboot] JPA, N + 1 쿼리 증가 문제
  • [Springboot] 자바 ORM 표준 JPA 프로그래밍 - 3
  • [Springboot] 자바 ORM 표준 JPA 프로그래밍 - 2
  • [Springboot] 자바 ORM 표준 JPA 프로그래밍 - 1
wookcode
wookcode
공부한 내용들을 정리하고 기록하는 블로그입니다.
    반응형
  • wookcode
    wookcode
    wookcode
  • 전체
    오늘
    어제
    • 카테고리 (196)
      • study (1)
        • 아파치 카프카 애플리케이션 프로그래밍 with 자.. (0)
        • 인프런 (1)
      • Live Study (15)
      • Programming (14)
        • Java (8)
        • Python (1)
        • Springboot (5)
        • MSA (0)
      • 알고리즘 (117)
        • 백준 (58)
        • 프로그래머스 (59)
      • 에러로그 (5)
      • 항해99 (23)
      • 면접 (1)
      • 프로젝트 (1)
      • CS (19)
        • 네트워크 (2)
        • 운영체제 (2)
        • 데이터베이스 (2)
        • 컴퓨터구조 (1)
        • Java (8)
        • Spring (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준
    jpa
    스파르타코딩클럽
    파이썬
    해결
    카카오인턴
    항해마켓
    java
    orm
    그리디
    spring
    회고
    알고리즘
    조합
    미니프로젝트
    에러
    버그
    인프런
    프로그래머스
    후기
    실전프로젝트
    카카오코딩테스트
    브루트포스
    항해99
    괄호
    SFlash
    SpringBoot
    정리
    코딩테스트
    김영한
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
wookcode
[Springboot] Spring 헷갈리는 내용 (21.03.25)
상단으로

티스토리툴바