← Projects

JSP / Servlet Team Project

여행지 / 맛집 추천을 위한 기사 등록 시스템

여행지 및 맛집 정보를 기사 형태로 등록하고, 카테고리 기반으로 조회할 수 있는 웹 콘텐츠 관리 시스템입니다.

개발 기간 2026.01.21 ~ 2026.02.20
참여 인원 3명 팀 프로젝트
주요 역할 회원 인증, 접근 제어, Servlet 요청 처리
Travel+ 프로젝트 메인 화면

Overview

프로젝트 개요

담당 역할

  • 회원가입 및 로그인 기능 구현
  • Servlet 기반 요청 처리 로직 구현
  • 세션 기반 인증 및 권한 검증 로직 구현
  • 회원 상태 관리 로직 설계
  • 서버단 접근 제어 및 예외 처리 구현
  • 일부 DAO 및 DB 연동 로직 구현

Tech Stack

Backend

Java JSP / Servlet Oracle DB

Frontend

HTML CSS JavaScript

Tool

Eclipse 4.38.0 SQL Developer 24.3.1 Apache Tomcat 9.0.113

Key Features

담당 기능 및 핵심 구현 내용

Travel+ 회원가입 화면

01

회원가입 및 로그인 인증 흐름

입력값 검증부터 세션 저장까지 이어지는 사용자 인증 흐름

구현 설명

회원가입 입력 데이터를 서버에서 검증하고, 로그인 성공 시 HttpSession에 사용자 정보를 저장해 로그인 상태를 유지했습니다. 인증 정보는 이후 게시글 작성, 수정, 삭제 요청의 권한 검증 기준으로 사용했습니다.

Travel+ 로그인 화면

02

세션 기반 접근 제어

비로그인 사용자의 직접 URL 접근을 서버단에서 차단

구현 설명

비로그인 사용자가 글쓰기, 수정 페이지 URL에 직접 접근하는 경우 Servlet에서 세션 존재 여부와 memberId 값을 확인했습니다. 인증되지 않은 요청은 로그인 페이지로 리다이렉트해 서버단에서 접근을 차단했습니다.

Travel+ 마이페이지 화면

03

마이페이지 활동 기록 저장 및 회원 정보 변경

회원의 활동 기록을 마이페이지에서 확인하고 기본 회원 정보를 수정하는 흐름 구현

구현 설명

마이페이지에서 사용자의 게시글, 좋아요 등 활동 기록을 확인할 수 있도록 구성했습니다. 회원 정보 변경 요청 시 입력값을 검증하고, 변경된 정보가 화면에 반영되도록 처리했습니다.

Travel+ 관리자 대시보드 화면

04

회원 상태 관리 및 탈퇴 회원 복구

활동 등급 변경과 탈퇴 후 3개월 이내 계정 복구 정책 적용

구현 설명

회원 활동 상태에 따라 등급을 변경할 수 있도록 관리 흐름을 구성했습니다. 탈퇴 회원은 탈퇴일 기준 3개월 이내 재가입 시 기존 계정을 복구할 수 있도록 처리했습니다.

Architecture

MVC 기반 시스템 구조

Controller

  • Servlet URL 매핑 및 요청 처리
  • 요청 파라미터 수집
  • DAO 호출 및 비즈니스 로직 처리
  • 세션 기반 로그인 상태 및 권한 검증
  • 처리 결과를 JSP View로 전달

DAO

  • Oracle DB 접근 및 SQL 실행
  • 회원 데이터 조회 및 저장 처리
  • 게시글 데이터 접근 로직 분리

View

  • JSP, EL, JSTL 기반 데이터 출력
  • 로그인 상태에 따른 UI 분기 처리
  • 사용자 권한에 따른 기능 표시 제어
Travel+ 관리자 카테고리 관리 화면

Troubleshooting & Impact

URL 직접 접근 문제 해결

문제

비로그인 사용자가 URL을 직접 입력하여 글쓰기 또는 수정 페이지에 접근할 수 있는 문제가 발생했습니다.

원인

초기 구현에서는 프론트엔드에서 버튼을 숨기는 방식으로만 접근을 제어했고, 서버단 로그인 상태 검증이 충분하지 않았습니다.

해결

Servlet에서 Session 존재 여부와 세션에 저장된 memberId를 검증하고, 로그인하지 않은 경우 로그인 페이지로 리다이렉트했습니다.

결과

비인가 사용자 접근을 차단하고, 서버단 권한 검증 로직을 강화했습니다.

배운 점

접근 제어는 UI가 아니라 서버단에서 반드시 검증되어야 한다는 점을 경험했습니다.