이번 실습은 인프런 스프링 부트 강의 중 가장 유명한 김영한 선생님의 강의를 토대로 만들었다.
무료고 강의 자체가 짧아 금방 볼 수 있다. 추천 추천!! 😲😲
스프링 부트 회원 기능 실습
5. Controller 생성
이제까지 service를 통해 비즈니스 로직을 작성한 걸 Controller로 화면에 넘겨주는 작업을 해보려한다.
service와 controller를 연결해주기 위해 의존관계를 주입(DI)해줘야한다.
▶자세한 내용은..
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를 연결 안해줬기 때문이다.
회원 가입을 해주고 나니 회원 목록에 회원들이 뜨는 걸 볼 수 있다.
댓글