지난 게시글 "게시판 관리기능 : 여러 개의 게시판이 필요할 때 (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);
'웹개발' 카테고리의 다른 글
Oracle 11g에서 sequence 초기값 1 고려사항 (0) | 2017.03.08 |
---|---|
게시판 관리기능 : 여러 개의 게시판이 필요할 때 (3/5) (0) | 2017.03.07 |
홈 페이지를 개발할 때 고려해야 할 사항 목록 (기능적인 측면) (0) | 2017.03.06 |
게시판 관리기능 : 여러 개의 게시판이 필요할 때 (1/5) (0) | 2017.03.04 |
개인정보를 암호화해서 저장하는 방법(JSP) (0) | 2017.03.03 |