OnSpot Project
OnSpot — 위치 기반 소셜 미디어 플랫폼
내 주변의 경험을 공유하고, 지도 위에서 새로운 사람들의 이야기를 발견하는 공간1. 시스템 아키텍처 (MVC Architecture)
JSP(View), Servlet(Controller), DAO/DTO(Model) 패턴을 준수한 고전적인 웹 아키텍처를 구현했습니다.
graph LR
User((User))
subgraph Frontend
JSP["JSP Views
(HTML/Bootstrap)"]
Map["Kakao Map SDK"]
end
subgraph Backend
Controller["Servlet
(Controller)"]
Model["DAO / DTO
(Data Access)"]
FileSys["File System
(Images)"]
end
subgraph Database
Oracle[("Oracle DB 11g")]
end
User -->|Request| JSP
JSP -->|Form Submit| Controller
Controller -->|Business Logic| Model
Controller -->|Multipart| FileSys
Model -->|JDBC Query| Oracle
Oracle -->|ResultSet| Model
Model -->|DTO Return| Controller
Controller -->|Forward| JSP
▲ Servlet/JSP 기반의 MVC 패턴 데이터 흐름도
2. 주요 기능 및 화면 (UI/UX)
지도 기반 탐색
Kakao Map API를 활용하여 사용자의 현재 위치 주변, 팔로워의 게시물 위치, 최근 게시물 위치를 마커로 시각화합니다.
게시물 업로드
사진 업로드 시 위치 정보를 함께 저장하여, 단순한 시간 순 정렬이 아닌 '장소' 중심의 피드를 제공합니다.
3. 핵심 로직: 위치 기반 게시물 등록
파일 업로드(COS 라이브러리)와 위치 데이터 처리를 동시에 수행하는 프로세스입니다.
sequenceDiagram
actor User
participant Browser
participant Server as Tomcat Server
participant DB as Oracle DB
User->>Browser: 1. 사진 선택 및 위치 지정
Browser->>Server: 2. POST /upload (Multipart/form-data)
activate Server
Note right of Server: COS Library 처리
Server->>Server: 3. 파일명 중복 처리 및 저장
Server->>Server: 4. 위도(Lat), 경도(Lng) 추출
Server->>DB: 5. INSERT INTO BOARD VALUES (...)
DB-->>Server: 성공(1)
deactivate Server
Server-->>Browser: 6. 업로드 완료 및 지도 갱신
Browser->>User: 7. 지도에 새 마커 표시
4. 데이터베이스 설계 (ERD)
Oracle Database를 사용하여 회원, 게시물, 댓글, 팔로우 관계를 정규화하여 설계했습니다.
▲ Oracle DB 테이블 관계도
5. 기술 스택 (Tech Stack)
Frontend
HTML5/CSS3 JavaScript (ES6) Kakao Maps SDK Bootstrap JQueryBackend
Java 8 JSP / Servlet Apache Tomcat 8.5 COS (Multipart) JDBCDatabase
Oracle 11g XE SQL Developer DBCP (Connection Pool)6. 트러블 슈팅
"Tomcat 서버 실행 시 'Connection refused' 오류"
Tomcat 서버 실행 시 'Connection refused' 오류가 발생했습니다. 이는 Tomcat이 정상적으로 실행되지 않았기 때문입니다. Tomcat을 실행하기 전에 먼저 포트 8080이 사용 중인지 확인해야 합니다. 포트 8080이 사용 중이라면, 다른 포트를 사용하거나 포트를 변경해야 합니다.
Project Info
-
Category
웹 애플리케이션 (1인 프로젝트) -
Role
전체 개발 (백엔드 + 프론트엔드 + DB) - Date
2022.07 – 2022.09 (2개월) -
GitHub
GitHub