์Šคํ”„๋ง ์ž…๋ฌธ - (13) ํšŒ์› ์›น ๊ธฐ๋Šฅ

2023. 1. 22. 16:07ยทSpring/Spring ์ž…๋ฌธ

 

 

(1) ํ™ˆ ํ™”๋ฉด ์ถ”๊ฐ€

 

 

ํ™ˆ ์ปจํŠธ๋กค๋Ÿฌ ์ƒ์„ฑ

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";
    }
}

 

@GetMapping : / ( ์ฒซ ๋„๋ฉ”์ธ ์š”์ฒญ ) 

   ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์šฐ์„ ์„ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์— ์›ฐ์ปดํŽ˜์ด์ง€ ํ˜ธ์ถœ X

 

return : home.html ํ˜ธ์ถœ 

์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ •์  ํŒŒ์ผ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค.

 

 

 

 

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>

 

 

 

ํ…œํ”Œ๋ฆฟ ์—”์ง„ ์ฒ˜๋ฆฌ

 

 

ํ™ˆ ํ™”๋ฉด ์ƒ์„ฑ

 

 

(2) ํšŒ์› ๋“ฑ๋ก

 

 

 

MemberController Class ๋งคํ•‘ ์ถ”๊ฐ€ 

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

 

templates/members ํด๋” ์ถ”๊ฐ€ 

 

ํšŒ์› ๋“ฑ๋ก ํผ HTML ( resources/templates/members/createMemberForm )

<!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>

 

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

 <form> ํƒœ๊ทธ 

post ๋ฐฉ์‹์œผ๋กœ /members/new๋กœ ๋„˜์–ด๊ฐ -> ( @PostMapping )

 

<input type="text" id="name" name="name" placeholder="์ด๋ฆ„์„
์ž…๋ ฅํ•˜์„ธ์š”">

 

 

key : value /

name : spring ์„œ๋ฒ„๋กœ ์ „์†ก 

 

 

<form> ํƒœ๊ทธ 

๋”๋ณด๊ธฐ

<form> ํƒœ๊ทธ๋Š” ์›น ํŽ˜์ด์ง€์—์„œ์˜ ์ž…๋ ฅ ์–‘์‹์„ ์˜๋ฏธ

ํผ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์›น์‚ฌ์ดํŠธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉ

  • name: ํผ์˜ ์ด๋ฆ„
  • action: ํผ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋˜๋Š” ๋ฐฑ์—”๋“œ url / ์ „์†ก๋˜๋Š” ์„œ๋ฒ„ url ๋˜๋Š” html ๋งํฌ
  • method: ํผ ์ „์†ก ๋ฐฉ์‹ (GET / POST)
  •  
placeholder ํžŒํŠธ ํ‘œ์‹œ(ํ•„๋“œ ํด๋ฆญ์‹œ ๋‚ด์šฉ ์‚ฌ๋ผ์ง)

 

<form> ํƒœ๊ทธ๋Š” ์ „์ฒด ์–‘์‹์„ ์˜๋ฏธํ•˜๋ฉฐ, ํ™”๋ฉด์— ๋ณด์ด์ง€ ์•Š๋Š” ์ถ”์ƒ์ ์ธ ํƒœ๊ทธ์ž…๋‹ˆ๋‹ค.

 

<input>

์‹ค์ œ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์–‘์‹์„ ์ž…๋ ฅํ•˜๊ธฐ ์œ„ํ•œ ํƒœ๊ทธ๋Š” <input> ํƒœ๊ทธ ๋“ฑ์ด ์‚ฌ์šฉ

 ์‚ฌ์šฉ์ž๊ฐ€ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋ถ€๋ถ„์„ ๋งŒ๋“ค์–ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ

 

type

  • text: ์ผ๋ฐ˜ ๋ฌธ์ž
  • password: ๋น„๋ฐ€๋ฒˆํ˜ธ
  • button: ๋ฒ„ํŠผ
  • submit: ์–‘์‹ ์ œ์ถœ์šฉ ๋ฒ„ํŠผ
  • reset: ์–‘์‹ ์ดˆ๊ธฐํ™”์šฉ ๋ฒ„ํŠผ
  • radio: ํ•œ๊ฐœ๋งŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ
  • checkbox: ๋‹ค์ˆ˜๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ
  • file: ํŒŒ์ผ ์—…๋กœ๋“œ
  • hidden: ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์ด์ง€ ์•Š๋Š” ์ˆจ์€ ์š”์†Œ

 

