ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [mini project] HierarchicalBoard
    PORTFOLIO 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 다이어그램을 통해 정리하여 쉽고 빠르게 파악할 수 있었지만 ,

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

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

     

     

    'PORTFOLIO' 카테고리의 다른 글

    [project] hotelDelluna  (0) 2021.08.26
    [mini project] memboard (class-config.ver)  (0) 2021.08.10

    댓글

Designed by Tistory.