13. 게시판
13.1 게시판의 주요 기능
13.1.1 기본 기능
로그인 후 게시물 등록, 수정이 가능하도록 처리
글쓰기(스마트에디터 적용, 태그 문자 처리, 공백 처리, 줄바꿈 처리)
게시물 상세정보, 조회수 증가 처리
게시물 수정
게시물 삭제(delete 방식)
게시물 삭제(update 방식)
검색기능
페이지 나누기
13.1.2 파일업로드(ajax)
게시판에 파일 첨부
첨부파일 목록, 다운로드, 삭제
수정화면에서 새로운 파일 올리기
13.1.3 댓글 기능
일반적인 방식으로 댓글 쓰기(RestController, REST 방식)
$.ajax() 함수 호출하여 insert
컨트롤러에서 뷰로 포워딩한 responseText를 html 태그에 출력
컨트롤러에서 ArrayList를 json 형식으로 리턴받아 댓글 목록 출력(list_json.do)
목록에 댓글 갯수 표시
댓글 페이지 나누기(댓글 목록은 일반적인 방식으로 처리)
비밀댓글 쓰기, 표시
REST 방식으로 댓글 쓰기(insert_rest.do)
크롬 확장 프로그램을 이용한 입력 처리
{ "replytext" : "댓글", "replyer":"kim", "bno":"1", "secret_reply":"n" }
REST 방식으로 댓글 목록 출력
REST 방식으로 댓글 상세 화면, 수정, 삭제 기능 구현
13.2 페이지 나누기
- 페이지당 게시물 수 : 10개
- 전체 게시물 수 : 991개
- 몇 페이지? : 100
991 / 10 → 99.1 올림 → 100
- 페이지의 시작번호, 끝번호 계산
where rn between 1 and 10
1페이지 → 1 ~ 10
2페이지 → 11 ~ 20
...
11페이지 → 101 ~ 110
57페이지 → 561 ~ 561
99페이지 → 981 ~ 990
100페이지 → 991 ~ 1000
시작번호 = (현재 페이지 - 1) * 페이지당 게시물 수 + 1
1페이지 → (1-1) * 10 + 1 → 1
2페이지 → (2-1) * 10 + 1 → 11
7페이지 → (7-1) * 10 + 1 → 61
끝번호 = 시작번호 + 페이지당 게시물 수 - 1
1페이지 → 1 + 10 - 1 → 10
2페이지 → 11 + 10 - 1 → 20
* 전체 페이지 블록수
전체페이지갯수 / 10
91 / 10 → 9.1 → 10개
1 2 3 4 5 6 7 8 9 10 [다음]
[이전] 11 12 13 14 15 16 17 18 19 20 [다음]
[이전] 41 42 43 44 45 46 47 48 49 50 [다음]
[이전] 51 52 53 54 55 56 57 58 59 60 [다음]
[이전] 61 62
현재 페이지가 속한 블록
(현재 페이지 - 1) / 페이지블록단위 + 1
1페이지 → 몇번째 블록? 1
(1 - 1) / 10 + 1 → 1
9페이지 → 몇번째 블록? 1
(9 - 1) / 10 + 1 → 1
11페이지 → 몇번째 블록? 2
(11 - 1) / 10 + 1 → 1
57페이지 → 몇번째 블록? 6
(57 - 1) / 10 + 1 → 1
* 페이지 블록의 시작번호
(현재블록 - 1) * 블록단위 + 1
1블록 → 1 + 10 - 1 → 10
2블록 → 11 + 10 - 1 → 20
6블록 → 51 + 10 - 1 → 60
13.3 실습 소스
13.3.1 게시판 테이블
13.3.2 menu.jsp
13.3.3 BoardDTO.java
13.3.4 ReplyDTO.java
13.3.7 boardMapper.xml
13.3.11 BoardService.java
13.3.19 views/board/list.jsp