← 포트폴리오 목록

교육 도서 통합 검색·자료실 웹서비스

본 프로젝트의 요구사항(통합 검색, 도서 상세와 수록 자료 다운로드, 독서 교육 제안 카드 목록, 301 리다이렉트 호환)을 기반으로 직접 구현하는 프로젝트입니다.

프로젝트 납품 요약

아래 프로젝트 개요와 핵심 기능에서 구현 화면을 확인할 수 있습니다.

서비스 타입Web
업종교육 플랫폼
기술 스택
JavaSpring BootThymeleafReactMySQLLinuxUbuntuNCPNginx
주요 기능
  • 통합 도서 검색
  • 도서 상세·자료 다운로드
  • 독서 교육 제안
  • 기존 주소 호환 안내

프로젝트 개요

범위: 개발, 디자인, 기획

본 프로젝트의 요구사항(통합 검색, 도서 상세와 수록 자료 다운로드, 독서 교육 제안 카드 목록, 301 리다이렉트 호환)을 기반으로 직접 구현하는 프로젝트입니다. Java Spring Boot와 Thymeleaf 서버 렌더링 구조로 이용자 페이지를 설계했습니다.

작업 범위

  • 통합 도서 검색: 단일 검색창에서 도서명·작가명·시리즈를 함께 조회하고 교과서·참고서·단행본을 구분해 카드로 보여주는 화면입니다
  • 도서 상세·자료 다운로드: 도서 소개와 작가 정보, 연동된 수록 자료를 한 화면에 모아 보여주고 자료를 바로 내려받을 수 있는 상세 화면입니다
  • 독서 교육 제안: 자료 중심 카드로 독서 교육 제안을 보여주고, 하나의 자료에 연결된 여러 도서를 카드 안에서 함께 확인하는 화면입니다
  • 기존 주소 호환 안내: 인쇄물 QR 코드가 가리키는 기존 주소로 접속하면 새 통합 주소로 안내되고, 이용자가 이동 경로를 확인할 수 있는 화면입니다

주요 업무

  • 통합 도서 검색 화면: GET 쿼리 파라미터 기반으로 검색 조건을 URL에 담아 결과 주소를 공유할 수 있게 하고, 도서 유형 필터와 정렬을 서버에서 처리합니다
  • 도서 상세·자료 다운로드 화면: 도서와 자료의 N:M 관계를 조회해 자료 유형별로 묶어 표시하고, 다운로드 요청은 서버 컨트롤러를 거쳐 파일 응답으로 전달합니다
  • 독서 교육 제안 화면: 자료와 도서의 다대다 연동 정보를 카드 단위로 조합하고, 목록 내 검색과 학년·주제 필터를 같은 화면에서 적용합니다
  • 기존 주소 호환 안내 화면: 기존 도메인 경로를 신규 경로로 연결하는 매핑 테이블을 두고 301 응답으로 이동시키며, 매핑이 없는 경로는 검색 화면으로 안내합니다
교육 도서 통합 검색·자료실 웹서비스
요구사항 정의

프로젝트 핵심 과제

프로젝트 진행 시 해결한 핵심 기술 과제입니다.

도서명·작가명·시리즈를 동시에 조회할 때 한글 형태소와 부분 일치 검색 품질을 맞추는 MySQL 인덱스 전략 설계

기존 DB 스키마에서 N:M 구조로 옮기는 과정에서 중복 작가·시리즈 데이터를 정합성 있게 병합하는 이관 규칙 설계

인쇄된 QR 주소처럼 변경할 수 없는 구 경로를 빠짐없이 신규 주소로 연결하는 매핑 누락 탐지 방식 설계

한글 파일명 자료 다운로드가 브라우저별로 동일하게 동작하

응답 헤더 인코딩 대응 필요

구현 내용

핵심 기능 상세

핵심 기능 1

통합 도서 검색

단일 검색창에서 도서명·작가명·시리즈를 함께 조회하고 교과서·참고서·단행본을 구분해 카드로 보여주는 화면입니다.

  • Spring MVC GET 핸들러와 검색 조건 DTO 바인딩으로 쿼리스트링 기반 검색 구조 설계
  • MySQL FULLTEXT 인덱스와 JPA Specification을 조합한 도서·작가·시리즈 동시 조회 구현
  • Thymeleaf 프래그먼트로 필터 칩과 카드 그리드를 재사용 단위로 분리

도서명·작가명·시리즈를 한 번의 쿼리 흐름으로 조회하고 유형별 배지로 구분하는 검색 구조를 구현하며, 검색 결과 URL을 그대로 공유할 수 있도록 설계합니다.

통합 도서 검색
통합 도서 검색 실제 화면
핵심 기능 2

도서 상세·자료 다운로드

