11. 회원 관리 예제 - 웹 MVC 개발(1. 회원 등록)

2023. 4. 11. 21:31·Spring
728x90

 

이번 시간에는 홈 화면을 추가해보겠습니다.

 

우선 controller에서 HomeCotroller파일을 만들어주고, 아래 코드를 넣어줍니다.

 

package hello.hellospring.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {

    @GetMapping("/")
    public String home(){
        return "home";
    }
}

 

 

 

다음은 template에서 home.html파일을 만들고 다음 코드를 넣어줍니다.

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div class="container">
    <div>
        <h1>Hello Spring</h1>
        <p>회원 기능</p>
        <p>
            <a href="/members/new">회원 가입</a>
            <a href="/members">회원 목록</a>
        </p>
    </div>
</div> <!-- /container -->
</body>
</html>

 

 

실행해보면, 

잘 실행됩니다.

 

 

 

하지만 저번시간에 만든 index.html이라는 정적파일을 기억 하시나요?

 

index.html은 welcomepage로 아무것도 없으면 이 페이지로 가야합니다.

 

하지만, 스프링에서 컨트롤러는 정적 파일보다 우선순위가 높습니다. 

 

요청이 오면 스프링 컨테이너 안에 있는 관련 컨트롤러를 먼저 찾고, 없으면 static파일을 찾게 되어있습니다.

 

 

welcomepage도 마찬가지라고 이해하시면 됩니다.

 

 

localhost:8080에서 요청이 오면 먼저 HomeController를 찾아 매핑된것이 있나 찾아봅니다.

 

@GetMapping("/")

매핑된것이 있으므로 index.html은 무시됩니다.

 

 

 

다음은 MemberController에 /members/new 를 매핑해줍니다.

@GetMapping("/members/new")
public String createForm(){
    return "members/createMemberForm";
}

 

다음은 templates에 members Directory를 만들어주고 createMemberForm.html 파일을 만들어주고 다음 코드를 넣어줍니다.

 

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div class="container">
  <form action="/members/new" method="post">
    <div class="form-group">
      <label for="name">이름</label>
      <input type="text" id="name" name="name" placeholder="이름을 입력하세요">
    </div>
    <button type="submit">등록</button>
  </form>
</div> <!-- /container -->
</body>
</html>

 

다음은 controller에 MemberForm 클래스를 만들어 준 뒤, command+n 단축키로 getter and setter를 만들어줍니다.

package hello.hellospring.controller;

public class MemberForm {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

 

 

그리고 MemberController에 다음 코드를 추가해줍니다.

@PostMapping("/members/new")
public String create(MemberForm form){
    Member member = new Member();
    member.setName(form.getName());
    
    memberService.join(member);
    
    return "redirect:/";
}

join으로 member를 넘깁니다.

 

회원가입이 끝나면 redirect로 홈 화면으로 보냅시다.

 

 

 

 

로직은 이렇게 됩니다.

 

 

1) 먼저 회원가입에 들어가면 http://localhost:8080/members/new 로 들어갑니다. 

 

@GetMapping("/members/new")
public String createForm(){
    return "members/createMemberForm";
}

 

2) 이 MemberController에 있는 코드로 인해 createMemberForm으로 이동합니다. 

 

그 후 그냥 createMemberForm.html이 뿌려집니다.

 

 

3) 등록 버튼을 누르면 

<form action="/members/new" method="post">

이 html의 action url으로 인해 post방식으로 넘어옵니다.

 

 

 

 

그 후엔 MemberController의 @PostMapping으로 인해 데이터를 Form에 넣어서 등록해줍니다.

@PostMapping("/members/new")
public String create(MemberForm form){
    Member member = new Member();
    member.setName(form.getName());

    memberService.join(member);

    return "redirect:/";
}

@GetMapping과 @PostMapping의 URL이 같지만 method가 post이기 때문에 PostMapping이 선택됩니다.

 

 

create 메소드의 MemberForm의 name에 form안에 넣은 값이 들어갑니다.(setName)

 

 

728x90

'Spring' 카테고리의 다른 글

13. 데이터베이스 사용  (0) 2023.04.12
12. 회원 관리 예제 - 웹 MVC 개발(2. 회원 조회)  (0) 2023.04.11
10. 자바 코드로 직접 스프링 빈 등록하기  (0) 2023.04.11
9. 스프링 빈과 의존관계 (Spring)  (0) 2023.04.04
8. 의존성 주입(dependency injection) (Spring)  (0) 2023.04.03
'Spring' 카테고리의 다른 글
  • 13. 데이터베이스 사용
  • 12. 회원 관리 예제 - 웹 MVC 개발(2. 회원 조회)
  • 10. 자바 코드로 직접 스프링 빈 등록하기
  • 9. 스프링 빈과 의존관계 (Spring)
minseououo
minseououo
    250x250
  • minseououo
    StudyRepository
    minseououo
  • 전체
    오늘
    어제
    • 분류 전체보기 (99)
      • 인버터 (5)
      • 자동차 (25)
      • 모터 (5)
      • 검증 (2)
      • Spring (46)
      • 프로젝트 (1)
      • 인공지능 (2)
      • 운영체제 (5)
      • Algorithm (2)
      • 소프트웨어공학 (5)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    EILS
    인버터
    자바
    모터제어
    자동차 신차 개발 프로세스
    스프링
    MILS
    ISO26262
    java
    전류 제한원
    Spring
    자율주행
    clarke변환
    dq변환
    SDV
    자동차
    AUTOSAR
    코깅 토크
    mtpa
    약계자제어
    bsw
    토크 리플
    hils 검증
    자동차 통신
    PI제어
    ASW
    백앤드
    ASPICE
    자동차 네트워크
    park변환
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
minseououo
11. 회원 관리 예제 - 웹 MVC 개발(1. 회원 등록)
상단으로

티스토리툴바