개발 기간
23.03.30 ~ 23.04.05 (총 7일)
데이터 베이스
CREATE TABLE user(
id VARCHAR(20) PRIMARY KEY,
pw VARCHAR(20) NOT NULL,
address VARCHAR(70) NOT NULL,
email VARCHAR(30) NOT NULL,
tel VARCHAR(13) NOT NULL
);
CREATE TABLE category(
categoryId INT PRIMARY KEY AUTO_INCREMENT,
categoryTitle VARCHAR(20) NOT NULL UNIQUE
);
CREATE TABLE board(
boardId INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
description TEXT NOT NULL,
writer VARCHAR(25) NOT NULL,
createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
view INT NOT NULL DEFAULT 0,
categoryId INT,
FOREIGN KEY(categoryId) REFERENCES category(categoryId),
FOREIGN KEY(writer) REFERENCES user(id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
ERD 모델
핵심 기능
BOARD → 게시글 전체 조회 기능, 카테고리별 조회 기능, 검색 기능, 게시물 상세 조회 기능
구조
webapp/test (jsp 파일)
index.jsp → 웹페이지 처음 들어갔을 때 뜨는 메인 화면 (+ header.jsp, 메인 이미지, footer.jsp)
home.jsp → HOME을 누르면 home.jsp로 가도록 구현
board.jsp → board 메뉴 누르면 카테고리 제목, 게시물 목록 전체 나오도록 구현 (insert 기능)
boardById.jsp → 게시물 누르면 게시물 상세 내용 나오도록 구현 (update, delete 기능)
insert.jsp → 삽입 기능
join.jsp → 회원가입 기능
login.jsp → 로그인 기능
logout.jsp → 로그아웃 기능
update.jsp → 수정 기능
webapp/layout
footer.jsp → 푸터
header.jsp → 헤더, jstl을 사용하여 헤더 목록이 로그인하면 로그아웃으로 로그아웃하면 로그인으로 바뀌도록 구현
webapp/css
common.css → 코드를 다 짜기도 전에 만들어서 대실패 (코드를 다 짜고 마지막에 공통된 css를 common.css에 만들어야 함.)
controller
BoardListController(/tBoard)
→ GET 방식
"selectAll" : 메인 창 board를 클릭하면 카테고리 타이틀과 메인창 게시물 목록을 보여주는 기능
"delete" : boardId를 이용해서 해당 게시물만 삭제하는 기능
"select" : 카테고리 클릭 시 categoryId에 맞게 카테고리에 맞는 각 게시물을 보여주는 기능
→ POST 방식
"insert" : 글을 작성하고(insert) 작성한 글을 메인 페이지에 보여주는(select) 기능
BoardDetailController(/boardDetail)
→ GET 방식
"detail" : 상세글, 조회수, 상세글 페이지의 카테고리 타이틀 갖고 오기
"select" : 로그아웃 시에도 메인 화면 Board 출력할 수 있도록 하는 기능
UserController(/userController)
→ POST 방식
"insert" : 회원가입 시 user정보 입력받기
결과 화면
성장 경험
처음으로 아파치 톰캣을 사용하여 웹 서버를 구축하고, 데이터베이스와 연결하여 CRUD를 구현한 프로젝트였습니다. 이를 토대로 Servlet과 JSP에 대한 이해도를 높일 수 있었습니다. 또한 WebMVC 패턴으로 구현하여 Controller, Service, Repository를 구분하여 코드의 분리와 재사용성의 중요성을 알게 된 프로젝트였습니다.
깃허브 주소
https://github.com/afeelingeffort/jsp_boardProject_final.git
GitHub - afeelingeffort/jsp_boardProject_final
Contribute to afeelingeffort/jsp_boardProject_final development by creating an account on GitHub.
github.com