๐Ÿฅ Web/โ›… Back-end | Spring

[Spring ์ž…๋ฌธ] 5. ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ - ์›น MVC ๊ฐœ๋ฐœ

darly213 2023. 9. 25. 17:02
728x90

1. ํšŒ์› ์›น ๊ธฐ๋Šฅ - ํ™ˆ ํ™”๋ฉด ์ถ”๊ฐ€

  1. localhost:8080 ์œผ๋กœ ํ˜ธ์ถœ
  2. container์—์„œ ๋’ค์ง
  3. localhost:8080/ < ์ปจํŠธ๋กค๋Ÿฌ ์žˆ์Œ
  4. ์—ฐ๊ฒฐ!
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";
    }
}

2. ํšŒ์› ์›น ๊ธฐ๋Šฅ - ๋“ฑ๋ก

package hello.hellospring.controller;

import hello.hellospring.domain.Member;
import hello.hellospring.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

@Controller
public class MemberController {
    private final MemberService memberService;
    @Autowired
    public MemberController(MemberService memberService) {
        this.memberService = memberService;
    }

// get mapping -> ๋ฐ์ดํ„ฐ๋ฅผ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ณด๋‚ด์ฃผ๋Š” ๊ฒฝ
    @GetMapping("/members/new")
    public String createForm() {
        return "members/createMemberForm";
    }
		
// post mapping -> ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ๋ฐ›๋Š” ๊ฒฝ์šฐ
    @PostMapping("members/new")
    public String create(MemberForm form) {
        Member member = new Member();
        member.setName(form.getName());

        memberService.join(member);

        return "redirect:/";
    }
}

name ๋ง๊ณ  ๋‹ค๋ฅธ ํ•„๋“œ ์—ฌ๋Ÿฌ๊ฐœ ๋งŒ๋“ค์–ด์„œ ์•Œ์•„์„œ ๋“ค์–ด๊ฐ€๋Š”์ง€ ์‹คํ—˜ํ•ด๋ณด๊ธฐ

package hello.hellospring.controller;

public class MemberForm {
    private String name;

    public String getName() {
        return name;
    }

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

 

3. ํšŒ์› ์›น ๊ธฐ๋Šฅ - ์กฐํšŒ

 
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div class="container">
  <div>
    <table>
      <thead>
      <tr>
        <th>#</th>
        <th>์ด๋ฆ„</th>
      </tr>
      </thead>
      <tbody>
      <tr th:each="member : ${members}"> 
        <td th:text="${member.id}"></td>
        <td th:text="${member.name}"></td>
      </tr>
      </tbody>
    </table>
  </div>
</div> <!-- /container -->
</body>
</html>
  • ${members} โ‡’ model๋กœ template engine์—์„œ ๋ฐ›์•„์˜จ ๊ทธ๊ฑฐ
  • each ์•ˆ์—์„œ ๋ฐ˜๋ณต๋ฌธ์ฒ˜๋Ÿผ ์‚ฌ์šฉ๋จ
    • jQuery์˜ for each๋ž‘ ๋˜‘๊ฐ™์Œ
    • member.id์™€ member.name ์€ getter๋กœ ๋ฐ›์•„์˜ด
@GetMapping(value = "/members")
public String list(Model model) {
	List<Member> members = memberService.findMembers();
    model.addAttribute("members", members);
    return "members/memberList";
}
728x90
๋Œ“๊ธ€์ˆ˜0