[ Hello,World ์ถœ๋ ฅํ•˜๊ธฐ ]

 

Spring - [IntelliJ] Hello World ์ถœ๋ ฅํ•˜๊ธฐ

[ Spring MVC์— ๋Œ€ํ•˜์—ฌ ] Spring - Spring MVC๋ฅผ ์•Œ์•„์•ผ ์‹œ์ž‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.์ฒ˜์Œ์—” ๋Œ€์ถฉ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•ด๋ณด๋ คํ–ˆ์ง€๋งŒ,์ด๋Ÿด์ˆ˜๊ฐ€! ์•„๋Š” ๊ฒƒ์ด ๋ฏธ์•ฝํ•˜๋‹ˆ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค.๊ทธ๋ž˜์„œ ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์œผ๋กœ ์•Œ์•„์•ผํ•˜๋Š”

post-this.tistory.com

 


 

 

 

๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด Hello,World!
๐ŸŒง๏ธ

 

 

 

 

1. ๋™์ž‘ํ™”๋ฉด๊ณผ ์ฝ”๋“œ

 

 

๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด

 

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">

<head>
    <meta charset="UTF-8">
    <title>๊ฐ„๋‹จํ•œ ๋ฒ„ํŠผ ์˜ˆ์ œ</title>
</head>

<body>
<h2 th:text="${message}">message</h2>

<form th:action="@{/hello}" method="get">
    <button type="submit">๋ฒ„ํŠผ</button>
</form>

</body>

</html>

 

 

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@Controller
public class HelloController {


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

    @GetMapping("/hello")
    public String helloWorld(Model model) {
        model.addAttribute("message", "Hello, World!");
        return "button";
    }

}

 

 

 

 


 

 

 

 

 

2. ํƒ€์ž„๋ฆฌํ”„ dependencies ์ถ”๊ฐ€ํ•˜๊ธฐ.

 

ํƒ€์ž„๋ฆฌํ”„(Thymeleaf)์— ๋Œ€ํ•ด์„œ ์„ค๋ช…์„ ๊ฐ„๋žตํ•˜๊ฒŒ ํ•ด๋ณด์ž๋ฉด, ์ˆœ์ˆ˜ํ•œ HTML์„ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค. ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ๋ทฐ ํƒฌํ”Œ๋ฆฟ์„ ๊ฑฐ์น˜๋ฉด ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ๋œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ผํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ˆœ์ˆ˜ํ•œ HTML์„ ์œ ์ง€ํ•˜์—ฌ ๋ณด์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋„ค์ธ„๋Ÿด ํ…œํ”Œ๋ฆฟ(natural templates) ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋ณดํ†ต Spring MVC์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

 

 

โ–ก build.gradle๋ฅผ ์ฐพ์•„ ๋ˆ„๋ฅธ๋‹ค.

 

 

 

โ–ก ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•œ๋‹ค.

implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'

 

 

 

โ–ก dependencies์— ๋ถ™์—ฌ๋„ฃ๋Š”๋‹ค.

 

 

 

โ–ก ์ƒˆ๋กญ๊ฒŒ ์„ธํŒ…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด ์ฝ”๋ผ๋ฆฌ(?)๋ฅผ ๋ˆŒ๋Ÿฌ์ค€๋‹ค.

 

 

 

โ–ก ์ œ๋Œ€๋กœ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

 

 

 

 

 


 

 

 

 

 

3. HTML์„ ํ†ตํ•ด ๋ฒ„ํŠผ ๋งŒ๋“ค๊ธฐ.

 

 

โ–ก ์ „์ฒด ์ฝ”๋“œ

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">

<head>
    <meta charset="UTF-8">
    <title>๊ฐ„๋‹จํ•œ ๋ฒ„ํŠผ ์˜ˆ์ œ</title>
</head>

<body>
<h2 th:text="${message}">message</h2>

<form th:action="@{/hello}" method="get">
    <button type="submit">๋ฒ„ํŠผ</button>
</form>

</body>

</html>

 

 

 

โ–ก resources ๋ฐ‘์— ์žˆ๋Š” templates์— button.html์„ ๋งŒ๋“ค์–ด์ค€๋‹ค.

    • ๋งŒ์ผ ์—†๋‹ค๋ฉด templates๋ฅผ directory๋กœ ๋จผ์ € ๋งŒ๋“ค์–ด์ค€ ํ›„ ํ•˜์œ„์— button.html์„ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค.

 

 

 

โ–ก HTML์„ ํƒ€์ž„๋ฆฌํ”„ ํ†ตํ•ด์„œ ์ž‘๋™๋˜๋„๋ก ํ•ด์ค€๋‹ค.

