본문 바로가기
Java

[JSP] 게시판에 답변글(reply), 댓글(comment) 구현을 위한 알고리즘 설명 및 프로그래밍

by bkuk 2022. 11. 18.

 

  • 글 그룹: grp
  • 글 그룹 내부 순서 : grps
  • 글 그룹 깊이 : grpl

1. board_view1.jsp 파일에서 답글쓰기 btn 클릭

 

2. 버튼 클릭시 board_reply1.jsp 파일을 요청하며 톰캣은 이 jsp 파일을 java 파일로 생성하여 웹 브라우저에 전달합니다. 위에 내용과 같이 seq(게시글 번호)도 같이 보냅니다. 글쓴이, 제목, 비밀번호를 다 작성합니다.

3. javascript 코드는 아래와 같이 작성되었습니다. 버튼을 눌렀을 때 각 항목의 값이 제대로 들어가 있나 확인합니다. 이는 DB에서 각 컬럼에 특성과 관련이 있습니다. 데이터를 insert할 때 필수값 인지(not null 또는 primary key 또는 unique).. 에 따라서 얼마든지 변경될 수 있습니다.

 

버튼을 누르면 아래와 경로와 같이 form 태그를 통해서 action이 실행됩니다. 이때 seq는 hidden으로 넘겨집니다. 즉, post 방식으로 헤더에 포함되어서 전달됩니다. 왜 url에 포함하지 않느냐고 여쭤봤더니 대부분에 경우에는 url에 포함하지 않는 post 방식으로 전달한다고 합니다.

 

4.reply1_ok.jsp 에서는 전달된 값들을 받습니다.


5. 우선 전달받은 seq(댓글을 쓰려고 하는 부모글의 번호)를 통해서 grp,grps,grpl을 확인합니다.

String sql = "select grp, grps, grpl from rep_board1 where seq=?";

 

6. 댓글을 작성할 때 사용하는 알고리즘은 아래와 같습니다.

  1. grp(글 그룹 번호)는 부모글의 grp와 같다.
  2. grps(글 그룹 내부 순서)는 부모글과 같은 grp 번호라면 해당한다.
    • 부모글의 grps 보다 큰 grps는 무조건 1씩 증가한다.
    • 댓글을 작성하려는 본인은 부모글의 grps에 +1을 한다.
  3. grpl( 글 그룹 깊이) 부모글 grpl에 +1을 한다.

 

따라서 update 쿼리문은 아래와 같이 작성합니다.

sql = "update rep_board1 set grps=grps+1 where grp=? and grps > ?";

 

7. insert 진행

sql = "insert into rep_board1 values ( 0, ?, ?, ?, ?, ?, ?, ?, ?, 0, ?, now())";

댓글