๋ฐฑ์—”๋“œ(Back-End) ๊ฐœ๋ฐœ/SpringBoot

[SpringBoot] 5_ํšŒ์›๊ด€๋ฆฌ-์›น MVC ๊ฐœ๋ฐœ

rabo93 2025. 2. 26. 00:51
ํšŒ์› ์›น ๊ธฐ๋Šฅ - ํ™ˆ ํ™”๋ฉด ์ถ”๊ฐ€
  • ํ™ˆ ์ปจํŠธ๋กค๋Ÿฌ
package hello.hello_spring.controller;

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

@Controller
public class HomeController {

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

 

  • ํšŒ์› ๊ด€๋ฆฌ ํผ HTML
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>HOME</title>
</head>
<body>
  <div>
    <h1>Hello Spring</h1>
    <p>ํšŒ์› ๊ธฐ๋Šฅ</p>
    <p>
      <a href="/members/new">ํšŒ์›๊ฐ€์ž…</a>
      <a href="/members">ํšŒ์›์กฐํšŒ</a>
    </p>
  </div>
</body><!-- /container -->
</html>

 

์ฐธ๊ณ ) ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ •์  ํŒŒ์ผ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์•„์„œ ๋จผ์ € ์ปจํŠธ๋กค๋Ÿฌ๋ถ€ํ„ฐ ์ฐพ๊ณ , ์—†์œผ๋ฉด index.html ํŒŒ์ผ ์‹คํ–‰๋จ

 


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

 

  • ํšŒ์› ๋“ฑ๋ก ์ปจํŠธ๋กค๋Ÿฌ
package hello.hello_spring.controller;

import hello.hello_spring.domain.Member;
import hello.hello_spring.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 {

    // ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…(ํ•„๋“œ ์ฃผ์ž…)
//    @Autowired private MemberService memberService;
    private MemberService memberService;

    @Autowired // ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…(์ƒ์„ฑ์ž ์ฃผ์ž…)
    public MemberController(MemberService memberService) { //์ƒ์„ฑ์ž ์ƒ์„ฑ ๋‹จ์ถ•ํ‚ค : alt + Insertํ‚ค
        this.memberService = memberService;
    }

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

    @PostMapping("/members/new")
    public String createForm(MemberForm form) { //MemberForm์— ๋‹ด์•„์„œ ์™”์Œ
        Member member = new Member();
        member.setName(form.getName());

        memberService.join(member);

        return "redirect:/";
    }
}

 

  • ํšŒ์› ๋“ฑ๋ก ํผ HTML
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <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>

 

  • ์›น ๋“ฑ๋ก ํ™”๋ฉด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ ๋ฐ›์„ ํผ ๊ฐ์ฒด
package hello.hello_spring.controller;

public class MemberForm {
    private String name;

    //getter, setter //๊ฐ์ฒด ์ง€ํ–ฅ์˜ ํŠน์„ฑ : ์บก์Аํ™” (Encapsultation)
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    //์Šคํ”„๋ง์ด html์—์„œ data๋ฐ›์€๊ฑธ setName์„ ํ˜ธ์ถœํ•ด์„œ name์œผ๋กœ ๋‹ด์€๊ฑธ,
    //getName์„ ํ˜ธ์ถœํ•˜์—ฌ name์œผ๋กœ ๋ฆฌํ„ดํ•ด์คŒ
}

 

 


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

 

  • ํšŒ์› ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์กฐํšŒ ๊ธฐ๋Šฅ
@GetMapping("/members")
public String list(Model model) {
    List<Member> members = memberService.findMembers();
    model.addAttribute("members", members);

    return "members/memberList";
}

 

  • ํšŒ์› ๋ชฉ๋ก HTML
<!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>

 

  • ์‹คํ–‰ํ•ด์„œ ํšŒ์›๊ฐ€์ž… ํ›„ ํšŒ์›์กฐํšŒ ํ™”๋ฉด

 

์ฐธ๊ณ ) ์„œ๋ฒ„ ์ข…๋ฃŒ ํ›„ ์žฌ์‹คํ–‰ ํ•˜๋ฉด ๊ฐ€์ž…ํ–ˆ๋˜ ๋ฐ์ดํ„ฐ ๋ฆฌ์…‹๋จ (๋ฉ”๋ชจ๋ฆฌ์•ˆ์— ์ €์žฅํ–ˆ๊ธฐ ๋•Œ๋ฌธ)