<html lang="en" xmlns:th="http://www.thymeleaf.org">

 

๋’ค์— xmlns:th="htttp://www/thymeleaf.org" ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค.

 

 

 

โ–ก ํƒ€์ดํ‹€ ์ž‘์„ฑํ•˜๊ธฐ.

<title>๊ฐ„๋‹จํ•œ ๋ฒ„ํŠผ ์˜ˆ์ œ</title>

 

 

 

 

โ–ก <body> ์ž‘์„ฑํ•˜๊ธฐ.

 

์ž‘์„ฑํ•˜๊ธฐ ์ „์— ์•Œ์•„์•ผ ํ•  ๋ถ€๋ถ„์ด ์žˆ๋‹ค. ๋ฐ”๋กœ th๋ผ๋Š” ๊ฒƒ์ธ๋ฐ, th๋Š” ํƒ€์ž„๋ฆฌํ”„๋กœ ๋™์ ์œผ๋กœ ์ž‘์šฉํ•ด์•ผํ•˜๋Š” ๋ถ€๋ถ„์— ๋ถ™์—ฌ์„œ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค. ์ฆ‰ ํƒ€์ž„๋ฆฌํ”„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ xmlns:th="htttp://www/thymeleaf.org"์„ ์ •์˜ํ•˜๊ณ , ๋™์ ์œผ๋กœ ์ž‘์šฉํ•ด์•ผํ•  ๋ถ€๋ถ„์— th๋ฅผ ์ ์–ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ทธ ๋ถ€๋ถ„์€ ์ˆœ์ˆ˜ํ•œ HTML์„ ์œ ์ง€ํ•˜๋ฉฐ ๋™์ ์œผ๋กœ ๋ณ€ํ™”ํ•ด์ค„ ๊ฒƒ์ด๋‹ค.

 

<h2 th:text="${message}">message</h2>

 

์ฒซ ํ™”๋ฉด์—” ๋ฒ„ํŠผ๋งŒ ์žˆ๊ณ  ํ…์ŠคํŠธ๊ฐ€ ์—†์—ˆ๋‹ค. ๋‘๋ฒˆ์งธ ํ™”๋ฉด์—์„œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ ํ›„ ๋ฉ”์„ธ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚ฌ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด ๋ถ€๋ถ„์€ ๋™์ ์œผ๋กœ ์›€์ง์ธ ๊ฒƒ์ด๋‹ˆ th๋ฅผ ๋ถ™์—ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์ค€๋‹ค.

 

HTML์€ ${message}๋ฅผ ํ†ตํ•ด Controller์™€ ์—ฐ๊ฒฐํ•  ๊ฒƒ์ด๋‹ค. ${ }๋Š” ๋ณ€์ˆ˜ ํ‘œํ˜„์‹์ด๋ฉฐ Controller์—์„œ ์ „๋‹ฌ๋œ message๋ผ๋Š” ๋ณ€์ˆ˜๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Controller์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ message๋กœ ์ „๋‹ฌํ•˜์—ฌ h2 ๋ถ€๋ถ„์— ์›ํ•˜๋Š” ํ…์ŠคํŠธ๊ฐ€ ๋ณด์ด๊ฒŒ ๋œ๋‹ค.

 

 

 

 

 

โ–ก <form> ์ž‘์„ฑํ•˜๊ธฐ.

 

form์€ ์ฃผ๋กœ ์‚ฌ์šฉ์ž์˜ ์˜๊ฒฌ์ด๋‚˜ ์ •๋ณด๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด ์ž…๋ ฅํ•  ํฐ ํ‹€์„ ๋งŒ๋“œ๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค. form์€ ์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ์„œ๋ฒ„๋กœ ์ „์†กํ•œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋ณด๋‚ด์ง„ ๋ฐ์ดํ„ฐ๋Š” ์›น ์„œ๋ฒ„๊ฐ€ ์ฒ˜๋ฆฌํ•˜๊ณ , ๊ฒฐ๊ณผ์— ๋”ฐ๋ฅธ ์›นํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ฒŒ ๋œ๋‹ค. 

<form th:action="@{/hello}" method="get">
    <button type="submit">๋ฒ„ํŠผ</button>
</form>

 

