스프링 부트 CKEditor

스프링 부트 CKEditor 4 - 컨트롤러, 뷰 기본 코드 작성

https://youtu.be/I1x2MFfeVls?si=IYStxtOWH3jCFu7T

스프링 부트 CKEditor 4 - 컨트롤러, 뷰 기본 코드 작성


Spring Boot에서 CKEditor 4 사용을 위한 Controller & View 기본 구조 설계

이번 글에서는 Spring Boot 프로젝트에서 CKEditor 4를 사용하기 위한 가장 기본적인 구조, 즉 Controller와 View를 어떻게 설계하고 연결하는지를 단계적으로 정리한다.

핵심은 단순하다.

“요청 URL → Controller → View 반환” 구조를 먼저 완성하는 것

이 구조가 완성되어야 이후에

  • CKEditor 붙이기
  • DB 저장
  • 이미지 업로드

같은 기능을 확장할 수 있다.


1. 전체 구조를 먼저 이해하기

CKEditor를 붙이기 전에 반드시 이해해야 할 흐름:

사용자 요청 → Controller → View(HTML) → 사용자 응답

지금 단계에서는 👉 데이터 저장보다 “페이지 이동 구조”가 더 중요하다


2. 필요한 URL 설계 (핵심 설계 포인트)

이번 프로젝트에서 필요한 기본 URL은 다음과 같다.

경로역할
/메인 페이지
/editor글 작성 페이지 (CKEditor 위치)
/save글 저장 (POST 요청)
/list게시글 목록
/content/{id}게시글 상세

왜 이렇게 나눌까?

이 구조는 거의 모든 게시판 시스템의 기본 구조다.

👉 중요한 포인트:

  • 화면용 URL (GET)
  • 데이터 처리용 URL (POST)

👉 역할을 명확히 분리


3. Controller 설계

이제 각 URL을 처리할 Controller를 만든다.


1) Controller 패키지 생성

src/main/java
 └─ controller

2) Controller 클래스 생성

예시:

  • MainController
  • EditorController
  • ListController
  • ContentController
  • SaveController

3) @Controller 어노테이션

@Controller
public class MainController {
}

👉 이 어노테이션이 있어야

  • Spring이 해당 클래스를 Bean으로 등록
  • 요청을 처리할 수 있음

4. View (HTML) 생성

Controller가 반환할 화면을 만든다.


위치

src/main/resources/templates

생성할 파일

  • main.html
  • editor.html
  • list.html
  • content.html

기본 HTML 구조

<!DOCTYPE html>
<html>
<head>
    <title>Page</title>
</head>
<body>
    <h1>Hello</h1>
</body>
</html>

👉 이 단계에서는 디자인보다 👉 파일이 연결되는지 확인하는 것이 중요


5. Controller와 View 연결 (핵심)

이제 가장 중요한 단계다.

“URL 요청 → 어떤 HTML을 반환할 것인가”


@GetMapping 사용


1) 메인 페이지

@Controller
public class MainController {

    @GetMapping("/")
    public String main() {
        return "main";
    }
}

👉 / 요청 → main.html 반환


2) 에디터 페이지

@Controller
public class EditorController {

    @GetMapping("/editor")
    public String editor() {
        return "editor";
    }
}

3) 리스트 페이지

@Controller
public class ListController {

    @GetMapping("/list")
    public String list() {
        return "list";
    }
}

4) 상세 페이지 (기초 형태)

@Controller
public class ContentController {

    @GetMapping("/content")
    public String content() {
        return "content";
    }
}

👉 이후 DB 연동 시 /content/{id}로 확장


6. 왜 return “main”; 이렇게 쓰는 걸까?

return "main";

👉 의미:

templates/main.html 파일을 찾아서 렌더링

👉 확장자는 자동으로 붙는다.


7. 실행 및 테스트

이제 서버를 실행한다.


실행 후 확인


👉 정상 동작 기준:

  • 페이지가 뜬다 = 성공
  • 에러 없음 = 구조 정상

8. 자주 발생하는 문제


1) Whitelabel Error

원인:

  • View 파일 없음
  • 이름 불일치

2) Template 인식 안됨

  • Mustache / Thymeleaf 의존성 확인 필요

3) URL 매핑 안됨

  • @GetMapping 경로 확인
  • Controller에 @Controller 빠짐

9. 현재 단계에서 중요한 것

지금 단계는 기능 구현이 아니다.

👉 목표:

  • URL 구조 이해
  • Controller 역할 이해
  • View 연결 이해

10. 다음 단계에서 할 것

이제 여기서 이어진다.


다음 작업

  1. editor.html에 CKEditor 4 붙이기
  2. 입력 데이터 POST 요청 만들기
  3. DB 저장 로직 연결
  4. 리스트 & 상세 페이지 데이터 출력

정리

이번 글의 핵심은 단 하나다.

Spring Boot에서 화면은 “Controller → View 매핑”으로 시작된다


핵심 요약

  • Controller는 요청을 받는다
  • View는 화면을 보여준다
  • @GetMapping으로 연결한다
  • return “파일명”으로 View 지정


© 2020. All rights reserved.

SIKSIK