지난 게시글 "게시판 관리기능 : 여러 개의 게시판이 필요할 때 (1/)"에 이어서 실제로 프로젝트를 만들어서 구현을 해보는 글을 기술하고자 한다.

여기서는 다중 게시판 프로젝트 : bdmanager라는 이름으로 이를 기술한다.

1. 이클립스에서 새로운 스프링 MVC 프로젝트 bdmanager를 생성한다.

2. pom.xml을 변경 : Properties 중 java-version과 Spring version을 변경

  - Java-version 변경 : 1.6 -> 1.8    // java version은 새로운 버전을 사용

  - org.springframework-version 변경 : 3.1.1.RELEASE -> 4.1.7.RELEASE    // spring도 새로운 버전 사용

3. 이클립스에서 프로젝트 설정 변경

  - 프로젝트에서 우클릭 후 Properties 선택

  - Project Facets 선택

  - java : 1.6 -> 1.8로 변경        // 자바 버전을 새로운 것으로 맞추어 준다.

  - Runtimes에서 Apache Tomcat v8.5 선택하고 "Apply" 버튼 클릭    // Tomcat v8.5 사용

  - Java Build Path Libraries 확인    // 라이브러리를 맞추어 준다.

    + JRE System Library [jdk1.8.0_121] : 자바 버전에 따라 다름 (jdk8)

    + Apache Tomcat v8.5 [Apache Tomcat V8.5]

  - Java Compiler 1.8 확인 후 "OK" 버튼을 누른다.

4. Encoding UTF-8 설정

  - web.xml에 Encoding Filter 적용 : src/main/webapp/WEB-INF/web.xml

    <filter>

<filter-name>encodingFilter</filter-name>

<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

<init-param>

     <param-name>forceEncoding</param-name>

     <param-value>true</param-value>

</init-param>

    </filter>

    <filter-mapping>

<filter-name>encodingFilter</filter-name>

<url-pattern>/*</url-pattern>

    </filter-mapping>

  - views/home.jsp에 UTF-8 pageEncoding 추가

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

  -> 이렇게 하면 기본적인 프로젝트 설정 기본단계는 완료

5. 데이터베이스 테이블 생성

  - board table 생성    // 다중 게시판 운영을 위해 게시판에 대한 설정 정보를 저장하는 테이블

    /* board type

     *   기본 : 제목, 작성자, 비밀번호, 내용, 첨부 1

     *   갤러리 : 이미지 첨부만 가능, 첨부를 thumbnail로 처리

     *   자료실 : 첨부 5개까지 가능

     *   Q&A : 비밀글 표시 및 비밀번호 검사 후 내용 표시

     *   공지사항 : 글쓰기 버튼 비활성화, 관리자만 쓰기 가능

     *   방명록 : 쓰기, 삭제, 목록보기 기능

     * url    : 링크를 누르면 이동할 페이지의 주소

     * secret : 비밀글 표시 사용 여부

     * read_allow  : 읽기 권한 (all, login, customer, business, admin)

     * write_allow : 쓰기 권한 (all, login, customer, business, admin)

     * reply  : 댓글 권한 (all, login, customer, business, admin)

     * modify : 수정 권한 (writer, admin)

     * remove : 삭제 권한 (writer, admin)

     * download : 첨부물 다운로드 권한 (all, login, customer, business, admin)

     * upload : 첨부물 업로드 권한 (all, login, customer, business, admin)

     * nAttach : 첨부 파일 수

     * aSize : 첨부파일 하나의 크기 제약

     */


    create sequence board_sequence

increment by 1

start with 1

nomaxvalue

nocycle

cache 10;


    create table board (

board_id number(11) not null primary key,

board_name varchar2(40) not null,

board_type varchar2(20) not null,

url varchar2(100),

secret char(1) default 'F',

read_allow varchar2(10),

write_allow varchar2(10),

reply_allow varchar2(10),

modify_allow varchar2(10),

remove varchar2(10),

download varchar2(10),

upload varchar2(10),

nAttach number(1),

aSize varchar2(5),

display_format number(1) default 1,

creating_date timestamp default current_timestamp,

board_desc varchar2(100)

    );

  - article table : 게시글을 저장하는 테이블

    create sequence article_sequence

increment by 1

start with 1

nomaxvalue

nocycle

cache 10;


    /*

     * article : 게시글을 저장하는 테이블

     * - article_id : 게시글 ID

     * - board_id : 게시판을 구별하는 ID

     * - writer_name : 게시글 작성자 이름

     * - email : 게시글 작성자의 ID (ID를 email로 사용하는 경우)

     * - title : 게시글 제목

     * - author : 원 저자 (시와 같은 창작물을 게시할 때, 원 저자를 기술)

     * - password : 게시글을 관리(수정, 삭제 등)할 때 필요 (로그인 하지 않은 경우 작성자를 구분하는 방법)

     * - read_count : 게시글을 읽은 횟수

     * - comment_count : 댓글의 수

     * - like_count : 좋아요를 누른 횟수

     * - ref : 게시글과 댓글에 대한 순서를 보장하는데 사용 (보통 게시글 ID)

     * - setp : 댓글에 대한 순서를 나타냄

     * - depth : 댓글에 대한 depth 정보를 저장

     * - createdAt : 게시글 생성 시간

     * - modifiedAt : 게시글을 수정한 시간

     * - content : 게시글 내용

     * - ip : 게시글을 접근하는 사용자의 IP address

     * - secret : 비밀글 여부를 나타냄 (기본 : 'F' 비밀글이 아님)

     */

    create table article (

article_id number(11) not null primary key,

board_id number(11) default 0,

writer_name varchar2(30) not null,

email varchar2(30) not null,

title varchar2(100) not null,

author varchar2(30),

password varchar2(20) not null,

read_count number(8) default 0 not null,

comment_count number(4) default 0 not null,

like_count number(8) default 0 not null,

ref number(10) default 0 not null,

step number(3) default 0 not null,

depth number(3) default 0 not null,

createdAt timestamp(6) default current_timestamp,

modifiedAt timestamp(6) default current_timestamp,

content varchar2(4000) not null,

ip varchar2(20) not null,

secret char(1) default 'F'

    );


    /* 게시글은 특정 게시판에 속하므로 게시판에 의존하게 된다.

     * 따라서 다음과 같이 foreign key를 선언해 준다.

    */

    alter table article add constraint fk_board

    foreign key (board_id) references board (board_id);

Posted by 세상을 살아가는 사람
,