form์—์„œ th๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ๊ทธ ์ด์œ ๋ฅผ ์‚ดํŽด๋ณด๋ฉด action=@{/hello}์— ๋Œ€ํ•ด์„œ ์•Œ์•„์•ผํ•œ๋‹ค. ์•„๊นŒ ๋ณ€์ˆ˜ ํ‘œํ˜„์‹์ธ $์™€ ๋‹ค๋ฅด๊ฒŒ @๋กœ ๋ชจ์–‘์ด ๋‹ค๋ฅด๋‹ค. @{ }๋Š” URL ํ‘œํ˜„์‹์œผ๋กœ ์ฃผ๋กœ ๋งํฌ๋‚˜ form์—์„œ action๊ณผ ํ•จ๊ป˜ ์“ฐ์ธ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด action์€ ๋ฌด์—‡์ผ๊นŒ? action์€ form์„ ์ „์†กํ•  ์„œ๋ฒ„์ชฝ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ข€ ๋” ์ง๊ด€์ ์ด๊ฒŒ ๋งํ•ด๋ณด์ž๋ฉด Controller์—์„œ GetMapping(๋“ค์–ด์˜จ ๊ฒฝ๋กœ์— ๋งž์ถฐ ๋ฐ˜ํ™˜ํ•  ํŽ˜์ด์ง€๋ฅผ ์ „์†ก)์— ์‚ฌ์šฉํ•  '๋“ค์–ด์˜จ ๊ฒฝ๋กœ'์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค. 

 

๋‹ค์‹œ ์ •๋ฆฌํ•ด๋ณด์ž. action์€ Controller์˜ ๋ฉ”์„œ๋“œ ์ค‘ ์–ด๋А ๊ฒƒ๊ณผ ์—ฐ๊ฒฐํ• ์ง€, ์ฆ‰ ์ด form์ด action ์†์„ฑ์„ ํ†ตํ•ด ์–ด๋А ํŽ˜์ด์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ์™€ ์—ฐ๊ฒฐํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด action์— ์ ์€ ๊ฒฝ๋กœ๋ฅผ ํ†ตํ•ด form์ด ์„œ๋ฒ„์— ์ „์†กํ•˜๋Š” ๋™์ ์ธ ์›€์ง์ž„์„ ๊ฐ€์ง€๊ธฐ์— th๋ฅผ ๋ถ™์—ฌ ํƒ€์ž„๋ฆฌํ”„๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์—ฐ๊ฒฐํ•œ ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋Ÿฌ๋ฉด ์ด๋•Œ ์ด ์ •๋ณด๋ฅผ ์ „์†กํ•  ๋•Œ ์–ด๋–ค ๋ฐฉ์‹์„ ์„ ํƒํ• ์ง€ ๊ณ ๋ฅผ ์ˆ˜ ์žˆ๋‹ค. get ๋ฐฉ์‹๊ณผ post ๋ฐฉ์‹์ด ์žˆ๋Š”๋ฐ, ์ด์— ๋Œ€ํ•œ ๋ถ€๋ถ„์€ ๋ธ”๋กœ๊ทธ์— ๋”ฐ๋กœ ์ •๋ฆฌํ•ด๋†จ์œผ๋‹ˆ ๊ฐ„๋žตํ•˜๊ฒŒ๋งŒ ์„ค๋ช…ํ•˜๊ณ  ๋„˜์–ด๊ฐ€๊ฒ ๋‹ค. get์€ URL์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„ ์ „์†กํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ฃผ์†Œ์ฐฝ์„ ๋ณด๋ฉด ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

hello?๋ผ๊ณ  ์ ํ˜€์žˆ๋‹ค.



 

 

[ GET๊ณผ POST ]

 

SpringBoot - GET๊ณผ POST ๊ทธ๋ฆฌ๊ณ  @GetMapping

[ @Controller์™€ @RestController ] Spring - @Controller์™€ @RestController ๊ทธ๋ฆฌ๊ณ  ์ƒํƒœ์ฝ”๋“œ[ SpringMVC์— ๋Œ€ํ•˜์—ฌ ] Spring - Spring MVC๋ฅผ ์•Œ์•„์•ผ ์‹œ์ž‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.์ฒ˜์Œ์—” ๋Œ€์ถฉ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•ด๋ณด๋ คํ–ˆ์ง€๋งŒ,์ด๋Ÿด์ˆ˜๊ฐ€!

post-this.tistory.com

 

 

์ด์ œ ๋ฒ„ํŠผ์„ ์•Œ์•„๋ณด๊ฒ ๋‹ค.

<form th:action="@{/hello}" method="get">
    <button type="submit">๋ฒ„ํŠผ</button>
</form>

 

