본문 바로가기

ETC/JSP

3- JSP 게시판 (답글기능)

 

추가된 페이지와 구조

 

boardReplyInsert.jsp

boardReplyInsertCmd.java

 

사실 boardReplyInsertCmd를 새로 만들지말고 기존의 insertCmd를 쓰려고 했다

충분히 줄일 수 있을 것 같은데 ReplyInsertCmd를 만드는 편이 더 쉽게 기능을

구현가능하다 생각해서 따로 추가했다.

 

게시글에서 답글쓰기를 하면 id값, pid(상위글 번호), porder(순서), depth(깊이) 정보를 담아

boardReplyInsert.jsp 로 이동한다. 

내용을 작성하고 submit 하면 controller 에서 bbs를 받아 ReplyInsertCmd로 아까 담은 값들을

넘겨주는 방식.

 

 

porder(순서) 구하기를 어떻게 정했는가? (아래 수정있음)

답글쓰기에서 글을 작성하고 넘어오면 depth를 원래글depth+1 로 구해준다

> 원본글 (depth=0) 에서 작성하면 +1이되어 depth=1인 답글이 생겨난다

 

porder (순서) 를 구해보자

getBoardProder를 만들고 pid(상위글 번호), porder(순서), depth(깊이) 를 받는다
depth가 1일때와 아닐때 porder(순서) 의 증가값을 다르게 줬다
depth가 1이면 같은 pid(상위글번호) 의 최댓값 + 1
depth가 1이 아니면 기존 porder + 1을 더하고
pid가 같은 값들중 porder+1 보다 크거나 같은값이 있으면 그 값들을 모두 +1해준다
>> 답글의 답글이니까 중간에 들어갈 자리를 만드는 것


그리고 porder+1한 값을 insertBoardContent로 넘겨서 넣어주면 끝

 

답글에 [RE:] 를 달아주는건 BoardList에서 depth값을 참고해 forEach문으로 달아줬다.

 

 

0902 수정사항 --

depth 의 값이 1일때와 이상일때 식을 다르게 했는데 의미가 없었다

depth가 1일때 답글이 순서대로 (답글1, 답글2, 답글3) 달리고 -> depth가 1이상일때는 다시 역방향으로 달린다

최신답글이 더 위로 오도록 (답글2, 답글1) if문을 삭제

 

+글 번호를 출력하는 순서대로 다시 정하려 했는데 필요가 있는 작업인가? 그냥 글 번호로 출력하자

  그래도 혹시모르니 생각해놓은 방법 기록

  (1. 순서대로 매기려면 sql에서 순서에 맞게 select후 바로 update 하는 쿼리를 사용하려 했었다 이렇게 글 번호를

  출력하고 원래 글 번호인 id는 따로 뒤에 출력 )

  (2. 순서에 맞게 select하고 boardRowlist에 넣어서 boardRowList에서 같이 뿌려준다)

 

계속 추가로 수정될 예정. 따로 정리를 안해두고 만들어서 생각나면 더 추가..  

 


추가로 이번에 수정한 코드들

1. boardList의 sql출력쿼리 수정
select *from(select board.*,row_number() over(ORDER By pid asc, porder asc) as rowNum from board order by pid asc, porder asc)tb  where tb.rowNum between ? and ? 

로 수정했다.

이번에 답글달기 추가로 인해 순서가 바뀌면서 페이지당 보여줄 글 갯수 설정을 하면

순서가 뒤죽박죽 나왔었다. 따라서 sql 출력쿼리도 그에맞게 수정했다


2. 제목과 글이 바뀌어서나오는 문제점
insertBoardContent의 순서가 잘못되어 있어서 다시잡아줌

3. 댓글 카운트 수정

댓글을 작성해도 자꾸 카운터가 늘지않아서 보니
boardList페이지에서 페이지당 보여줄 글 갯수를 입력해줘야 업데이트 되는걸 봤다
boardList 페이지에 카운터 증가하는 코드를 넣어줘서 그렇네..

댓글을 입력하면 바로 카운터가 증가되게 BoardCommentInsert로 코드를 옮기고
카운터 업데이트 범위는 원래 boardList에서 페이지값을 받았지만
> 이제 board 글의 maxId 값을 받아서 범위를 설정했다  

 

 

 

 

 

후기

정말 삽질을 많이하고 고생도 많이했었다..

심지어 아직도 고쳐야 할 부분이 남았다는거..(list에서 페이지번호 ) > 수정

정말 메모도 많이했고 주석도 여기저기 많이 달았지만

저장만 해놨지 따로 정리를 안해서 나중에 여유가 생기면 다시 작성함!