방명록

고범규·2025년 8월 1일

연습

목록 보기
1/1

초기 설정

주요 기능

글 목록 보기(GET /guestbook)

  • 저장된 방명록 글들을 목록으로 표시
  • 각 글에는 작성자와 내용 출력
  • 글 옆에 삭제 버튼
  • "새 글 작성하기" 링크 포함

글 작성(GET /guestbook/new)

  • 사용자에게 글 작성 폼을 표시
    -이름 입력란
    -내용 입력란
    -작성 버튼

글 저장(POST /guestbook)

  • 폼에서 전송된 name과 content를 받음
  • GuestbookEntry 객체로 생성 후 저장소에 저장
  • 저장 후 목록 페이지로 리다이렉트(redirect:/guestbook)

글 삭제(POST /guestbook/delete)

  • 글 목록에서 삭제 버튼을 클릭 시 실행
  • 해당 글의 id 값을 기반으로 저장소에서 삭제
  • 삭제 후 목록 페이지로 리다이렉트

기술적 기능

파일 구조

코드

GuestbookEntry.java-도메인 모델(Model)

방명록 하나의 글 정보를 저장하는 데이터 클래스
사용자가 작성한 글을 서버가 다룰 수 있게 객체화


1. 사용자가 /guestbook/new에서 이름과 내용을 입력하고, 작성 버튼 클릭
2. GuestbookController의 @PostMapping("/guestbook") 메서드로 요청 도착
3. 전달된 name, content 값을 바탕으로 GuestbookEntry 객체 생성

GuestbookRepository.java-저장소

글을 메모리에 저장하고 관리하는 임시 데이터베이스 역할
글 저장, 삭제, 조회 처리


  • entries: 글 저장소(메모리 기반 Map)
  • currentId: 새로운 글에 부여할 ID


1. id가 null인 entry에 ID 할당(setId)
2. entries Map에 저장(put)
3. ID 증가시켜 다음 글 준비

  • findALL(): 전체 글을 리스트로 반환 -> 목록 출력에 사용
  • deleteById(id): 해당 ID의 글 삭제

GuestbookController.java-컨트롤러

사용자의 모든 웹 요청을 받아서, 데이터를 가져오거나 저장하고, 알맞은 뷰 템플릿을 반환하는 역할


GuestbookController가 동작하기 위해 필요한 GuestbookRepository를 의존성 주입(생성자 주입) 방식으로 받아서 필드에 할당

생성자 주입: 생성자를 통해 의존 객체(Repository 등)를 주입
의존성 주입(DI): 객체가 스스로 의존 객체를 만들지 않고, 외부에서 주입받는 방식

글 목록 조회

  • 저장소에서 글 리스트 조회
  • 모델에 entries를 담아서 list.html로 전달-> 화면 렌더링

글 작성 폼 보여주기

  • 별다른 로직은 없고 템플릿만 반환

    글 저장 요청 처리

  • 폼에서 name, content 받아서 객체 생성

  • 저장소에 저장하고

  • 다시 목록으로 리다이렉트 (redirect:/guestbook)

    글 삭제 요청 처리

  • 삭제 form에서 전송된 id 값으로 글 삭제

  • 삭제 후 목록으로 리다이렉트

list.html- 글 목록 화면

form.html- 글 작성 폼

실행 화면


새 글 작성하기 클릭

작성 버튼 클릭

추가 작성

삭제

0개의 댓글