JavaSpring-1) Team Project-여행사 차리기(TheTravel)
팀 프로젝트로 진행된 여행사 사이트에 관하여 서술합니다. 게시판들과 맴버 관리로 이루어집니다. 코드는 맨 아래 첨부된 GIT HUB링크를 참고하시기 바랍니다.
1. 프로젝트 개요
● 사이트 설명
사이트명 : | 더조은 여행 (The Travel Spring) |
주요 기능 : |
1. 회원 가입 및 로그인을 처리한다. 2. 사이트 관리자를 지정한다. 3. 국내/해외 지역별 여행 상품을 소개한다. 4. 여행 상품을 예약하고 여행 후기를 작성한다. 5. 여행 상품/예약 관련 공지사항 및 FAQ를 제공한다. 6. 고객의 질의/응답 요청을 처리한다. |
담당 업무 : |
● 김남우 : QNA, FAQ ● 김동현 : 상품관리 ● 이재원 : 레이아웃/CSS, 회원관리, 여행후기 ● 전희선 : 상품예약, 공지사항 |
● 적용 기술
Apache Maven |
● 프로젝트 관리를 도와주는 Build Tool 프로젝트 관리도구로 프로젝트의 의존성, 라이브러리, 라이프사이클 등을 POM이라는 개념을 바탕으로 관리하기 편하게 도와주는 관리도구이다. |
MVC Pattern (Model-View-Controller) |
프로젝트를 구현할때 구성요소를 3가지 분할 역할별로(Model, View, Controller) 구현하는 패턴 - Model : 데이터들과 비즈니스 로직을 관리하는 파트 - View : 레이아웃과 화면을 관리하는 파트 - Controller : 이벤트들을 처리하고 모델이나 화면에 전달하는 역할 |
Apache Tiles |
● 페이지 레이아웃 구성 반복적으로 사용되는 요소들을 이용하여 레이아웃템플릿을 정의 이를 통하여 페이지를 일관되고 확장성이 좋게 구성할수 있다. |
Mybatis3 |
● 자동 맵핑기능을 지원하는 프레임 워크 ORM(Object relational Mapping) JDBC를 통하여 데이터 베이스에 엑세스 하는 작업을 캡슐화하고 SQL, 저장 프로시저, 고급 매핑을 지원하며 중복작업들을 제거하여 관계형 데이터 베이스를 보다 쉽게 구현할수 있도록 도와주는 프레임 워크이다. |
● 개발환경
운영 체제 | ● Windows 10 |
개발 Tool | ● STS (Spring Tool Suite) |
빌드 Tool | ● Apache Maven |
WAS | ● Apache Tomcat v8.0 |
프레임 워크 | ● MVC : Spring Framework 3.1.1 (Tiles) ● ORM : MyBatis 3.2.8 |
개발 언어 | ● Java, Servlet, JSP, HTML/CSS, JavaScript, jQuery, Ajax, EL/JSTL |
Database | ● MySQL 5.5 |
2. 사용된 프레임 워크의 구조
● Spring MVC 구조
● Apach Tiles 구조
● MyBatis3 구조와 흐름도
3. 프로젝트 구성
● 사이트 맵
● Tiles 레이아웃 구조
● 프로젝트 폴더의 구조
● DB 자료구조
● DB 테이블 구성
Member Table 구성 보기

Product Table 구성 보기

Product_order Table 구성 보기

Review Table 구성 보기

Review_image Table 구성 보기

Notice Table 구성 보기

QnA Table 구성 보기

FAQ Table 구성 보기

4. 화면별 설명
● 회원
회원 화면은 회원와 관련된 기능들을 모아놓은 페이지이다.
크게 3가지 종류의 페이지로 구현되어있고 세부적인 기능은 아래와 같다.
- 회원 가입 페이지
- 일반 회원 마이 페이지
- 관리자 계정 관리 페이지
- 회원 가입 페이지
- 회원가입 유효성 체크
- 중복 회원 판별
- Post Code API (Daum API 사용)
- 일반 회원 마이 페이지
- 회원 정보 수정 기능
- 회원 비밀번호 수정 기능
- 회원 탈퇴 기능
- 관리자 계정 관리 페이지
- 일반 유저 관리 기능
- 일반 유저 정보 기능
- 유저 등급 설정 기능
회원화면 구조 보기








