본문 바로가기
웹개발/Springboot

[블로그 만들기] 댓글 출력하기 -1)

by HoPpangg 2021. 8. 3.
SMALL

댓글을 관리할 도메인과 컨트롤러를 만들어줍니다.

comment 테이블의 컬럼값을 정해줍니다.

원래라면 getter와 setter를 모두 적어주어야하지만 @Data를 통해 롬복을 활용해줍니다.

lombok의 @Data를 해주면 getter와 setter, toString까지 자동으로 인식이 됩니다.

pom.xml에 lombok 라이브러리를 삽입했는지 확인해주세요!

컨트롤러에서 테스트로 확인해보면 getId 등의 생성한 컬럼의 get 함수가 인식되는 것을 볼 수 있습니다.

마찬가지로 toString도 인식됩니다.

또한 @RequriedArgsConstructor annotation을 통해 DI를 자동으로 해줍니다. 

@RequiredArgsContructor를 붙이면 final이 붙어있는 객체들에 대해서 DI를 자동으로 인식할 수 있게끔 생성해줍니다.

서버를 실행시켜보면 DB에 테이블이 잘 생성된 것을 볼 수 있습니다.

yml파일의 DB를 create해서 생성한 것이기때문에 기존에 회원가입해놨던 데이터들이 날라갔으므로 다시 회원가입과 글쓰기를 통해서 댓글쓰기 페이지가 보이도록 해줍니다.

댓글 쓰기 기능은 등록 버튼을 눌렀을 때 사용자가 작성한 댓글이 등록되어야하므로 post방식의 매핑을 통해 DB에 저장해야 합니다.

 

form 태그로 POST 매핑을 보내면 페이지 전체를 받는 것이기 때문에 페이지 전체가 reload(새로고침) 됩니다. 이렇게 하면 그냥 전체를 새로고침하면 되는 것이기 때문에 코드를 짜기 편해집니다.

 

fetch를 이용해서 POST 매핑을 보내면 댓글 리스트 부분만 새로 고침이 됩니다. ajax로 부분 새로고침을 할 수 있는데 변경 사항이 적을 때는 부분 변경이 편리하지만 변경사항이 많아지거나 처리해야할 것들이 많아지면 전체새로고침이 더 편리할 때가 있습니다.

 

댓글 들은 게시글 별로 보여야 하므로 CommmentRepository 인터페이스에 post_id로 comment들을 찾을 수 있는 쿼리문을 만들어줍니다.

 

댓글들을 보여주는 페이지는 상세보기 페이지이므로 detail.jsp 페이지로 이동할 때 comment의 데이터를 가지고 있어야합니다.

해당 게시글에 작성된 댓글들만 보여야하므로 post_id로 comment 데이터를 가져와 List 컬랙션에 넣고 모델에 올려줍니다.

 

detail.jsp 파일로 가서 댓글을 출력해줍니다.

forEach 문을 사용해 모델에 올려둔 데이터들을 모두 출력해줍니다.

아직 작성 기능은 완성이 되지 않았으므로 DB에서 직접 insert해주어서 확인해봅니다.

잘 출력되는 것을 볼 수 있습니다.

 

그렇다면 다른 아이디로 로그인 했을 때를 보면

다른 사람이 쓴 댓글임에도 불구하고 삭제 버튼이 보입니다.

수정해줍니다.

로그인된 세션의 아이디와 댓글을 작성한 사용자의 아이디가 같을 때 삭제 버튼을 보이게 해줍니다.

저장하고 확인해보면

삭제 버튼이 사라진 것을 볼 수 있습니다.

 

728x90
LIST

댓글