본문 바로가기
[ Developer ]/Web - Servlet JSP

[JSP Web] 댓글의 댓글 대댓글 Reply 구현

by 김현섭. 2016. 6. 3.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Reply
댓글의 댓글 기능
Group  /  Parent  /  Depth  /  Order

  • Depth
    • Parent_Reply_ID의 Depth + 1
  • Order
    • Parent_Reply_ID를 처음으로 갖는다면
    • Parent의 Order + 1
    • 그러나 Parent_Reply_ID가 이미 존재 한다면
    • 존재하는 값들의 MAX(order) + 1
    • Order 넘버보다 크거나 같은 값들은 모두 +1 시킨다

댓글 달기를 클릭했을 시 이벤트를 생성해야 한다


span을 통해 class를 지정해 주고 클릭 이벤트를 생성한다

jQuery에서 클릭 이벤트 시 this(현재 클릭된 td)에서 3번째 위의 부모를 찾아간다
일단 확인을 위해 출력을 해본다



자식들을 가져오는 방식은 다음과 같다



위와 같은 기능을 이용해서 4가지 값들을 가져올 수 있다


위와 같이 작성한다면 테이블이 생성될 때 부모로 찾아가고 자식으로 찾아가는 형식으로 필요한 값들을 찾아올 수 있다
hide처리된 값들 중 원하는 값들


replyId를 가져오기 위해서 hide 처리된 replyId를 하나 주고 
jQuery 위와 같이 받는다


댓글 달기를 누를 시 우선 제일 부모 <table>로 접근을 하고 
<tr> 자식으로 <td> 자식까지 들어가서 text로 값을 불러오는 형태이다

이젠 doWriteReplyServlet에서 대댓글인지 새로운 댓글인지를 구분해야 한다
ReplyBiz에 가서 새로운 메소드를 생성한다


기존의 추가 메소드에 검사하는 구문과 검사 메소드를 생성해서 추가해준다

ReplyBiz


이제는 DAO를 생성한다
우선 댓글 작성 시에 ParentReplyId가 0 이상인 (즉 댓글의 댓글) 댓글들에 대해서 다른 쿼리를 적용시키기 위해
댓글 작성 메소드에서 추가적으로 분기를 시킨다

ReplyDAO


query - insertReReply



위의 구문을 보면 등록하려는 댓글 즉 reply(ReplyVO)가 가진 ParentReplyId가 0 이상일 때 insertReReply 쿼리를 적용 시키고 또한 그 쿼리에 맞게 set 시켜주는 값들을 추가해준걸 볼 수 있다

또한 DAO에서 위에 ReplyBiz에서 추가했던 DAO 메소드들을 추가해준다
기본적인 DAO 구문은 비슷하나 쿼리가 많이 다르다

ReplyDAO - selectCountParentReplyId


query.xml - selectCountParentReplyId



ReplyDAO - selectMaxOrderNoByParentReplyId


query.xml - selectMaxOrderNoByParentReplyId



ReplyDAO - selectLatestOrderNoByParentReplyId


query - selectLatestOrderNoByParentReplyId




ReplyDAO - updateOrderNoByGroupId


query - updateOrderNoByGroupId


각각의 DAO 메소드들을 정의 했으면 이제는 출력을 위해 게시글의 Detail Page을 보여주는 JSP를  수정한다

selectedarticle.jsp


댓글을 보여주는 테이블에서 margin을 left로 reply.depth * 20 px정도 주면 depth에 따라서 안쪽으로 들어가게 된다
그리고 댓글 달기를 span으로 준다

그리고 jQuery 부분에서 아래와 같이 jQuery를 작성하면 적용된다