ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 11 댓글 기능 구현(2)
    Spring/03 MyBatis로 게시판 만들기 2023. 7. 28. 18:23
    반응형

    댓글 기능 구현(2)

    컨트롤러 작성 & 테스트

    CommentController.java (List 메서드 생성)

    >> @ResponseBody를 써서 views에 출력하지 않고

          HTTPBody에 문자 내용을 직접 반환한다

     

     

     

    결과 확인

    MySQL

    >> 각각의 테이블에 데이터를 넣었다

    >> 데이터가 들어온걸 확인 할 수 있다                                 >> json으로 데이터가 들어왔다

     

    - 예외가 발생한다면?

    CommentServiceImpl.java

     

    결과 확인

    >> HTTPBody에는 아무것도 출력되지 않고, 응답헤더는 200번대가 출력된다

     

     

    - 해결책 ResoponseEntity< >( )

    CommentController.java

    >> Entity는 응답이나 요청할 때, 전송할 대상을 Entity라고 한다

    >> 원래는 Entity만 보냈는데 상태코드도 같이 보내준다

     

     

    결과 확인

     

    CommentController.java(remove 메서드 생성)

    @Pathvar Integer cno @DeleteMapping("/comments/{cno}")

    >> @Pathvarinteger cno의 값이 ("/comments/{cno}")cno값으로 전달된다

    integer bno @DeleteMapping("/comments/{cno}")

    >> /comments?{cno}?bno=

     

     

    결과 확인

    >> @DeleteMapping이므로 HTTPbody에서 확인하기 어려워 POSTMAN을 이용

    MySQL

    >> cno=18, bno=1을 삭제

     

    POSTMAN

     

    MySQL

    >> 데이터가 삭제된 것을 확인할 수 있다

     

     

    CommentController.java(write 메서드 생성)

    >> @RequestBody를 사용해야 commentDto의 데이터를 받아을 수 있다

     

     

    결과 확인

    MySQL

    >> bno=1의 값을 넣어 줄 것이다

     

     

    POSTMAN

     

    URI를 입력 POST요청

    POST요청시, Headers의 타입과 형식을 넣어줘야한다

    타입(Content-Type)과 형식(application/json)을 입력한다

    입력할 데이터를 넣는다

    send

    요청한 데이터의 상태와 메시지가 잘 되었는지 확인한다

     

     

    MySQL

    >> 데이터가 정상적으로 입력되었다

     

     

    CommentController.java(Modify 메서드 생성)

    >> 메서드를 작성하면서 에러가 발생했고 문제점은 어노테인션을 잊고 작성했다

    >> 데이터를 받을 때 {cno}도 주의하면서 작성 할 것

     

     

    결과 확인

    POSTMAN

    >> commenter는 임의로 넣어주었다

     

     

    MySQL

    >> comment의 내용이 수정되었다

     

     

    tip

    각각의 메서드에 @ResponseBody가 붙어 있다

    @ResponseBody를 컨트롤러에 붙이면 각가의 메서드들에 전부 적용된다

     

    @Controller + @ResponseBody = @RestController

     

     

    반응형
Designed by Tistory.