1. 목적
2. 개요
3. 개발환경
4. 설계
5. spring 구조
6. 기능 설명
7. 후기
- 계층형 게시판 이해와 구현
- STS 툴을 이용해 spring framework 사용
- MVC 패턴 활용
- Tiles를 이용한 동적 레이아웃 구성
- myBatis와 Oracle DB 이용한 DB 연동 및 조작
2021.08.09 ~ 2021.08.22
- 회원가입이 가능하다.
- 로그인이 가능하다.
- 인터셉터를 통해 비로그인 상태에서 게시물 작성시 로그인 화면을 요청한다.
- 원글에 대한 답글을 달 수 있다.
- 원글은 최신순, 답글은 1차로 계층순 2차로 최신순으로 정렬한다.
- 메인 게시판 페이지는 페이징 기능을 구현한다.
- 원글, 답글등에 간단한 댓글 작성할 수 있다.
- 댓글 일정개수 이상일 시 더보기 기능으로 댓글을 볼수 있다.
- Windows 10
- JAVA JDK 1.8.0_40
- STS 3.9.15
- Springframework 4.3.13
- Tomcat 8.0
- OracleXE11 - ojdbc6
- mybatis 3.2.8
- tiles-jsp 2.2.2
- jackson-databind 2.9.2
member: 회원 테이블
board: 게시물 테이블
reply: 댓글 테이블
2-1) Package Diagram
2-2) Class Diagram (Business Layer, Presentation Layer)
- member
- board, reply
- Tiles 구현
- 회원 가입
DEVELOP Description | |
1 | Ajax 로 Dataservice layer 의 데이터로 ID 중복체크 |
2 | 다음 우편번호 API 를 사용하여 우편번호 검색 가능 |
3 | Js 를 통해 회원가입 유효성 검사 |
- 로그인
DEVELOP Description | |
1 | Ajax를 이용하여 id,pw 일치하는 회원 확인 |
- 게시판 목록
DEVELOP Description | |
1 | 계층형 게시판 리스트 |
2 | Paging 기능 |
3 | 비로그인 시 interceptor 를 통해 로그인 화면으로 요청 변경 |
- 댓글 등록, 삭제, 수정
DEVELOP Description | |
1 | Ajax를 이용해 비동기로 댓글등록 |
2 | Ajax를 이용해 비동기로 댓글삭제/수정 가능 |
- 댓글 더보기, 접기
DEVELOP Description | |
1 | Ajax를 이용해 댓글 10개 이상일 때 댓글 더보기 버튼 활성화 Ajax를 이용해 댓글 더보기 기능 |
2 | Ajax를 이용해 마지막 댓글일 때 댓글 접기 버튼 활성화 Ajax를 이용해 댓글 접기 기능 |
댓글 기능으로 ajax 를 많이 사용하게 되었는데, 기존에 알고 있던 이론이 많이 부족하고 잘못된 부분이 있었다는걸 알게 되었다.
@ResponseBody와@RequestBody를 숙지하지 못하고 매번404, 415에러페이지를 겪었는데,
이번 프로젝트를 통해 컨트롤러에서 리턴값의 기본은 뷰이름이며 뷰이름이 아닌JSON객체를 보내기 위해@ResponseBody를 사용한다는 것,
@RequestBody는 보내온data가 쿼리스트링이면 당연히JSON형식의 데이터가 아니므로 맞지 않는 데이터 형식이라는 에러페이지가 뜬다는 것등을 알 수 있었다.
초기에 다른 프로젝트에서 spring 을 어노테이션 형식으로 구현했었는데 이번 프로젝트에서는 xml 형식으로 진행했다. 이를 통해 두 방식의 사용법과 서로 어느 부분이 동일한 설정으로 매칭되는지 알아볼 수 있었던 유익한 시간이었다.
1. 기본 이론을 숙지하자
제대로 알지 못하고 사용하는 기능은 더 많은 시간을 할애하게 한다.
모르는 부분은 애매하게 넘기지 말아야 한다.
ajax 부분, spring 을 xml 형식으로 설정함에 있어서 경로 설정등에 어려움을 많이 겪었다.
2. UML 다이어그램등을 통해 설계도를 잘 활용하자
초기에는 UML 다이어그램을 통해 정리하여 쉽고 빠르게 파악할 수 있었지만 ,
점차 필요한 기능이 추가되가면서 머리속에서만 설계를 마치는 경우가 있었다.
결국 추후에 이 컨트롤이 어떤 기능을 하는지 다시 파악해야 했고 같은 기능을 중복하여 사용하는 비효율적인 부분도 발견할 수 있었다.