

사내 업무 및 자원관리를 효율적으로 하기 위한 웹 애플리케이션
- 작업내용 : Spring MVC + Oracle 을 이용한 그룹웨어 솔루션 개발
- 작업 참여도 : 20%(6인 팀플)
- 나의 작업 : Database 설계, 프로젝트 구조 설계, 채팅관련 기능, 파일저장소, RSETFul 설계, Tiles 설정, Interceptor 설계
- 작업 기간 : 150시간(1개월 프로젝트)
- 작업 범위 : html + css + js + java(Spring) + OracleDB(Mybatis)
- 사용외부소스 :
다음 우편번호 API http://postcode.map.daum.net/guide
- 소프트웨어 구성
Server : Apache Tomcat 8.5 / JDK 1.8
DataBase : Oracle 11G
Language : HTML5 / CSS3 / JavaScript /JAVA / SQL
FrameWork : Spring4.3.9(Maven Project) / Mybatis 3.4.6
Lib/Plugin : jQuery / jQuery-ui / jQuery-nicescroll / CKEditor / moment.js / Bootstrap / prefixfree / sweetalert / transit / fontawesome / Tiles3 / Gson / Json / commons-fileupload 등
설명 : 그룹웨어 솔루션으로, 그룹웨어의 핵심기능 위주로 구현하였으며, 그래프 및 적절한 비동기 통신 사용으로 사용성을 향상시켰습니다. 다우오피스 그룹웨어를 벤치마킹했습니다.
Spring 프레임워크를 사용하여 MVC 패턴으로 웹서버를 구축했으며, Tiles3 를 최대한 활용하여 개발코드간의 중복을 줄이고, 공통의 뷰를 템플릿으로 관리합니다. 특히, Tiles View Resolver 로 들어오는 Path Variable 규칙성을 통해서 Import 할 파일들을 자동으로 가져오게 설정하여, 각 팀원들이 View 단에서 자신의 영역만 작성하면 되도록 구현하였습니다.
스프링 설정으로는 각 팀원들의 개발단위별로 Dispatcher Servlet 을 설정하였으며, Anotation 방식으로 Bean 객체를 주입했습니다.
MVC 패턴으로 Controller, Service, Dao, Model 을 분리하였으며, Service 인터페이스를 구현하여 개발의 명세를 작성하고 같은 자원에 대한 비슷한 작업을 군집화하여 작성하였습니다.
사내 채팅은 일대일 또는 다대다 채팅 모두 가능하며, 클라이언트는 HTML5의 웹소켓과 자바 TextWebSocketHandler 클래스를 상속하여 구현하였습니다. 모든 채팅 내역은 DB에 저장되어 채팅방 재입장일을 기준으로 -14일 까지의 대화내역을 언제든 조회할 수 있습니다. 채팅방 대화가 없는 상태나 더이상 채팅인원이 남아있지 않은 상태에서는 채팅방을 DB에서 삭제하는 로직은 저장프로시저를 사용해 구현하였습니다.
프로젝트 하부 태스크에 속한 파일을 관리할 수 있는 파일저장소에서는 AbstractView 클래스를 상속하여 구현하였고, 다운로드클래스를 공통모듈화 하기 위해 다운로드용 Controller 에서 @PathVariable 어노테이션을 통해 요청경로에 나타난 Collection 과 Document 를 분기하여 해당 파일에 접근하는 방식으로 구현했습니다.
Ajax 통신을 적극 활용하여 부드러운 사용성을 제고했으며, 웹서버에서는 @ResponseBody 어노테이션과 Json, Gson 플러그인을 사용하여 구현하였습니다.
유즈케이스에 따른 기능별 접근권한 처리는 HandlerInterceptorAdapter 클래스를 구현하여 서블릿에서 요청경로별로 체크하도록 구현했습니다.
총 30개의 DB 테이블을 설계하였으며, 특히 사원 정보 테이블에 대해 다수의 테이블이 외래키를 가지고 있도록 설계했습니다. 모든 기능의 게시판에서 검색조건이 동적으로 추가될 수 있는 경우 Mybatis 의 문법에 따라 동적쿼리를 작성하였으며, 필요에 따라 selectKey 와 ResultMap 을 활용했습니다.