https://www.nextree.co.kr/p8428/

 

https://inpa.tistory.com/entry/HTML-%F0%9F%93%9A-%ED%8F%BCForm-%ED%83%9C%EA%B7%B8-%EC%A0%95%EB%A6%AC 

 

 

 

ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€ - /members/new

 

 

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

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:/";

}

create ํ˜ธ์ถœํ•˜๊ณ  ๊ฐ’(MemberForm์˜ name)์ด ๋“ค์–ด์˜ด.

( Spring ์ด setName์„ ํ˜ธ์ถœํ•ด์„œ ๊ฐ’์ด ๋“ค์–ด๊ฐ , private name ์ด๊ธฐ ๋•Œ๋ฌธ ) 

 

 

method ์†์„ฑ

๋”๋ณด๊ธฐ

 

method ์†์„ฑ์„ ํ†ตํ•ด ๋ช…์‹œํ•  ์ˆ˜ ์žˆ๋Š” form ์š”์†Œ์˜ ์ „๋‹ฌ ๋ฐฉ์‹์€ GET๋ฐฉ์‹๊ณผ POST๋ฐฉ์‹์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

 

GET ๋ฐฉ์‹

์ฃผ์†Œ์— ๋ฐ์ดํ„ฐ(data)๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹
๋ฐ์ดํ„ฐ๊ฐ€ ์ฃผ์†Œ ์ž…๋ ฅ์ฐฝ์— ๊ทธ๋Œ€๋กœ ๋‚˜ํƒ€๋‚จ
์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๊ธฐ ๋˜ํ•œ ์ œํ•œ์ ์ž„
๋”ฐ๋ผ์„œ ๊ฒ€์ƒ‰ ์—”์ง„์˜ ์ฟผ๋ฆฌ(query)์™€ ๊ฐ™์ด ํฌ๊ธฐ๊ฐ€ ์ž‘๊ณ  ์ค‘์š”๋„๊ฐ€ ๋‚ฎ์€ ์ •๋ณด๋ฅผ ๋ณด๋‚ผ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ

 

POST ๋ฐฉ์‹

๋ฐ์ดํ„ฐ(data)๋ฅผ ๋ณ„๋„๋กœ ์ฒจ๋ถ€ํ•˜์—ฌ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹
๋ฐ์ดํ„ฐ๊ฐ€ ์™ธ๋ถ€์— ๋“œ๋Ÿฌ๋‚˜์ง€ ์•Š์Œ
์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ ๋˜ํ•œ ์ œํ•œ์ด ์—†์Œ
๋ณด์•ˆ์„ฑ ๋ฐ ํ™œ์šฉ์„ฑ์ด GET ๋ฐฉ์‹๋ณด๋‹ค ์ข‹์Œ

 

 

(3) ํšŒ์› ์กฐํšŒ

 

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

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

}

 

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>

${members} : model ์•ˆ์— ์žˆ๋Š” ๊ฐ’์„ ๊บผ๋‚ด์˜จ๋‹ค 

model.addAttribute("members", members);

model์˜ key = members 

members : members(๋ฆฌ์ŠคํŠธ๋กœ ๋ชจ๋“  ํšŒ์›์„ ๋‹ค ์กฐํšŒํ•ด์„œ ๋‹ด์•„๋†“์Œ)

 

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

 ๋ฃจํ”„๋ฅผ ๋Œ๊ธฐ 

members์—์„œ ์ฒซ ๋ฒˆ์งธ ๊ฐ์ฒด๋ฅผ ๊บผ๋‚ด์–ด member์— ๋‹ด๊ธฐ

member.id / member.name ์ถœ๋ ฅ 

 

 

 

model

๋”๋ณด๊ธฐ

 

model.addAttribute("name",name);

Model ๊ฐ์ฒด๋Š” Controller ์—์„œ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„ View๋กœ ์ „๋‹ฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด์ด๋‹ค.

addAttribute("key", "value") ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด view์— ์ „๋‹ฌํ•  ๋ฐ์ดํ„ฐ๋ฅผ key, valueํ˜•์‹์œผ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.



Model ๊ฐ์ฒด๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›๋Š”๋‹ค.

model.addAttribute("๋ณ€์ˆ˜์ด๋ฆ„", "๋ณ€์ˆ˜์— ๋„ฃ์„ ๋ฐ์ดํ„ฐ๊ฐ’");