● 상품
상품 화면은 상품을 회원에게 보여주고 소개하는 페이지이다.
계정별 기능이 조금 제한되어 있다. 관리자 계정일시에만 상품 등록이 들어나게 되어있다.
- 주요 기능
- 관리자 계정 식별 기능
- 새 상품 등록 기능
- 전체 상품 조회 기능
- 카테고리별 조회 기능
상품화면 구조 보기



● 예약
예약 화면은 상품 페이지에 있는 상품들중 원하는 제품을 선택하여 예약등록 하는 페이지 이다.
로그인여부를 확인하여 로그인 되어있을때만 기동하며 예약에 관련된 기능들을 전반적으로 관리할수 있다.
- 로그인 확인 기능
- 예약 조회 기능
- 예약 취소 기능
- 예약 상품 검색 기능
- 예약 상품 관련 페이지 접근 기능
예약화면 구조 보기


● 리뷰
리뷰 화면은 작성된 리뷰들을 보여주고 예약된상품에 리뷰를 작성하는 페이지이다. 기본적인 레이아웃은 포토 리뷰이며 별점, 사진, 내용등으로 구성되어있다.
- 리뷰 작성 기능
- 리뷰 수정, 삭제 기능
- 리뷰 작성 여부 확인 기능
- 상품별 리뷰 모아보기 기능
리뷰화면 구조 보기



● 공지
공지 화면은 사이트의 중요사항들을 담은 내용을 기제하는 페이지이다.
기본적인 게시판의 형태를 띄우고 있으며 관리자만이 작성 가능하다.
- 관리자 계정 식별 기능
- 공지사항 검색 기능
- 분류별 공지사항 검색 기능
공지화면 구조 보기



● FAQ
FAQ 화면은 사이트에서 자주 올라오는 QnA를 모아둔 게시판이다.
공지 화면돠 마찬가지의 형태를 띄우고 있으며 관리자만이 작성 가능하다.
- 관리자 계정 식별 기능
- FAQ 검색 기능
- 분류별 공지사항 검색 기능
- 테마별 공지사항 표시 기능
FAQ화면 구조 보기





● Q&A
QnA 화면은 회원들의 문의사항을 접수하는 화면이다. 게시판에는 답글 기능이 있고 이를 통하여 관리자만이 답변을 달 수 있다.
- 관리자 계정 식별 기능
- QnA 검색 기능
- 답글 쓰기 기능
QnA화면 구조 보기







5. 프로젝투 후일담
이번 프로젝트는 한달전 Spring을 배우기 전에 Java와 Servlet을 이용하여 만든 사이트를
Java Spring으로 이식하며 업데이트와 보완을 진행한 프로젝트 였다.
Java 프로젝트를 진행했을적엔 다들 처음으로 팀 프로젝트를 진행하다보니
여러사람들이 규칙이나 룰등을 정하였음에도 이를 무시하고 자기 맘대로 진행하여
최종 Merge가 정말 힘들었던 프로젝트였다
(실제 프로젝트 진행후 2명이나 학원에서 퇴소 하였다 ^^;)
하지만 이번 프로젝트에선 전작의 실책을 파악하여 사전에 프레임워크 제작하고
(사용 기술 선정, 템플릿 제작, 폴더구조 설정등)
사용방법들을 사전에 교육하여 원하는 방향으로 프로젝트를 진행해 나가기 위한 노력도 같이 진행하였다.
이를 진행하며 프로젝트진행시 코딩과 기능만의 문제가 아닌
서로간의 소통과 약속이 정말 중요한 점이란 것을 다시한번 체감할수 있었다.
댓글남기기