ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 회원 웹 기능 - 홈 화면 추가 / 등록 / 조회
    [인프런] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB/섹션 5. 회원 관리 예제 - 웹 MVC 개발 2023. 3. 4. 00:51

    * 인프런 김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의를 듣고 작성한 내용입니다.

      (강의 링크)

     

    이전 시간 멤버 컨트롤러 만들고 의존관계 설정

    멤버 컨트롤러 통해서 회원등록하고 조회

     

    회원 웹 기능 - 홈 화면 추가

    HomeController.java

    home.html

    실행하고 localhost:8080 들어가면

    회원 가입 http://localhost:8080/members/new 로 이동

    회원 목록 http://localhost:8080/members 로 이동

     

    Q. 원래 아무것도 없을 때 static에 만들었던 index.html이 웰컴페이지로 떴는데 왜 이번에는 아닐까?

    바로 우선순위 때문!

     

    정적 컨텐츠 이미지 설명 자료

    요청이 오면 스프링 컨테이너 뒤지고 없으면 static 파일 

     

    컨트롤러가 정적 파일보다 우선순위 높기 때문에 localhost:8080 요청 오면

    먼저 컨트롤러를 찾아보고 HomeController에서 home.html 호출

    기존에 만들었던 static의 index.html은 호출하지 않음

     

    회원 웹 기능 - 등록

    MemberController.java

    templates - members - createMemberForm.html

    실행한 뒤 localhost:8080

    회원가입 누르면 members/new 

    등록 누르면 name 이라는 key, value는 spring이라는 내용이 서버로 넘어가게 됨 → 지금은 아무것도 없기 때문에 동작 X

    회원 등록하는 틀 완성!

     

    회원 등록하는 컨트롤러 만들어서 추가해야 함

    MemberForm.java

    아까 createMemberForm.html의 "name"과 매칭되어 값이 들어오게 된다.

    MemberController.java 에 추가

    다시 서버 돌리고 localhost:8080 가면

    이름 spring 후 등록 버튼 누르면 다시 홈 화면

     

    원리

    회원 가입 누르면 /members/new (get 방식)

    createForm()과 매핑되는데 createForm()은 바로 "/members/createMemberForm" 리턴

     

    리턴하면 템플릿에서 찾는다. 그럼 템플릿에서 members - createMemberForm 찾는다.

    View Resolver 로 인해서 선택되고 thymeleaf 엔진이 렌더링 한다 → 그럼 이 html 뿌려진다

    html 태그에서 <label> 글자, <input> 입력 받는 부분

    name 중요 name = "name" 서버로 넘어오는 키

    <input type="text" id="name" name="name" placeholder="이름을
    입력하세요">

    spring 넣고 등록 누르면 /members/new 로 post 방식으로 넘어간다

    MemberController의 @PostMapping으로 넘어가게 됨

    GetMapping기본적으로 url 창에 엔터 치는 것, 데이터를 조회할 때

    PostMapping은 데이터를 폼 같은 곳에 넣어서 전달할 때, 데이터를 등록할 때

     

    /members/new라는 url은 똑같지만 post 방식이므로 @PostMapping에 해당되는 create(MemberForm form) 메서드 호출

    MemberForm의 name 부분에 아까 입력한 spring이라는 값이 들어오게 됨

    name 부분 보고 스프링이 위 name에 넣어주는 것 setName setter 호출해서 넣음

    우리는 집어넣은 값 getName 통해서 꺼낼 수 있다

    그래서 form.getName() 으로 넣어둔 값 꺼내고 

    memberService.join 통해서 멤버 가입

    결과 확인할 수 있도록 출력 찍어보기

    출력 잘 뜨는 것 확인 가능!

     

    회원 웹 기능 - 조회

    홈 화면에서 회원 목록 눌렀을 때 /members 화면에서 회원 조회 가능하도록 만들기

    MemberController.java 추가

    templates - members - memberList.html

    다시 서버 올리면

    회원 가입으로 spring1, spring2 등록한 뒤 회원 목록 클릭하면 /members에서 조회 가능

    소스 코드 상태 각각 랜더링 되어 있음

    <tr th:each="member : ${members}">
      <td th:text="${member.id}"></td>
      <td th:text="${member.name}"></td>
    </tr>

    memberList에서 루프 돌면서 객체 꺼내서 member에 담고  객체의 id와 name 출력하는 것

    id, name 모두 private이므로 property 방식 접근으로 getId, getName 으로 출력하게 됨

     

    서버 내렸다가 다시 키면 목록은 리셋됨. → 실무에서는 절대 있어서는 안 되는 일

    데이터들을 파일이나 데이터베이스에 저장해야 하는 과정 필요!

Designed by Tistory.