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

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

by rlaehddnd0422

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

- ํ™ˆ ์ปจํŠธ๋กค๋Ÿฌ ์ถ”๊ฐ€

package kdo6301.spring0.controller;

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

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

}

์šฐ์„ ์ˆœ์œ„ 

1st. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋‚ด๋ถ€์˜ Controller

2nd. static ํŒŒ์ผ

 

@GetMapping("/") ์„ ํ†ตํ•ด ํ™ˆ ํ™”๋ฉด์ผ ๊ฒฝ์šฐ 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>

2. ํšŒ์› ์›น ๊ธฐ๋Šฅ - ํšŒ์›๊ฐ€์ž…

 

 ํšŒ์› ๋“ฑ๋ก ํผ ์ปจํŠธ๋กค๋Ÿฌ

package kdo6301.spring0.controller;

import kdo6301.spring0.domain.Member;
import kdo6301.spring0.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;
    }

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

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

        memberService.join(member);

        return "redirect:/";
    }

}

 

์›น ๋“ฑ๋ก ํ™”๋ฉด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ ๋ฐ›์„ ํผ ๊ฐ์ฒด

package kdo6301.spring0.controller;

public class MemberForm {
    private String name;

    public String getName() {
        return name;
    }

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

 

ํšŒ์› ๋“ฑ๋ก ํผ HTML ( 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>

 

๊ณผ์ •

 

1. ํšŒ์›๊ฐ€์ž… ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด GetMapping์„ ํ†ตํ•ด members/createMemberForm.html๋กœ ์ด๋™

 

2.  createMemberForm.html์— container ๋‚ด๋ถ€์— <form action="/members/new" method="post"> ์„ ํ†ตํ•ด

๋‚ด๋ถ€์— ์ž…๋ ฅํ•œ name์ด POST๋ฐฉ์‹์œผ๋กœ action = "/members/new"์— ๋„˜์–ด๊ฐ 

 

3. MemberController์˜ @PostMapping("/members/new")์˜  public String create(MemberForm form) ์‹คํ–‰ ํ•˜๋Š”๋ฐ, ์•ž์—์„œ ์ž…๋ ฅํ•œ name์€ form์˜ ๋ฉค๋ฒ„๋ณ€์ˆ˜ name์— ๋“ฑ๋ก๋œ๋‹ค.

๋ฉค๋ฒ„ ์ƒ์„ฑ -> form์— ๋“ฑ๋ก๋œ name์œผ๋กœ ํ•ด๋‹น ๋ฉค๋ฒ„ setName -> memberService๋ฅผ ํ†ตํ•ด join

 

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

ํšŒ์› ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์กฐํšŒ๊ธฐ๋Šฅ

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

1. /members์— ์ ‘์†ํ•˜๋ฉด memberService์—์„œ ๋ชจ๋“ ๋ฉค๋ฒ„๋ฅผ ๋ฆฌ์ŠคํŠธํ˜•ํƒœ๋กœ ๋ฆฌํ„ดํ•˜๋ฉด members์— ์ €์žฅ

2. addAttribute๋ฅผ ํ†ตํ•ด attrName : "members"์— member list ์ €์žฅ

3. members/membersList.html๋กœ ์ด๋™ 

 

membersList.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>

 

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

 

๋ฅผ ํ†ตํ•ด List์— ์žˆ๋Š” ๋ฉค๋ฒ„๋“ค์˜ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

 

 

์„œ๋ฒ„๋ฅผ ๊ป๋‹ค๊ฐ€ ํ‚ค๋ฉด ๊ธฐ๋กํ•œ repository๊ฐ€ ์‚ฌ๋ผ์ง„๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Œ ( Memory๋ฅผ ์ž„์‹œ DB๋กœ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— )

 

 

<์ฐธ๊ณ  ์ž๋ฃŒ>

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard

 

[๋ฌด๋ฃŒ] ์Šคํ”„๋ง ์ž…๋ฌธ - ์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ, ์›น MVC, DB ์ ‘๊ทผ ๊ธฐ์ˆ  - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

์Šคํ”„๋ง ์ž…๋ฌธ์ž๊ฐ€ ์˜ˆ์ œ๋ฅผ ๋งŒ๋“ค์–ด๊ฐ€๋ฉด์„œ ์Šคํ”„๋ง ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ์ „๋ฐ˜์„ ๋น ๋ฅด๊ฒŒ ํ•™์Šตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., - ๊ฐ•์˜ ์†Œ๊ฐœ | ์ธํ”„๋Ÿฐ...

www.inflearn.com

 

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

Study Repository

rlaehddnd0422

ํ™œ๋™ํ•˜๊ธฐ