본문 바로가기
Backend/Spring

[Spring Boot ②] 회원 기능 실습 - Controller (스프링부트 입문 / JPA / 스프링부트 기초 / CRUD 실습 / 인텔리제이)

by 비전공자 기록광 2021. 7. 12.
반응형

2021.07.12 - [IT 독학/WEB] - [Spring Boot ①] 회원 기능 실습 - Repository (스프링부트 입문 / JPA / 스프링부트 기초 / CRUD 실습 / 인텔리제이)

 

이번 실습은 인프런 스프링 부트 강의 중 가장 유명한 김영한 선생님의 강의를 토대로 만들었다.

무료고 강의 자체가 짧아 금방 볼 수 있다. 추천 추천!! 😲😲

 

https://inf.run/odFb

 

[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확인해주세

www.inflearn.com

스프링 부트 회원 기능 실습

 

5. Controller 생성

이제까지 service를 통해 비즈니스 로직을 작성한 걸 Controller로 화면에 넘겨주는 작업을 해보려한다.

 

service와 controller를 연결해주기 위해 의존관계를 주입(DI)해줘야한다.

 

▶자세한 내용은..

2021.04.01 - [IT 독학/WEB] - Spring Framework (스프링 개념 / 스프링 기초 / 스프링 입문 / 프레임워크 개념 / 웹개발 / 웹기초 / 웹독학 / 백엔드 개발자 / 프로그래밍)

 

 

 

5-1. MemberController.java 생성

 

src > main > java > hello.hellospring > controller 패키지 생성 > MemberController.java 생성

 

그리고 @Controller 어노테이션을 통해 이 파일이 컨트롤러임을 선언해줬다.

 

 

5-2. 의존관계 설정

 

MemberService 을 가져와 쓰기 위해 선언해주고

생성자도 만들어 주입을 해줬다.

생성자는 alt + insert 

 

이전에 했던 스프링 실습에서는 필드주입을 했었다.

 

2021.05.07 - [IT 독학/WEB] - [Spring _MVC ④] 로그인 기능 구현 (STS / MVC 패턴 / Mybatis / 스프링 입문 / 백엔드 / 웹개발)

 

@Autowired
private MemberBiz biz;

 

이번에는 생성자를 만들어 주입했는데

최근에 스프링에서는 생성자 주입을 권장하고 있다고 한다.

 

 

생성자 주입은 final 선언을 할 수 있어 객체 불변성을 보장하기 때문이라고 한다.

 

 

생성자를 만들어 써 주는 것만으로는 제대로 설정이 된 것이 아니다.

MemberService로 가서 @Service 선언을 해준다. 

 

그리고 여기서도 Service와 Repository를 연결하기 위한 생성자 주입을 해준다.

이로써 MemberService 자바 클래스가 스프링 컨테이너에서 서비스라고 등록이 된다.

 

서비스 - 레포지토리를 연결해주기 위해 레포지토리에도 똑같이 해준다.

 

 

 

 

6. view 생성

먼저 화면에 띄울 내용들을 작성해 준다.

 

6-1. home.html

 

resources > templates > home.html 생성

 

홈 화면을 하나 만들어줬다.

 

 

홈화면을 띄울 기본 HomeController를 만들어 확인해줬다.

 

 

실행해 확인해본다.

실행은 초록색 화살표 키를 누르면 된다. 

 

 

 

스프링 부트 기본 메인인 http://localhost:8080/ 로 가서 확인해준다.

잘 뜬다. 물론 회원가입을 누르면 아직 매핑해준 것이 없어 당연하게도 나오는 게 없다.

 

 

7. 회원 가입 기능 구현

홈화면에서 회원가입을 누르면 회원가입할 수 있게 기능을 구현해보겠다.

 

 

7-1. @GetMapping("/members/new")

 

먼저 미리 home.html에서 회원가입을 누르면 members/new 요청이 가게 해준대로

controller에서 요청을 받아 members 파일 아래 createMemberForm 파일을 출력해주기로 한다.

 

 

7-2. createMemberForm.html 생성

 

resources > templates > members 디렉터리 생성 > createMemberForm.html 생성

 

간단히 이름을 입력해 회원가입하는 창을 만들어줬다.

 

확인해주기위해 

서버 재실행 후 스프링 부트 기본 메인인 http://localhost:8080/ 로 가서 확인해준다.

 

 

 

잘 뜬다. 이제 이름을 입력하고 등록하는 것도 구현한다.

 

 

7-3. MemberForm.java

 

 

회원 가입 시 이름을 등록해 파라미터로 넘겨주기 위해 MemberForm.java를 만들어줬다.

간단히 name 멤버변수와 getter&setter을 만들어줬다.

 

이렇게 만들어주는 이유는 회원가입을 Post방식으로 매핑해주기 위해서이다.

 

 

 

MemberController에서 넘어온 post방식의 요청을 받아 파라미터를 MemberForm에 담아 넘겨준다.

파라미터에는 사용자가 직접 작성한 name이고

 

이 name을 받아 member에 담아주고 

이 전에 작성해둔 memberService의 join(member) 메소드로 처리해준다.

 

여기까지 작성 후 서버 재실행, 확인을 해준다.

 

 

회원 이름을 입력하고 등록하면 홈화면으로 넘어간다.

다른 알람 설정이나 회원 목록 기능을 구현해 놓지 않아 확인 할 수 없지만 잘 넘어간 것이다.

 

다시 한번 같은 이름을 넣어주자

 

에러가 발생한다.

 

 

콘솔에 친절하게 이유를 알려줬다.

회원 검증에서 실패했기 때문이라고 한다.

 

회원 가입도, 회원 검증도 잘 되는 걸 알 수 있다.

 

 

8. 회원 목록 기능 구현

등록된 회원의 목록을 출력하는 기능을 구현해본다.

 

8-1. @GetMapping("/members")

 

 

홈화면에서 회원 목록을 누르면 미리 service에서 만든 findMembers( )메소드를 이용해 List 형태로 담아

그 값을 members 파일 아래 memberList 파일에 출력해주기로 한다.

 

 

8-2. memberList.html

 

 

일단 코드를 간단히 설명해보자면 

tbody 안에 우리가 뽑아온 회원 목록 List를 forEach문으로 뿌려준다. 도메인 member의 getId / getName에 접근해 가져오는 것이다.

 

이렇게 서버 재시작해주고 확인해본다.

 

 

서버 재시작 후 회원 목록을 누르면 아무것도 안나온다.

아직 db를 연결 안해줬기 때문이다.

 

회원 가입을 해주고 나니 회원 목록에 회원들이 뜨는 걸 볼 수 있다.

 

반응형

댓글