[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 섹션 6. 회원 관리 예제 - 웹 MVC 개발
“스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술” 강의 바로가기
섹션 6. 회원 관리 예제 - 웹 MVC 개발
- 회원 등록 및 조회를 위한 핵심 기능을 포함한 아주 단순한 형태의 웹 사이트를 Spring MVC 기반으로 구축해 보겠다.
17. 회원 웹 기능 - 홈 화면 추가
src/main/java/controller/HomeController
⇒ 웹 애플리케이션의 루트 경로(/)로 들어오는 HTTP GET 요청을 처리하는 컨트롤러다. “home”이라는 뷰 이름을 반환하여 홈 화면으로 연결한다.src/main/resource/templates/home.html
⇒ Thymeleaf 템플릿 엔진을 사용해 제작된 홈 화면 마크업이다. 회원 가입과 회원 목록 조회를 위한 하이퍼링크 버튼을 포함하고 있다.결과 보기 -
localhost:8080
⇒ 실제 브라우저에서 실행된 모습이다. “Hello Spring” 타이틀과 함께 기능 메뉴가 정상적으로 렌더링된 것을 확인할 수 있다.우선순위 참고: 스프링 부트는 요청이 들어오면 내장 톰캣 서버가 먼저 관련 컨트롤러가 있는지 탐색하고, 없을 경우에만
static폴더의 정적 파일을 찾는다.
18. 회원 웹 기능 - 등록
회원 등록 폼 개발
회원 등록 폼 컨트롤러 -
src/main/java/hello.hello_spring/controller/MemberController
⇒ /members/new경로로 들어오는 GET 요청을 처리하여 회원 등록 폼 화면을 반환하도록 설정된 컨트롤러 소스 코드이다.회원 등록 폼 HTML -
src/main/resources/templates/members/createMemberForm.html
⇒ 사용자로부터 이름을 입력받기 위한 <form>태그와input필드가 포함된 HTML 템플릿이다.post방식으로 데이터를 전송하도록 설계되었다.결과 보기 -
localhost:8080/members/new
⇒ 애플리케이션 실행 후 등록 페이지에 접속하면, 작성한 HTML 템플릿이 정상적으로 렌더링되어 사용자 입력을 대기하는 화면을 확인할 수 있다.
⇒ 브라우저를 통해 실제 구현된 회원 등록 폼 페이지다. ‘이름’ 입력창과 등록 버튼이 포함된 UI가 정상적으로 출력된다.
회원 등록 컨트롤러
웹 등록 화면에서 데이터를 전달 받을 폼 객체 -
src/main/java/hello.hello_spring/controller/MemberForm
⇒ HTML의 input태그 내name속성과 매핑되는name필드를 가진 DTO(Data Transfer Object) 클래스다. 클라이언트가 전송한 데이터를 객체 형태로 바인딩하는 역할을 한다.회원 컨트롤러에서 회원을 실제 등록하는 기능 -
src/main/java/hello.hello_spring/controller/MemberController
19. 회원 웹 기능 - 조회
- 회원 컨트롤러에서 조회 기능 -
src/main/java/hello.hello_spring/controller/MemberController - 회원 리스트 HTML -
src/main/resources/templates/members/memberList.html
⇒ Thymeleaf의 th:each문법을 사용하여 전달받은 회원 리스트를 반복 루프로 처리한다. 각 회원의 ID와 이름을 테이블(Table) 형식으로 동적으로 렌더링한다.
결과 보기
데이터 입력: 등록 폼(
members/new)에서 ‘spring1’, ‘spring2’ 등의 데이터를 순차적으로 입력하고 등록 버튼을 클릭한다.

최종 조회 결과: 등록된 회원들이 고유 번호(ID)와 함께 목록에 실시간으로 반영된 것을 확인할 수 있다. 데이터는 메모리상에 저장되어 있으므로 서버 재시작 전까지 유지된다.

📝 요약 및 정리
이번 섹션에서는 스프링 빈과 의존관계를 바탕으로 실제 웹 MVC를 구현하며 회원 등록 및 조회 기능을 완성했다.
1. 홈 화면 추가 및 이동
HomeController 생성: 애플리케이션의 루트 경로(
/)로 들어오는 GET 요청을 처리하는 컨트롤러를 작성했다.홈 화면 연결: “home”이라는 뷰 이름을 반환하여
src/main/resource/templates/home.html과 연결했다.Thymeleaf 활용: 홈 화면에는 회원 가입과 회원 목록 조회를 위한 하이퍼링크 버튼을 포함했다.
컨트롤러 우선순위: 스프링 부트는 요청이 오면 내장 톰캣 서버에서 관련 컨트롤러를 먼저 찾고, 없을 때만 정적 콘텐츠(
static)를 찾는다.
2. 회원 등록 기능 구현
등록 폼 컨트롤러:
MemberController에서/members/new경로의 GET 요청을 받아 회원 등록 폼 화면을 반환한다.HTML 폼 구성:
createMemberForm.html을 생성하여 사용자로부터 이름을 입력받는<form>태그와POST방식의 데이터 전송을 설계했다.데이터 바인딩 (DTO): 클라이언트가 전송한 데이터를 객체 형태로 받기 위해
MemberForm클래스를 생성하고, HTML의name속성과 매핑했다.등록 로직: 컨트롤러의
create메서드에서 전달받은MemberForm객체를 이용해 회원을 실제 등록한다.
3. 회원 목록 조회 기능 구현
회원 리스트 컨트롤러:
/members경로로 들어오는 GET 요청을 처리하며,memberService를 통해 전체 회원을 조회한다.Model 객체 활용: 조회된 회원 리스트를
Model객체에 담아 뷰(memberList)로 전달한다.동적 렌더링:
memberList.html에서 Thymeleaf의th:each문법을 사용하여 회원 정보를 테이블 형식으로 반복 출력한다.
4. 실행 결과 및 특징
실시간 반영: 등록 폼에서 데이터를 입력하면 목록 조회 화면에 고유 번호(ID)와 이름이 실시간으로 반영된다.
메모리 저장소: 현재 데이터는 메모리에 저장되므로, 서버를 재시작하면 데이터가 초기화된다.
핵심 키워드:
Controller, Thymeleaf, POST/GET, DTO(MemberForm), Model