도서 소개와 작가 정보, 연동된 수록 자료를 한 화면에 모아 보여주고 자료를 바로 내려받을 수 있는 상세 화면입니다.

  • 도서-자료 매핑 테이블 조인 조회와 자료 유형별 그룹핑 뷰 모델 구성
  • Spring ResponseEntity 기반 스트리밍 다운로드와 Content-Disposition 한글 파일명 인코딩 처리
  • 도서·작가·카테고리 연관 조회의 N+1 방지를 위한 fetch join 적용

한 권의 도서에 연결된 여러 자료를 유형별로 묶고 다운로드 경로를 서버에서 통제하는 상세 구조를 설계합니다.

도서 상세·자료 다운로드
도서 상세·자료 다운로드 실제 화면
핵심 기능 3

독서 교육 제안

자료 중심 카드로 독서 교육 제안을 보여주고, 하나의 자료에 연결된 여러 도서를 카드 안에서 함께 확인하는 화면입니다.

  • 자료 중심 조회 쿼리에서 연동 도서를 묶음 조회하는 DTO 프로젝션 구현
  • 카드 내 연동 도서 썸네일 스트립과 더보기 접기 컴포넌트 구성
  • 목록 내 검색과 필터 상태를 쿼리스트링으로 유지하는 페이지네이션 설계

하나의 자료를 여러 도서에 연결해 보여주는 카드 구조와 목록 내 검색·필터를 같은 화면 흐름으로 설계합니다.

독서 교육 제안
독서 교육 제안 실제 화면
핵심 기능 4

기존 주소 호환 안내

인쇄물 QR 코드가 가리키는 기존 주소로 접속하면 새 통합 주소로 안내되고, 이용자가 이동 경로를 확인할 수 있는 화면입니다.

  • URL 매핑 테이블과 Spring 인터셉터 기반 301 Location 응답 구현
  • Nginx 서버 블록에서 구 도메인 요청을 애플리케이션으로 전달하는 설정 구성
  • 매핑 누락 경로를 폴백 검색 페이지로 보내는 예외 처리 설계

인쇄물에 남는 기존 주소를 신규 구조로 연결하는 매핑·301 응답 흐름을 구현하고, 누락 경로는 검색으로 안내하는 폴백을 설계합니다.

기존 주소 호환 안내
기존 주소 호환 안내 실제 화면
구현 과정

프로젝트 진행 단계

STEP 1

기존 기능 역공학 및 MySQL 스키마 재설계 · 2026.10

기존 화면·기능을 스펙 기준으로 분석하고 도서·작가·카테고리·자료 N:M ERD와 이관 스크립트를 설계합니다

STEP 2

Spring Boot 검색·상세 API 개발 · 2026.10

통합 검색 GET 핸들러, 도서 상세, 자료 다운로드 컨트롤러와 Thymeleaf 템플릿을 구현합니다

STEP 3

독서 교육 제안 및 301 매핑 구현 · 2026.10

자료 중심 카드 화면과 기존 주소 301 리다이렉트 매핑, 검증 스크립트를 구현합니다

STEP 4

Ubuntu·Nginx 배포 구성 및 통합 검증 · 2026.10

Linux 환경 배포 구성과 Nginx 리버스 프록시 설정을 작성하고 URL 매핑 전수 검증을 수행합니다

개발 결과

GET 기반 통합 검색 구조 설계도서·작가·시리즈를 한 쿼리 흐름으로 조회하고 조건을 쿼리스트링에 담아 결과 주소를 공유할 수 있는 검색 구조를 구현합니다
도서-자료 N:M 연동 조회 모델 구축매핑 테이블 조인과 fetch join으로 도서 상세와 자료 카드 양쪽 방향의 연동 조회를 설계합니다
기존 주소 301 매핑 검증 체계 구축구 도메인 경로 매핑 테이블과 전수 검증 스크립트를 구현해 인쇄 QR 접속 경로의 이동 결과를 점검합니다
서버 렌더링 템플릿 컴포넌트화Thymeleaf 프래그먼트로 카드·필터 칩·페이지네이션 14개 단위를 분리해 여러 화면에서 재사용하도록 설계합니다

기술적 주안점

  • 도서명·작가명·시리즈를 한 번의 쿼리 흐름으로 조회하고 유형별 배지로 구분하는 검색 구조를 구현하며, 검색 결과 URL을 그대로 공유할 수 있도록 설계합니다
  • 한 권의 도서에 연결된 여러 자료를 유형별로 묶고 다운로드 경로를 서버에서 통제하는 상세 구조를 설계합니다
  • 하나의 자료를 여러 도서에 연결해 보여주는 카드 구조와 목록 내 검색·필터를 같은 화면 흐름으로 설계합니다

유사한 프로젝트를 기획하고 계신가요?

필요한 기능과 일정을 알려주시면 개발 범위를 함께 정리하겠습니다.

프로젝트 문의