본문으로 바로가기

[JSP개발] 게시판 - 댓글 답변 구현

category 코딩/JSP 2017. 1. 3. 17:08







1. 개요





 난 포스팅 :  [JSP개발] 게시판 - 댓글 작성 및 댓글 목록



댓글 구현 후 댓글에 답변을 작성하는 것을 구현할 것이다. 답변의 경우 로그인한 사용자만 작성이 가능하도록 한다.



 JSP

  • BoardDetailForm.jsp : 게시글 상세보기에는 댓글의 답변을 작성하는 창을 띄우는 코드를 추가한다.

  • CommentReplyFrom.jsp : 답변 작성 화면이다.


 Java

  • CommentReplyFormAction.java : 댓글 답변 작성 화면을 띄우는 Action이다.

  • CommentReplyAction.java : 댓글 답변을 처리하는 Action 이다.

  • CommentDAO.java : 댓글 1개의 정보를 가져오는 메서드를 추가한다.




2. 소스 코드



■ BoardDetailForm.jsp




[답변] 클릭 시 cmReplyOpen( )을 호출하도록 한다. 이때 댓글의 글번호를 전달한다. 글 번호는 답글의 부모글 정보를 가져오는데 사용된다.




답변 글일 경우 공백과 이미지를 추가해준다.

  • 194~197줄 : level 값은 1부터 시작된다. 그냥 댓글의 경우 level이 1이고 답글의 경우 1보다 큰 값을 가진다. 



함수 cmReplyOpen( )는 답변 화면을 open한다.

  • 112~116줄 : 답변은 로그인한 사용자만 작성 가능하다. 세션에 아이디가 없을 경우 경고 창을 띄운다.

  • 120줄 : 부모 창의 이름을 지정한다. 여기서 부모창이란 상세보기 화면(BoardDetailForm)이다.

  • 121~122줄 : open에는 URL, 자식창이름, 크기 및 기타 옵션 이렇게 3가지를 지정한다. 





■ CommentReplyFormAction.java


CommentReplyFormAction은 댓글 글 번호를 이용해서 부모 댓글의 정보를 가져오고 그것을 답변 화면으로 전달한다.




  • 20줄 : BoardDetailForm에서 전달받은 댓글의 글 번호를 가져온다.

  • 22~23줄 : 글 번호를 이용하여 부모 댓글의 정보를 가져온다.

  • 26줄 : 가져온 댓글 정보를 request에 세팅한다.

  • 29줄 : 다음 화면으로 답변 화면(CommentReplyFrom)을 세팅한다.





■ CommentReplyFrom.jsp




댓글 답변 작성 부분이다. 간단하게 답변을 작성할 <textarea>와 2개의 버튼을 만들어준다.




답변 화면의 스크립트를 보자. 여기에서도 Ajax를 사용하였다. getXMLHttpRequest( ) 함수는 XMLHttpRequest 객체를 생성하는 역할을 한다.




checkValue( )는 답변 내용의 입력 여부를 체크한다. 내용을 입력했다면 그것을 서버로 전송한다.


  • 50~53줄 : 전달할 값들을 변수에 담는다. 전달할 값은 댓글 글번호, 게시글 글번호, 사용자 ID, 답변 내용이다.

  • 55~58줄 : 내용이 입력되었는지 검사한다. 내용이 입력되지 않았다면 경고 창을 띄운다.

  • 61줄 : 서버로 전달할 파라미터 값이다.

  • 65줄 : XMLHttpRequest 상태 변화시 호출될 함수를 지정한다.

  • 66줄 : 전송 방식, 전송할 경로, 동기/비동기를 지정한다.

  • 68줄 : 서버로 파라미터를 전송한다.



서버로 전송 이후 호출되는 함수이다. 정상적으로 데이터를 전송하고, 결과를 받았을 경우 77~81줄이 실행된다.

  • 79~81줄 : 서버에서 결과값 1을 받을 경우 부모창 - 게시글 상세보기 화면을 새로고침하고 현재 창을 닫는다.





■ CommentReplyAction.java




파라미터값을 가져와 변수에 담는다.




CommentBean에 변수를 세팅하고 그것을 DAO로 전달하여 저장한다. 그리고 화면으로 결과값을 전송한다.


  • 28~32줄 : CommentBean에 값을 세팅한다. 글 번호는 시퀀스를 가져와서 사용하고, 부모 글 번호(comment_parent)는 부모 댓글의 글 번호를 세팅한다.

  • 34줄 : 댓글을 저장한다.

  • 40~41줄 : 정상적으로 저장되면 1을 아니면 0을 화면으로 전송한다.





■ CommentDAO.java




DAO에는 댓글 1개의 정보를 가져오는 메서드를 추가해준다. 





■ CommentCommand.properties


댓글 답변에 대한 명령어를 추가한다.





3. 실행 결과





로그인 후 댓글 옆에 보이는 [답변]을 클릭한다.





답변 창이 나타나면 답변 내용을 작성하고 등록을 누른다.





그러면 답변이 등록된 것을 확인할 수 있다.




4. 소스코드 다운로드 (war 파일)



JSP_DEV.war





RSS구독 링크추가 트위터 이메일 구독