날씨·시간·관심사 기반으로 번개모임을 추천하고 실시간 채팅까지 가능한 JSP 기반 웹 프로젝트입니다.
본 저장소는 팀 프로젝트 중 제가 직접 구현한 기능과 학습 내용을 정리한 개인 포트폴리오입니다.
- 즉석에서 참여 가능한 번개모임 플랫폼
- 날씨, 시간대, 검색 이력 기반 모임 추천
- 사용자간 1:1 WebSocket 채팅 구현
- 관리자 기능 및 후기/문의 관리 지원
- JSP + Servlet 기반 MVC2 구조 구현
| 기능 영역 | 상세 내용 |
|---|---|
| 메인 모임 추천 | 최고 관심 카테고리 기반 추천 알고리즘 + 날씨 API 연동 |
| 날씨 API 연동 | 기상청 openAPI + 위경도 → 격자좌표 변환 로직 직접 구현 |
| 검색 필터링 | 카테고리/키워드 정렬 및 Ajax로 동적 반응 |
| 실시간 채팅 | WebSocket 기반 ChatEndpoint + 채팅방 생성 및 DB 저장 처리 |
| 리팩토링 | DAO → Service 계층 분리, 관심사 기반 추천 로직 정비 |
-
날씨 API 데이터 수신 실패
기상청 API 호출 시 빈 JSON이 반환되는 문제를 겪었고,
공식 문서와 커뮤니티 자료를 참고해 예보 발표 시각 기준으로 한 시간 전 데이터를 요청하는 방식으로 해결했습니다. -
격자 좌표 변환 로직 적용
기상청 API에서 요구하는 격자 좌표(nx, ny)를 사용하기 위해
위도·경도를 변환하는 외부 공식을 참고하고 프로젝트에 맞게 적용했습니다. -
WebSocket 구조 적용 경험
실시간 채팅 기능이 처음이었기에 기본 구조와 흐름을 여러 예제를 통해 이해하고,
우리 프로젝트에 맞게 세션 정보 처리 및 메시지 전송 흐름을 구현했습니다. -
비즈니스 로직 정비를 위한 계층 분리
초기에 DAO에 몰려 있던 로직을 Service 계층으로 분리하며,
구조적인 유지보수성과 확장성의 중요성을 실감했습니다.
- Backend: Java Servlet, JSP (Model2), JSTL, Oracle JDBC
- Frontend: HTML5, CSS3, JavaScript (AJAX)
- WebSocket: Java WebSocket API
- API: 기상청 날씨 API, Google SMTP
- WAS: Apache Tomcat 9
- 형상관리: GitHub, Discord, Draw.io
전체 흐름도, 화면 UI, API 구조 등은 아래 PDF 포트폴리오 문서에서 자세히 확인하실 수 있습니다.
이번 프로젝트를 통해 구조적인 설계, API 연동, 실시간 통신 시스템 구현 등
웹 애플리케이션 개발의 다양한 기술 요소를 경험할 수 있었습니다.
처음에는 모든 로직이 DAO에 몰려 구조가 복잡했지만,
MVC 패턴에 따라 Service 계층을 분리하면서 각 계층의 역할과 흐름을 더 명확하게 이해할 수 있었습니다.
특히 실시간 채팅 기능은 생소한 영역이었지만,
WebSocket 구조를 하나하나 참고하고 적용하면서 세션 관리, 메시지 흐름, 사용자 간 통신 처리에 대한 감각을 쌓을 수 있었고,
실시간 시스템에서의 기본적인 개념과 처리 방식에 대해 실무 감각을 익히는 계기가 되었습니다.
개발 중 발생한 문제들을 해결하면서 기술적인 자신감뿐만 아니라, 협업과 설계의 중요성도 함께 느낄 수 있었고,
이 과정을 통해 더 나은 개발자로 나아갈 수 있는 기반을 다질 수 있었습니다.
로컬 환경에서만 실행 가능한 학습용 프로젝트입니다.
- Oracle DB 설치 및 테이블 구성 (DDL 제공 예정)
- 이 프로젝트를 Eclipse에서 Import
- Apache Tomcat 9에 배포 후 실행
http://localhost:8090/main.do접속