일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- String char[] 형변환
- Daemon()
- sleep()메소드
- char[] String 형변환
- StringWriter
- first-child
- include 지시자
- interrupted()
- MemoryStream
- 리눅스셋팅
- 상관 서브 쿼리
- interrupt()
- 상관서브쿼리
- ObjectInputStream
- 아이디중복
- isinterrupted()
- 동기화
- 메모리스트림
- first-of-child
- StringReader
- ID중복
- 스레드그룸
- ThreadGroup()
- Linux세팅
- include액션태그
- include지시자
- 리눅스세팅
- Linux셋팅
- InputDialog
- 표현 언어
- Today
- Total
다연이네
[days10] 이론 - 답글을 달 수 있는 게시판(==계층형 게시판==답변형 게시판) 본문
답글을 달 수 있는 게시판 == 계층형 게시판 == 답변형 게시판
계층형 게시판은 하나의 글에 트리 형태로 다른 사람이 답변을 달 수 있는 구조이다.
'답변형', '계층형' 혹은 '쓰레드형'이라고도 부른다.
[답변형 게시판의 로직 이해 (필수)]
1) 게시판 테이블 컬럼 3개 추가 :
- 그룹을 묶어주는 그룹컬럼(REF),
- 그룹 내에서 순번을 나타내는 컬럼 (STEP)
- 들여쓰기 작업(깊이를 나타내는 컬럼 추가) (DEPTH)
2)게시판 테이블 컬럼 2개 추가 :
- THREAD == [그룹컬럼(REF) + 그룹내 순번컬럼(STEP)]
- 들여쓰기 작업(깊이를 나타내는 컬럼 추가) (DEPTH)
ㄱ. 오라클 / replyboard 테이블
글번호(seq:PK), 제목(subject)
1 첫 번째 게시글
2 두 번째 게시글
3 세 번째 게시글
4 2 게시글의 댓글
5 4 게시글의 댓글
6 2 게시글의 댓글
7 6 게시글의 댓글
8 3 게시글의 댓글
ㄴ. 게시판 목록을 보여주는 목록 페이지 ( list .jsp )
- order by seq desc - 최신글 먼저 (이렇게 하지 않을 것)
--------------------------------------------
글번호 | 제목 | (작성자 | 작성일 일단 제외)
--------------------------------------------
3 세 번째 게시글
ㄴ8 3 - 댓글
2 두 번째 게시글
ㄴ6 2 - 댓글
ㄴ7 6 - 댓글
ㄴ4 2 게시글의 댓글
ㄴ5 4 - 댓글
1 첫 번째 게시글
--------------------------------------------
[1]
--------------------------------------------
ㄷ. 누가 2번 게시글 제목 클릭하면 - 상세페이지(content .jsp)로 이동할 것
[부모글 REF, STEP]
제목:
작성자:
작성일:
글내용:
[수정][삭제][Home][댓글]
댓글은 항상 게시글을 보고 난 후 댓글을 달아야
댓글 db에는 그냥 글번호로 들어가있지만 화면에 출력할때는 들여쓰기 되어 댓글로 들어가야 함
로직
1) 게시판 테이블 컬럼 3개 추가 : REF, STEP, DEPTH
ㄹ. 게시글 추가(insert)되어질때 그 글번호 값으로 REF를 준다, STEP
ㄱ. 오라클 / replyboard 테이블
글번호(seq:PK), 제목(subject) REF(그룹) STEP(그룹의 순번) DEPTH(깊이)
(새글) 1 첫 번째 게시글 1(seq) 1 0
(새글) 2 두 번째 게시글 2(seq) 1 0
(새글) 3 세 번째 게시글 3(seq) 1 0
(댓글) 4 2- 댓글 2(seq)(부모따라) 1+1(부모STEP+1)+1+1 1(부모DEPTH+1)
(댓댓글) 5 4- 댓댓글 2(seq)(부모따라) 3(부모STEP+1)+1+1 2(부모DEPTH+1)
(댓글) 6 2- 댓글 2 2(부모STEP+1)+1 1(부모DEPTH+1)
(댓댓글) 7 6- 댓글 2 3(부모STEP+1) 2(부모DEPTH+1)
(댓글) 8 3- 댓댓글 3 2(부모STEP+1) 1(부모DEPTH+1)
**새 글이 작성될때는 글번호(seq)값으로 REF값 설정, STEP은 무조건 1
**댓글이 작성될때는 부모의 REF를 자신의 REF로 설정, STEP 부모+1
**새글이 작성될때는 DEPTH=0, 댓글은 부모의 DEPTH+1
**댓글 작성될때는 같은 그룹 내에서 부모의 STEP 보다 큰 게시글의 STEP+1 하는 UPDATE코딩 하고 난 후 그 자리에 들어감 (6번글)
ㄴ.목록 페이지 ( list .jsp )
order by ref desc, step asc
--------------------------------------------
글번호 | 제목 | (작성자 | 작성일 일단 제외)
--------------------------------------------
(새글) 3 세 번째 게시글 3(seq) 1
[depth 1]ㄴ(댓글) 8 3- 댓글 3 3
(새글) 2 두 번째 게시글 2(seq) 1
[depth 1]ㄴ(댓글) 6 2- 댓글 2 3
[depth 2] ㄴ(댓글) 7 6- 댓댓글 2 3
[depth 1]ㄴ(댓글) 4 2- 댓글 2 4
[depth 2] ㄴ(댓글) 5 4- 댓댓글 2 5
(새글) 1 첫 번째 게시글 1 1
--------------------------------------------
[1]
--------------------------------------------
2) 게시판 테이블 컬럼 2개 추가 : THREAD, DEPTH
가정) 하나의 새 글에 댓글이 1000개가 안 넘는다고 가정
ORACLE
Thread Depth
1 첫번째 글 1000 0 (새글)
2 두번째 글 2000 0 (새글)
3 세번째 글 3000 0 (새글)
4 2-댓글 1999-1-1 1 (댓글) Thread=부모t-1 Depth=부모d+1
5 2-댓글 1999-1 1 (댓글) Thread=부모t-1 Depth=부모d+1
6 2-댓글 1999 1 (댓글) Thread=부모t-1 Depth=부모d+1
2번 새글 그룹 (같은 그룹 2000~1001)
댓글 : Thread :부모 스레드-1
Depth : 부모 Depth+1
같은 그룹에서 부모 Thread보다 작은 Thread의 Thread-1
order by Thread desc
3 세번째 글 3000 0 (새글)
2 두번째 글 2000 0 (새글)
1 첫번째 글 1000 0 (새글)
'JSP' 카테고리의 다른 글
[days11] 파일 업로드 (0) | 2021.01.11 |
---|---|
[days10] 코드 - 답글을 달 수 있는 게시판(==계층형 게시판==답변형 게시판) (0) | 2021.01.08 |
[days10] 프로젝트 초기 환경설정과 MVC 다시 정리 (0) | 2021.01.07 |
[days09] MVC패턴으로 방명록 만들기 (0) | 2021.01.06 |
[days09] ServletContextListener (0) | 2021.01.06 |