본문 바로가기

프로그래밍/JSP 프로젝트

JSP 프로젝트_ 게시판 개인 프로젝트

반응형

개발 기간

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



반응형