PORTFOLIO

[mini project] HierarchicalBoard

docc 2021. 8. 31. 18:35

목차

1. 목적
2. 개요
3. 개발환경
4. 설계
5. spring 구조
6. 기능 설명
7. 후기

 


 

 

 

1. 목적

  • 계층형 게시판 이해와 구현
  • STS 툴을 이용해 spring framework 사용
  • MVC 패턴 활용
  • Tiles를 이용한 동적 레이아웃 구성
  • myBatis와 Oracle DB 이용한 DB 연동 및 조작

 

 

 

2. 개요

1) 수행기간

2021.09.06 ~ 2021.09.19

2) 회원 기능

  • 회원가입이 가능하다.
  • 로그인이 가능하다.
  • 인터셉터를 통해 비로그인 상태에서 게시물 작성시 로그인 화면을 요청한다.

3) 계층식 답변형 게시판 기능

  • 원글에 대한 답글을 달 수 있다.
  • 원글은 최신순, 답글은 1차로 계층순 2차로 최신순으로 정렬한다.
  • 메인 게시판 페이지는 페이징 기능을 구현한다.

4) 게시물에 댓글 기능

  • 원글, 답글등에 간단한 댓글 작성할 수 있다.
  • 댓글 일정개수 이상일 시 더보기 기능으로 댓글을 볼수 있다.

 

 

 

3. 개발환경

  • 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

 

 

 

4. 설계

1) ERD ( ERMaster 사용 )

member: 회원 테이블

board: 게시물 테이블

reply: 댓글 테이블

2) UML ( startUML 사용 )

2-1) Package Diagram

2-2) Class Diagram (Business Layer, Presentation Layer)

  • member

  • board, reply


 

 

 

5. spring 구조


 

 

 

6. 기능 설명

  • 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를 이용해 댓글 접기 기능

 

 

 

7. 후기

느낀 점 😁

댓글 기능으로 ajax 를 많이 사용하게 되었는데, 기존에 알고 있던 이론이 많이 부족하고 잘못된 부분이 있었다는걸 알게 되었다.

더보기

@ResponseBody  @RequestBody 를 숙지하지 못하고 매번 404, 415 에러페이지를 겪었는데,

이번 프로젝트를 통해 컨트롤러에서 리턴값의 기본은 뷰이름이며 뷰이름이 아닌 JSON 객체를 보내기 위해 @ResponseBody 를 사용한다는 것,

@RequestBody 는 보내온 data 가 쿼리스트링이면 당연히 JSON 형식의 데이터가 아니므로 맞지 않는 데이터 형식이라는 에러페이지가 뜬다는 것 등을 알 수 있었다.

초기에 다른 프로젝트에서 spring 을 어노테이션 형식으로 구현했었는데 이번 프로젝트에서는 xml 형식으로 진행했다. 이를 통해 두 방식의 사용법과 서로 어느 부분이 동일한 설정으로 매칭되는지 알아볼 수 있었던 유익한 시간이었다.

 

개선해야 할 점 🐱‍👓

1. 기본 이론을 숙지하자

제대로 알지 못하고 사용하는 기능은 더 많은 시간을 할애하게 한다.

모르는 부분은 애매하게 넘기지 말아야 한다.

ajax 부분, spring 을 xml 형식으로 설정함에 있어서 경로 설정등에 어려움을 많이 겪었다.

 

2. UML 다이어그램등을 통해 설계도를 잘 활용하자

초기에는 UML 다이어그램을 통해 정리하여 쉽고 빠르게 파악할 수 있었지만 ,

점차 필요한 기능이 추가되가면서 머리속에서만 설계를 마치는 경우가 있었다.

결국 추후에 이 컨트롤이 어떤 기능을 하는지 다시 파악해야 했고 같은 기능을 중복하여 사용하는 비효율적인 부분도 발견할 수 있었다.