스프링/스프링 입문

6/30 스프링 입문 - 웹 MVC 개발

born-A 2022. 6. 30. 11:43
@Controller
public class HomeController {
    @GetMapping("/")
    public String home(){
        return "home";
    }
}

localhost:8080으로 들어오면 이게 호출됨. -> home.html이 호출됨

 

엇 근데 우리 index.html 만들지 않았나? welcomePage 라며?

 

localhost8080/ 으로 들어오면 컨트롤러 먼저 뒤지는데 그때 "/" 만나게 된 것!! 

바로 그 컨트롤러 호출하고 끝!

 

회원 웹 기능 - 등록

아까 home.html에서 회원 가입 링크를 /members/new로 설정했잖아

그럼 그 url 매핑해줘야지!

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

데이터를 등록할땐 @PostMapping을 씀, 조회할땐 @GetMapping

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<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>

form  태그는 값을 입력할 수 있는 태그. name="name"이 서버로 값이 넘어가는 부분!

name 부분에 spring을 입력하면 

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

/members/new에 포스트 방식으로 넘어가게 된다.

 

그럼 

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

@PostMapping을 거쳐,

public class MemberForm {
    private String name;

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

  여기에서 name에 spring이 저장되게 된다.

 

회원 웹 기능 조회

@GetMapping("/members")
public String list(Model model){
    List<Member> members = memberService.findMembers();
    model.addAttribute("membbbers", members);
    return "members/memberList";
}

멤버의 리스트 자체를 모델에 넣어서 View에 넘길것이다

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<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>

자바의 for each와 같음. 객체 하나를 꺼냄

회원 목록 조회 페이지 소스

 

데이터는 메모리안에 있기 때문에 자바를 내려버리면 데이터가 다 사라짐. -> 이 데이터를 파일이나  db에 저장해야한다!