๋ฒ„ํŠผ์„ ๋งŒ๋“œ๋Š”๋ฐ type์„ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. type์€ 3๊ฐœ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋Š”๋ฐ submit , button , reset ์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ํ˜„์žฌ ์ˆœ์ˆ˜ํ•œ HTML์„ ๊ฐ€์ง€๊ณ  ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ํด๋ฆญ(onclick)์ด๋ผ๋Š” ๋™์ž‘์ด ํฌํ•จ๋˜์–ด์žˆ๋Š” ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค์–ด์•ผ ๋” ํšจ์œจ์ ์ด๋‹ค. ๊ทธ๋ž˜์„œ submit๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ onclick์ด ์—†์–ด๋„ submit์œผ๋กœ ๊ฒฐ์ •ํ•˜๋ฉด form ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ƒฅ ์ „์†ก์‹œํ‚จ๋‹ค.(๋งŒ์•ฝ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ํ•จ๊ป˜ ์˜ˆ์ œ๋ฅผ ๋งŒ๋“ ๋‹ค๋ฉด button type์œผ๋กœ ์„ ํƒํ•˜๋ฉด ๋œ๋‹ค.)

 

 

 


 

 

 

4. HelloController

 

 

โ–ก ์ „์ฒด ์ฝ”๋“œ

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@Controller
public class HelloController {


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

    @GetMapping("/hello")
    public String helloWorld(Model model) {
        model.addAttribute("message", "Hello, World!");
        return "button";
    }

}

 

 

 

โ–ก  ์ฒ˜์Œ ๋“ค์–ด๊ฐ”์„ ๋•Œ ํ™”๋ฉด ๋งŒ๋“ค๊ธฐ.

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

 

GetMapping("/")์—์„œ "/"๋Š” ๋ฃจํŠธ ๊ฒฝ๋กœ๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ฃจํŠธ ๊ฒฝ๋กœ๋กœ ๋“ค์–ด์˜ค๋ฉด button ํ™”๋ฉด์œผ๋กœ ๋ฐ˜ํ™˜ํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์•„๊นŒ ์œ„์— ์žˆ๋˜ HTML์„ ๋‹ค์‹œ ์‚ดํŽด๋ณด์ž. ๋ฒ„ํŠผ์ด ๋ˆŒ๋ ค์•ผ ๋ฉ”์„ธ์ง€๊ฐ€ ํ˜ธ์ถœ๋˜๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค. ๊ฒฝ๋กœ๋ฅผ ๋ณด๋ฉด ๋ฃจํŠธ ๊ฒฝ๋กœ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€์— ๋“ค์–ด์™”์„ ๊ฒฝ์šฐ(์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š์€)์— ํ•ด๋‹นํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์•„์ง ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ธฐ ์ „์ด๋‹ˆ, ๋™์ ์ธ th๋กœ ์ž‘์„ฑํ•œ ๋ถ€๋ถ„์„ ์ œ์™ธํ•˜๋ฉด submit ํƒ€์ž…์œผ๋กœ ์„ค์ •ํ•ด๋‘” ๋ฒ„ํŠผ๋งŒ ๋„์›Œ์ค˜์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

 

๋ฒ„ํŠผ๋งŒ ์žˆ์œผ๋ฉด์„œ, ๋ฃจํŠธ ๊ฒฝ๋กœ์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

โ–ก  ๋ฒ„ํŠผ์ด ๋ˆŒ๋ ธ์„ ๊ฒฝ์šฐ, ๋ฉ”์„ธ์ง€๋ฅผ ๋„ฃ์–ด ํ™”๋ฉด ๋ฐ˜ํ™˜ํ•˜๊ธฐ.

@GetMapping("/hello")
public String helloWorld(Model model) {
	model.addAttribute("message", "Hello, World!");
	return "button";
}

 

HTML์—์„œ submit ๋ฐฉ์‹์„ ํ†ตํ•ด, ๋ˆ„๋ฅด๋ฉด ๋ฐ”๋กœ form์ด ์ „์†ก๋˜๋Š” button์„ ๋งŒ๋“ค์—ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ  /hello ๊ฒฝ๋กœ๋ฅผ ๊ฐ€์ง„ action์„  Get ์š”์ฒญ์œผ๋กœ ์ „์†ก๋˜๋ฉด, ์—ฌ๊ธฐ @GetMapping("/hello")์—์„œ ๋ฐ›์•„ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค. 

 

Model์ด ์žˆ๋‹ค. Model์€ SpringMVC์—์„œ ๋ทฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด์ด๋‹ค. ์ฆ‰ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋ทฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. Model์€ ํƒ€์ž„๋ฆฌํ”„, JSP์™€ ๊ฐ™์€ ํ…œํ”Œ๋ฆฟ ์—”์ง„๊ณผ ๊ด€๊ณ„์—†์ด ์ž‘๋™๋œ๋‹ค. model์€ Model ํƒ€์ž…์œผ๋กœ ์ „๋‹ฌ๋˜๋ฉฐ addAtrribute๋ฅผ ํ†ตํ•ด ์†์„ฑ์„ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•ด๋‹น ์ฝ”๋“œ์—์„œ ํ‚ค๋Š” message, ์‹ค์ œ ๋ฐ์ดํ„ฐ ๊ฐ’์€ Hello, World!๋ผ๊ณ  ์ •ํ–ˆ๋‹ค.

 

