본문으로 바로가기

[JSP개발] 게시판 - 방명록 답글 달기

category 코딩/JSP 2016. 12. 28. 10:45







1. 개요







이번에는 방명록의 답글을 구현할 것이다. 방명록의 답글 작성 화면은 팝업창으로 나타나게 구현할 것이다.



 JSP

  • GuestbookForm.jsp : 답글 작성 팝업창을 표시할 코드를 추가해 준다.

  • GuestbookReplyForm.jsp : 답글 작성 창이다. 팝업창으로 나타나며, 등록을 누르면 답글이 등록되고 창이 닫힌다.


 Java

  • GuestbookBean.java : 자바빈에는 답변 글의 Level 값을 담을 변수를 추가한다.

  • GuestbookDAO.java : 방명록 1개의 정보를 가져오는 메서드를 추가한다.

  • GuestbookReplyFormAction.java : 방명록 답글 화면을 표시하는 Action이다. 

  • GuestbookReplyAction.java : 방명록 답글을 처리하는 Action이다.




2. 소스 코드



 GuestbookBean.java


답변 글의 Level 값을 담을 변수와 Gatter/Setter을 추가해준다.







 GuestbookForm.jsp




답글을 클릭하면 답글 작성 창이 나타나게 하는 함수이다.  여기서 부모창과 자식창의 이름을 지정해 둔 이유는 답글 작성 후 다시 부모창(방명록 화면)으로 돌아오게 하기 위해서이다.  (부모창(방명록) → 자식창(답글 창) → 부모창(방명록) 이런 순서로 동작하게 하기 위해서이다.)


답글 창을 띄울 때 어떤 방명록의 답글인지 나타내기 위해 방명록의 글 번호를 전달한다. 그리고 답글 작성 후 원래 페이지로 돌아오게 하기 위해 현재 페이지 번호도 전달한다.




방명록 작성 시 로그인했을 경우 이름을 입력하는 부분에 로그인한 아이디가 입력되도록 처리한다.




방명록 목록을 표시해 주는 부분에서는 답글의 경우 이름 앞에 공백과 이미지가 표시되도록 한다. 그리고 119줄을 보면 [답변] 클릭 시 답글 창을 띄우는 함수가 실행되도록 이벤트를 주었다. 이때 방명록의 글 번호를 인자로 전달한다.





 GuestbookReplyFormAction.java


방명록 답글 화면을 표시하는 Action이다. 




먼저 GuestbookForm.jsp에서 넘겨받은 방명록 글 번호와 페이지 번호를 가져온다. 방명록 글 번호는 부모 글의 정보를 가져오기 위해 사용할 것이다.




넘겨받은 글 번호로 DB에서 부모 방명록의 정보를 가져와서 reuqest에 세팅한다. reuqest에 담긴 정보는 답글 작성 화면인 GuestbookReplyForm.jsp 에서 사용할 것이다.





 GuestbookDAO.java




DAO에는 방명록 1개의 정보를 가져오는 메서드를 추가한다. 이 메서드는 GuestbookReplyFormAction에서 사용된다.




그리고 방명록 목록을 가져오는 getGuestbookList( ) 메서드에 위에 표시된 코드를 추가해 준다. Level 값이 필요한 이유는 답글일 경우 글 앞에 공백과 이미지를 추가해 주기 위해서이다.





 GuestbookReplyForm.jsp


답글 작성 화면이다. 여기에서는 답글 작성 후 등록을 누를 경우 다시 방명록 화면(부모창)으로 돌아가야 하며 작성한 답글이 화면에 바로 출력되어야 한다. 




checkValue( )를 보자. 22번 줄은 <form>태그를 가져오는 부분이다. 그리고 24~38번 줄은 답글 작성 화면에서 입력 정보를 체크하는 부분이다.


41번 줄을 보면 target을 부모 창으로 설정해준다. 이때 답글 작성창(자식창)의 <form>태그에도 target을 적어주어야 한다. 42~43번 줄을 보면 method와 이동할 경로를 지정해 둔 부분이다.


46~49번 줄은 전송 후 창이 자동적으로 닫히게 처리하는 부분이다.




<form>태그에 target으로 부모창의 이름을 적어준다. 답글 저장 시 부모 글의 번호와 그룹번호가 필요하므로 hidden으로 가지고 있다가 답글 등록 시 같이 전송을 해준다.




답글 창에서도 방명록과 마찬가지로 로그인을 했을 경우 이름 부분에 로그인한 아이디가 입력되도록 한다.




등록 버튼을 누를 경우 checkValue( ) 함수가 실행되며, 창 닫기 버튼을 누를 경우 창이 바로 닫히도록 처리한다.





 GuestbookReplyAction.java


GuestbookReplyAction에서는 방명록 답글을 처리하는 작업을 한다.




GuestbookReplyForm.jsp에서 넘겨받은 파라미터 값들을 추출한다.




추출한 파라미터 값을 자바빈에 세팅한다. 이때 글 번호는 시퀀스 값을, parent는 부모 방명록의 글 번호를 세팅한다. 이후 DAO로 전달하여 저장을 한다.




저장 후 방명록 목록으로 돌아가게 한다. 이때 원래 페이지로 돌아가게 하기 위해 페이지 번호를 같이 전달한다.





 GuestbookCommand.properties


프로퍼티에는 방명록 답글 관련 명령어를 추가한다.





3. 실행 결과





방명록에서 [답변]을 클릭 시 답글 작성 창이 나타난다.





답글을 작성하면 이름 앞에 공백과 이미지가 추가되어 목록에 나타난다.




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



JSP_DEV.war






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