본문 바로가기
[ View ]/JSP

[ JSP ] 게시판 만들기 5 - 답변 기능 구현

by 환이s 2023. 4. 3.

이전 포스팅에 이어서 답변 기능을 추가해 보겠습니다.

 

 

게시판 기능/ 파일 구조

 

< 기능 >

1 ) CRUD(글쓰기, 목록/상세, 수정, 삭제)

2 ) 검색 기능

3 ) 페이지 나누기

4) 파일 업로드, 다운로드

5 ) 댓글 달기

6 ) 답변 달기

 

< 파일 구조 >

Contoller

BoardController.java

Model

Pager.java Constants.java (상수값들)
BoardDTO.java
BoardCommentDTO.java(댓글 관련)
BoardDAO.java
board.xml

View

index.jsp : 시작 페이지
list.jsp : 게시판 목록
write.jsp : 글쓰기
comment_list.jsp : 댓글 목록
edit.jsp : 수정, 삭제 기능
reply.jsp : 답변 달기
search.jsp : 검색 페이지

view.jsp

 

이전 포스팅에서 각 기능의 폼과 Controller 요청까지 보냈습니다.

 

 

그럼 요청 보낸 reply.doController에서 받아서 처리합니다.


Controller

 

답변 기능을 추가하려면 먼저 기존에 작성된 게시물의 내용을 웹 화면에 표출해야 합니다.

 

그렇다면 이전 포스팅에서 만들었던 dao.view()에 해당 게시물 번호를 가져올 수 있게 num 변수를 담아주고 DTO 타입으로 호출합니다.

 

 

해당 게시물의 데이터를 답변 페이지에서 표출할 수 있게 페이지 처리도 해줍니다.


DAO

 

게시물 데이터를 mapper에 요청하는 DAO의 코드는 다음과 같습니다. 

 


board.xml(mapper)

 

 

그럼 데이터를 제대로 가져오는지 확인하기 위해 답변 페이지를 생성합니다.

 


reply.jsp(답변 페이지)

 

답변 페이지는 <form>, <table> 태그를 사용해서 폼을 만들고, 답변 작성 기능을 추가하기 위해 Controller에 요청을  <form> 태그의 action을 활용해서 보냈습니다.

 

 

그럼 답변 페이지 폼을 먼저 확인해 봅니다.

 

<상세 화면>

 

 

< 답변 페이지 >

 

 

해당 게시물 데이터가 제대로 표출되는 걸 확인했습니다.

답변 추가 기능을 구현하기 전에 확인 버튼에 함수 처리를 했던 updateReply()를 자바 스크립트에서 이름하고 비밀번호를 입력해서 등록할 수 있게 focus() 처리를 해줍니다.

 

 

다음으로 페이지 요청 처리했던 insertReply.doController에서 요청을 받아서 기능 추가를 합니다.


Controller

 

답변을 작성할 때 해당 게시물 데이터가 보여야 하기 때문에 동일하게 dao.view(num) 처리를 해서 상세 데이터 정보를 호출하고 답변 그룹 번호, 출력 순번, 답변 단계 처리를 해서 웹 화면에 표출합니다.

 

그럼 DTO에서 미리 생성한 ref(답변 그룹 번호), re_step(출력 순번), re_level(답변 단계)를 Controller에서 int 타입으로 생성해서 답글 순서 조정을 위해 DAO에 매개 변수로 요청을 보내야 합니다.

 

추가로 답글을 작성하기 위해 해당 변수들을 request 타입으로 생성해서 DTO 타입에 담아준 후, DAO에 요청을 보냅니다.

 

(순서는 개발자님들 마다 다르지만 글쓴이는 패턴을 VIEW = Controller => DAO => mapper 순으로 합니다.)

 

 

답변을 작성하면 목록에서 표출될 수 있게 목록 페이지로 이동할 수 있게 처리합니다.

 


DAO

 

Controller에서 요청 처리했던 updatestep(ref, re_step), reply(dto) 코드 작업을 합니다.

 

먼저 답변 순서 조정을 위해 매개 변수를 ref, re_step 두 개를 보냈습니다. 

그럼 해당 데이터 레코드에 맵핑하기 위해 DTO에 담아줘서 mapper에 같이 보내줍니다.

 

 

 

다음으로 답글을 작성하면 데이터를 저장하기 위해 insert문으로 mapper에 요청을 보내줍니다.

답글 쓰기 기능은 Controller에서 미리 DTO 타입으로 담아줘서 요청 처리를 했기 때문에 매개변수 dto를 같이 mapper에 보내주면 됩니다.

 

 

다음으로 mapper 작업을 합니다.


board.xml(mapper)

 

해당 데이터들을 맵핑하기 위해 웹에서 보내주는 데이터는 함수 처리해서 받아줍니다.

 

 

그럼 이제 결과를 확인합니다.


결과 출력

 

< 답변 쓰기 >

 

 

 

 

< 목록 페이지 >


마치며

 

오늘은 답변 기능 구현을 해보았습니다.

다음 포스팅은 페이지 나누기 기능을 구현해 보겠습니다.

728x90