์ด์ œ ์ด ์†์„ฑ์€ ๋‹ค์‹œ button์ด๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ HTML๋กœ ์ „๋‹ฌ๋  ๊ฒƒ์ด๋‹ค. HTML ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์‚ดํŽด๋ณด๋ฉด ${message}์ด ๋ถ€๋ถ„์— Hello, World!๊ฐ€ ์˜ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

 

 

 


 

 

๐Ÿชฝ

"ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

 

 

 

[ ๋ธ”๋กœ๊ทธ์— ์“ด ๋‚ด์šฉ๋“ค์˜ ์ถœ์ฒ˜๋Š” ์•„๋ž˜์— ์ ์–ด๋‘˜ํ…Œ๋‹ˆ

๋“ค์–ด๊ฐ€์„œ ์ฝ์–ด๋ณด์‹œ๋ฉด ๋”์šฑ ๋„์›€์ด ๋˜์‹ค ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค ]

 

 


 

 

 

 

- ํƒ€์ž„๋ฆฌํ”„ ์ถœ์ฒ˜

 

Thymeleaf(ํƒ€์ž„๋ฆฌํ”„)๋ž€ ? ํƒ€์ž„๋ฆฌํ”„์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์•Œ์•„๋ณด๊ธฐ

Thymeleaf(ํƒ€์ž„๋ฆฌํ”„)๋ž€ ? ํƒ€์ž„๋ฆฌํ”„๋Š” JSP, Freemarker์™€ ๊ฐ™์€ ํ…œํ”Œ๋ฆฟ ์—”์ง„์˜ ์ผ์ข…์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์‚ฌ์ด๋“œ HTML ๋ Œ๋”๋ง (SSR) ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์—์„œ HTML์„ ๋™์ ์œผ๋กœ ๋ Œ๋”๋ง ํ•˜๋Š” ์šฉ

hstory0208.tistory.com

 

 

 

- ํƒ€์ž„๋ฆฌํ”„ ์ถœ์ฒ˜

 

์Šคํ”„๋ง ํƒ€์ž„๋ฆฌํ”„(Thymleaf) ํ•œ๋ˆˆ์— ์ •๋ฆฌํ•˜๊ธฐ

ํƒ€์ž„๋ฆฌํ”„๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์ „์— ํ™•์ธํ•ด์•ผํ•  ์ •๋ณด 1.ํƒ€์ž„๋ฆฌํ”„ ์˜์กด์„ฑ์ด ์ œ๋Œ€๋กœ ์ฃผ์ž…๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ํƒ€์ž„๋ฆฌํ”„๋ฅผ '์ œ๋Œ€๋กœ' ์“ฐ๋ ค๋ฉด ์‹œ์ž‘ํ•˜๊ธฐ์ „์— ํƒ€์ž„๋ฆฌํ”„๊ฐ€ ์ œ๋Œ€๋กœ ์„ค์น˜๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜์ž. 2. M

taehoung0102.tistory.com

 

 

 

- form ์ถœ์ฒ˜

 

HTML : ํผ(form) ์ดํ•ด

ํผ์€ ์•Œ๊ฒŒ ๋ชจ๋ฅด๊ฒŒ ์›น์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์˜๊ฒฌ์ด๋‚˜ ์ •๋ณด๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด ์ž…๋ ฅํ•  ํฐ ํ‹€์„ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํผ์€ ์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ์„œ๋ฒ„๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์ „์†กํ•œ ๋ฐ์ด

www.nextree.co.kr

 

 

 

-form๊ณผ GET ์ถœ์ฒ˜

 

[Html] form ํƒœ๊ทธ์™€ input ์š”์†Œ๋“ค, GET / POST ๋ฐฉ์‹

โšก๏ธ form html์˜ ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ธ form์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์Œ์— ์žˆ์–ด์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. form ํƒœ๊ทธ ์•ˆ์— ์‚ฝ์ž…ํ•œ submit ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ๋™๋˜๋ฉด, ์ •์˜๋œ method ์†์„ฑ type์œผ๋กœ action์„ ํ†ตํ•ด ๋ชฉ

lasbe.tistory.com

 

 

 

 

+ Recent posts