model.addAttribute๋ฅผ ์ด์šฉํ•ด์„œ, ๋„˜๊ธธ ๋ฐ์ดํ„ฐ์˜ ์ด๋ฆ„๊ณผ ๊ฐ’์„ ๋„ฃ๋Š”๋‹ค.
๊ทธ๋Ÿฌ๋ฉด, ์Šคํ”„๋ง์€ ๊ทธ ๊ฐ’์„ ๋ทฐ ์ชฝ์œผ๋กœ ๋„˜๊ฒจ์ค€๋‹ค.

 

 

ํšŒ์› ๋“ฑ๋ก

 

 

ํšŒ์› ์กฐํšŒ

๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๋ฅผ ๋‹ค์‹œ ๊ป๋‹ค ์ผœ๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์ง€์›Œ์ง„๋‹ค 

 

๋ฐ์ดํ„ฐ๋“ค์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•ด์•ผ ํ•œ๋‹ค 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Spring > Spring ์ž…๋ฌธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์Šคํ”„๋ง ์ž…๋ฌธ - (15) ์Šคํ”„๋ง ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ  (0) 2023.01.27
์Šคํ”„๋ง ์ž…๋ฌธ - (14) ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ  / ์ˆœ์ˆ˜ Jdbc  (0) 2023.01.26
์Šคํ”„๋ง ์ž…๋ฌธ - (12) ์ปดํฌ๋„ŒํŠธ ์Šค์บ”๊ณผ ์ž๋™ ์˜์กด๊ด€๊ณ„ ์„ค์ •  (0) 2023.01.21
์Šคํ”„๋ง ์ž…๋ฌธ - (11) ํšŒ์› ์„œ๋น„์Šค ํ…Œ์ŠคํŠธ  (0) 2023.01.20
์Šคํ”„๋ง ์ž…๋ฌธ - (10) ํšŒ์› ์„œ๋น„์Šค ๊ฐœ๋ฐœ  (0) 2023.01.20
'Spring/Spring ์ž…๋ฌธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ์Šคํ”„๋ง ์ž…๋ฌธ - (15) ์Šคํ”„๋ง ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ
  • ์Šคํ”„๋ง ์ž…๋ฌธ - (14) ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ  / ์ˆœ์ˆ˜ Jdbc
  • ์Šคํ”„๋ง ์ž…๋ฌธ - (12) ์ปดํฌ๋„ŒํŠธ ์Šค์บ”๊ณผ ์ž๋™ ์˜์กด๊ด€๊ณ„ ์„ค์ •
  • ์Šคํ”„๋ง ์ž…๋ฌธ - (11) ํšŒ์› ์„œ๋น„์Šค ํ…Œ์ŠคํŠธ
hello_u
hello_u
  • hello_u
    ๐Ÿ˜œ
    hello_u
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐Ÿ˜œ (345)
      • Hardware (2)
        • BMC (2)
      • Spring (109)
        • Spring ์ž…๋ฌธ (20)
        • Spring ๊ธฐ๋ณธ (27)
        • Spring MVC (18)
        • Spring DB (22)
        • Spring JPA ๊ธฐ๋ณธ (16)
        • Spring JPA ํ™œ์šฉ (6)
      • Develop (27)
        • DB (8)
        • JAVA (4)
        • Web (2)
        • Python (7)
        • OSS (2)
        • Git (2)
        • API (2)
      • Algorithm (155)
        • CodeUp ๊ธฐ์ดˆ (44)
        • ํŒŒ์ด์ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (64)
        • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (4)
        • SWEA (30)
        • Softeer (10)
        • BOJ (2)
      • CS (9)
        • ์ปดํ“จํ„ฐ์ผ๋ฐ˜ (3)
        • ์šด์˜์ฒด์ œ (3)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (0)
        • ์ •๋ณดํ†ต์‹  (1)
        • ์ž๋ฃŒ๊ตฌ์กฐ (1)
        • ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ (1)
        • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (0)
        • ์ตœ์‹  ๋””์ง€ํ„ธ, ์ผ๋ฐ˜์ƒ์‹ (0)
      • ์ž๊ฒฉ์ฆ (41)
        • ์ •๋ณด๋ณด์•ˆ๊ธฐ์‚ฌ (9)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (22)
        • ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 1๊ธ‰ (3)
        • SQLD (7)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
hello_u
์Šคํ”„๋ง ์ž…๋ฌธ - (13) ํšŒ์› ์›น ๊ธฐ๋Šฅ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”