Skip to content

xYunaL/Course-Registration-Site

Repository files navigation

📚 수강신청 시스템 (Course Registration System)

Servlet/JSP (Model 2 MVC) + MyBatis + Oracle 기반 수강신청 시스템.

🧱 기술 스택

레이어 기술
Language / Runtime Java 17
Web Jakarta Servlet 6 + JSP / JSTL (Model 2 MVC, Front Controller)
Persistence MyBatis 3.5
DB Oracle 21c XE (Docker)
Build / Run Maven (Wrapper ./mvnw) + Cargo(Tomcat 10.1)
View JSP · Bootstrap 5 · Fetch API
WAS 외장 Apache Tomcat 10.1

🚀 빠른 시작 (3단계)

# 1) Oracle 컨테이너 기동 (최초 1회는 DB 초기화로 1~2분 소요)
docker compose up -d
docker compose ps          # STATUS 가 healthy 인지 확인

# 2) 빌드 + 실행 (Tomcat 10.1 자동 다운로드·구동)
./mvnw clean package cargo:run

# 3) 브라우저 접속
http://localhost:8080/course-registration/

종료는 실행 중인 터미널에서 Ctrl + C.

💡 ./mvnw clean package cargo:run = 빌드 → WAR 생성 → Tomcat 10.1 에 배포 → 실행 까지 한 번에.


🔎 정상 동작 확인 (스모크 체크)

브라우저 http://localhost:8080/course-registration/ 에서:

  1. ① 카드DB 연결 성공 배지 + Oracle 서버 시각 표시 → JSP · MyBatis · Oracle 정상
  2. ② 버튼 클릭 — 새로고침 없이 시각 갱신 → Fetch API · FrontController · JSON 정상

터미널로도 확인 가능:

curl http://localhost:8080/course-registration/ping.do
# → {"success":true,"code":"OK","data":{"dbTime":"2026-06-05 10:04:10"}}
엔드포인트 설명
GET / 홈으로 리다이렉트 (/home.do)
GET /home.do 상태 페이지 (JSP SSR + DB 시각)
GET /ping.do DB 시각 JSON (Fetch 비동기 검증)

🛠️ 기타 실행 방법

WAR 만 빌드 (제출/외장 톰캣 수동 배포용)

./mvnw clean package
cp target/course-registration.war <TOMCAT_HOME>/webapps/   # 외장 Tomcat 10.1

IntelliJ 에서 : 오른쪽 Maven 툴 윈도우 → Plugins → cargo → cargo:run 더블클릭 (터미널 불필요)


🧯 트러블슈팅

증상 원인 / 해결
zsh: command not found: mvn 전역 Maven 미설치 — mvn 대신 ./mvnw 사용
http://localhost:8080/... 무응답 package 는 빌드만 함. 서버 실행이 필요 → ./mvnw clean package cargo:run
JAVA_HOME / Java 못 찾음 export JAVA_HOME=$(/usr/libexec/java_home -v 17) 후 재실행 (영구 적용은 ~/.zshrc 에 추가)
DB 연결 실패 배지 Oracle 컨테이너 확인: docker compose pshealthy 인지, 안 떠 있으면 docker compose up -d
백그라운드로 띄운 Tomcat 정지 pkill -f 'cargo:run'
포트 8080 사용 중 기존 프로세스 종료: lsof -nP -iTCP:8080 -sTCP:LISTEN 로 PID 확인 후 kill <PID>

🗄️ DB 접속 정보 (로컬 기본값)

항목
URL jdbc:oracle:thin:@localhost:1521/XEPDB1
User / Password dbp / dbpscret
  • 설정 파일: src/main/resources/db.properties (MyBatis mybatis-config.xml 에서 참조)
  • 환경변수 DB_URL / DB_USERNAME / DB_PASSWORD 로 오버라이드 가능
  • Oracle 접속·검증 상세는 docs/ORACLE_SETUP.md 참고

🏗️ 아키텍처 (Model 2 MVC)

브라우저 → *.do → FrontControllerServlet (단일 진입점 · 예외 일괄 처리)
   → CommandFactory (경로→Command 수동 매핑)
   → Command → Service (SqlSession 트랜잭션 경계: commit/rollback)
       → Mapper(MyBatis) → Oracle
   → 뷰 이름 반환 시 /WEB-INF/views/*.jsp forward / JSON 은 직접 write
  • Model 2 MVC: Servlet/JSP 기반 전통적 웹 아키텍처. Controller → Service → DAO (MyBatis Mapper) → DB 흐름.
  • Front Controller: 모든 요청을 하나의 Servlet (FrontControllerServlet) 이 처리 → 공통 로직 집중화 (인증, 예외 처리 등).
  • MyBatis: SQL 매퍼 프레임워크. XML 에 SQL 작성 → Java 인터페이스로 매핑 → SQL과 Java 코드 분리.
  • Oracle XE: 무료 버전 Oracle DB. Docker 컨테이너로 쉽게 실행 → 개발 환경 구축 간편화.

About

Course Registration System with Oracle and JSP

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors