앞서 만든 멀티 게시판은 게시판 그룹에 대한 관리 기능이 없기 때문에

1. 없는 그룹(게시판)에 대한 오류 처리가 되지 않는다. 즉, 그룹번호(bgno)를 무작위로 넣고 글쓰기를 해도 문제 없이 작동한다.

- 관리자에 의해 생성된 게시판만 사용하도록 해야 한다.

2. 각 게시판은 공지사항, 커뮤니케이션, Q&A 등 다양한 이름으로 제공되어야 하지만 하나의 이름(board)로 고정되어 있다.

3. 배경 이미지 변경, 댓글 기능 가능 여부 등 게시판별 다양한 옵션이 제공되어야 한다.

제대로 멀티 게시판을 사용하기 위해서는 이상의 기능들이 있어야 한다.

권한 관리 기능을 구현하지 않았기 때문에

이러한 기능을 관리자 페이지에서 지정할 순 없지만

별도의 페이지에서 설정하도록 구현하였다.


요약하면

하나의 게시판에 대한 정보를 가지고 있어야 한다는 것이다.

따라서, 게시판 그룹 정보를 저장하는 테이블을 생성하고

게시판 그룹 테이블에 정보(bgno)가 없으면 사용하지 못하도록 한다 ①.

게시판 그룹 테이블에 해당 게시판의 이름(BGNAME)을 저장하게 한다②.

이외에 게시판 사용여부(BGUSED, 삭제(BGDELETEFLAG)는

리스트에서 보이지 않지만 사용여부는 중지/사용을 반복할 수 있음),

댓글 기능 사용여부(BGREPLY),

공지사항을 위해 글쓰기 금지(BGREADONLY) 등의 옵션을 저장할 필드를 추가한다 ③.

따라서 다음과 같은 테이블 구조를 가지게 된다.

CREATE TABLE TBL_BOARDGROUP (
  BGNO INT(11) NOT NULL AUTO_INCREMENT,        -- 게시판 그룹번호
  BGNAME VARCHAR(50),                                    -- 게시판 그룹명
  BGPARENT INT(11),                                          -- 게시판 그룹 부모
  BGDELETEFLAG CHAR(1),                                 -- 삭제 여부
  BGUSED CHAR(1),                                           -- 사용 여부
  BGREPLY CHAR(1),                                          -- 댓글 사용여부
  BGREADONLY CHAR(1),                                    -- 글쓰기 가능 여부
  BGDATE DATETIME,                                          -- 생성일자
  PRIMARY KEY (BGNO)
);

추가적으로 게시판 그룹은 게시판 폴더라고도 부르는데

윈도우 폴더처럼 계층 구조를 가지기 때문이다.

부서별(부서 그룹)로 공지사항, 토론방 등의 게시판을 생성할 수 있고

동아리(그룹) 하위에 기타, 축구 등의 동아리를 하위로 생성하고

기타 동아리 하위에 공지사항, 토론방 등의 게시판을 생성할 수 있다.

따라서 계층 구조를 가지게 된다.

다만, 앞서 계층형 댓글(무한댓글) 에서 다른 것과 개념은 같지만 구현이 다르다.

계층형 댓글은 트리 형태의 웹 구현을 직접 구현했지만

게시판 그룹은 트리 라이브러리(dynatree)를 사용해서 구현할 것이고

부모만 표현하면 라이브러리에서 처리하기 때문에 다른 필드는 사용하지 않았다.


테이블(TBL_BOARDGROUP)을 생성했으면,

다음과 같이 BoardGroupVO를 작성한다.

public class BoardGroupVO {

    private String bgno, bgname, bglevel, bgparent, bgdeleteflag, bgused, bgreply, bgreadonly, bgdate;

    public String getBgno() {
        return bgno;
    }

    public void setBgno(String bgno) {
        this.bgno = bgno;
    }

    public String getBgname() {
    ~~ 생략 ~~

BoardGroupVO.java

모든 데이터 입출력은 게시판 응용이라는 것을 강조하기 위해

전혀 다를 것 같은 게시판 그룹 관리도 유사한 방식(함수명)으로 개발했다.

일단, BoardGroupCtr.java, BoardGroupSvc.java 두 개의 파일이 필요한데

소스 코드를 보면 컨트롤 명은 다르지만 실제 함수 명은 게시판과 동일하게 처리했다.

예로, 컨트롤 명 boardGroupList는 게시판 그룹 리스트를 처리하는 컨트롤이지만

함수는 boardList이다.

즉, 게시판 boardList를 수정해서 사용했다는 것으로

코드가 유사하다는 의미이다.

게시판만 만들 줄 알면 데이터 베이스를 기반으로 하는

대부분의 프로그램은 만들 수 있다는 말을 하기 위해서 이렇게 명명했다.


이외에 board8 컨트롤과 jsp도 복사해서 board9로 바꾸어 사용한다.

SQL은 그대로 사용한다.

게시판의 기능은 멀티 게시판(board8)에서 구현된 것을 그대로 사용하고

앞서 언급한 게시판 그룹의 3가지 핵심 기능을 간단하게 추가할 것이기 때문이다.













'Java > 게시판 9: 멀티 & 관리' 카테고리의 다른 글

2. 게시판 그룹 리스트  (2) 2016.08.14
3. 게시판 그룹 읽기 / 삭제  (0) 2016.08.14
4. 게시판 그룹 쓰기와 수정  (0) 2016.08.14
5. 게시판 적용  (0) 2016.08.14

+ Recent posts