๐Ÿ“ Language

    [Spring][ํ˜ผ๊ณต] 4. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ - API (3)

    [Spring][ํ˜ผ๊ณต] 4. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ - API (3)

    ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ 3. API MVC๋Š” ๋ณ€ํ™˜๋œ html์„ ์›น ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์ด๊ณ  (xml) API๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๋กœ ๊ทธ๋Œ€๋กœ ๋‚ด๋ ค์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค. (json) 1) ๋ฌธ์ž ๋ฐ˜ํ™˜ Controller ๊ธฐ์กด์— ๊ตฌํ˜„ํ•œ HelloController ์•ˆ์— ์ƒˆ๋กœ์šด ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด๋‹ค. viewResolver๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  HTTP์˜ ์‘๋‹ต body์— ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ๋ฐ˜ํ™˜ํ•  ๊ฒƒ์ด๋‹ค. (@ResponseBody) @GetMapping("hello-string") @ResponseBody public String helloString(@RequestParam("name") String name) { return "hello " + name; } ์‹คํ–‰ ํ™”๋ฉด ์ด์ „์— ์ž‘์—…ํ–ˆ๋˜ MVC ๋ฐฉ์‹๊ณผ ๋ณ„ ์ฐจ์ด๊ฐ€ ์—†์–ด ๋ณด์ธ๋‹ค. ํ•˜..

    [Spring][ํ˜ผ๊ณต] 4. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ - MVC์™€ ํ…œํ”Œ๋ฆฟ ์—”์ง„ (2)

    [Spring][ํ˜ผ๊ณต] 4. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ - MVC์™€ ํ…œํ”Œ๋ฆฟ ์—”์ง„ (2)

    ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ 2. MVC์™€ ํ…œํ”Œ๋ฆฟ ์—”์ง„ MVC๋ž€ Model, View, Controller๋ฅผ ๋งํ•œ๋‹ค. ๊ณผ๊ฑฐ์—๋Š” Controller์™€ View๊ฐ€ ๋”ฐ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์ง€ ์•Š์•˜๊ณ  View์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค ์ฒ˜๋ฆฌํ–ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์„ ๋ชจ๋ธ 1 ๊ตฌ์กฐ๋ผ๊ณ  ํ•˜๊ณ  JSP์—์„œ ์‚ฌ์šฉ๋˜์—ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ๋•Œ ๊ด€์‹ฌ์‚ฌ๋‚˜ ์—ญํ• ์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. View๋Š” ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š”๋ฐ ์ง‘์ค‘ํ•ด์•ผ ํ•˜๊ณ  Controller๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด๋‚˜ ์„œ๋ฒ„๋‚˜ ๋‚ด๋ถ€์ ์ธ ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์ง‘์ค‘ํ•ด์•ผ ํ•˜๊ณ  Model์€ ํ™”๋ฉด์—์„œ ํ•„์š”ํ•œ ๊ฒƒ๋“ค์„ ์ €์žฅํ•˜๊ณ  ํ™”๋ฉด์— ์ „๋‹ฌํ•˜๋Š”๋ฐ ์ง‘์ค‘ํ•ด์•ผ ํ•œ๋‹ค. 1) ์ ์šฉ Controller ๊ธฐ์กด์— ๊ตฌํ˜„ํ•œ HelloController ์•ˆ์— ์ƒˆ๋กœ์šด ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด๋‹ค. ์ด์ „์— ๊ตฌํ˜„ํ•œ ๋ฉ”์„œ๋“œ๋Š” ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ๋ฐ›์•„์™”๋‹ค. ..

    [Spring][ํ˜ผ๊ณต] 4. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ - ์ •์  ์ปจํ…์ธ  (1)

    [Spring][ํ˜ผ๊ณต] 4. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ - ์ •์  ์ปจํ…์ธ  (1)

    ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ ์›น ๊ฐœ๋ฐœ์€ ํฌ๊ฒŒ 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•œ๋‹ค. ์ •์  ์ปจํ…์ธ  ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ์ž‘์—… ์—†์ด ๋‹จ์ง€ ํŒŒ์ผ์„ ์›น๋ธŒ๋ผ์šฐ์ €๋กœ ๋‚ด๋ ค์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค. Welcome ํŽ˜์ด์ง€ MVC์™€ ํ…œํ”Œ๋ฆฟ ์—”์ง„ ๊ฐ€์žฅ ๋งŽ์ด ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ(C), ๋ชจ๋ธ(M), ํ…œํ”Œ๋ฆฟ ์—”์ง„์˜ ํ™”๋ฉด(V)์„ ์‚ฌ์šฉํ•œ๋‹ค. ํ…œํ”Œ๋ฆฟ ์—”์ง„(JSP, PHP): HTML์„ ์„œ๋ฒ„์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜์—ฌ ๋™์ ์œผ๋กœ ๋ฐ”๊ฟ”์„œ ๋‚ด๋ ค์ค€๋‹ค. API ์„œ๋ฒ„์—์„œ Json๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ํฌ๋งท์„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์•ˆ๋“œ๋กœ์ด๋“œ๋‚˜ ์•„์ดํฐ ๊ฐœ๋ฐœ ์‹œ์— ์‚ฌ์šฉํ•œ๋‹ค. ์„œ๋ฒ„์™€ ์„œ๋ฒ„ ์‚ฌ์ด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ API ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค. 1. ์ •์  ์ปจํ…์ธ  ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ์ •์  ์ปจํ…์ธ  ๊ธฐ๋Šฅ์„ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค. 1) ๋™์ž‘ ๋ฐฉ์‹ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์–ด๋–ค ํŽ˜์ด์ง€๋ฅผ ๋˜์ง€๋ฉด ๋‚ด์žฅ ํ†ฐ์บฃ ์„œ..

    [Spring][ํ˜ผ๊ณต] 3. ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค์–ด๋ณด๊ธฐ - ๋นŒ๋“œ ๋ฐ ์‹คํ–‰ (4)

    [Spring][ํ˜ผ๊ณต] 3. ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค์–ด๋ณด๊ธฐ - ๋นŒ๋“œ ๋ฐ ์‹คํ–‰ (4)

    ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค์–ด๋ณด๊ธฐ 3. ๋นŒ๋“œ ๋ฐ ์‹คํ–‰ ์ง€๊ธˆ๊นŒ์ง€๋Š” IDE ์•ˆ์—์„œ ์‹คํ–‰ํ•˜์˜€๋Š”๋ฐ ์ด์   ๋นŒ๋“œ๋ฅผ ํ•œ ํ›„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด๋ณผ ๊ฒƒ์ด๋‹ค. 1) ์‹คํ–‰ ์ˆœ์„œ ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ(cmd)๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์˜ ๋ฃจํŠธ ํด๋” ์œ„์น˜๋กœ ์ด๋™ํ•œ๋‹ค. (cd ...\hello.spring) gradlew๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋นŒ๋“œ๊ฐ€ ์™„๋ฃŒ๋œ๋‹ค. (gradlew build) ๋งŒ๋“ค์–ด์ง„ ๋นŒ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„  ๋นŒ๋“œ ํด๋” ์•ˆ์— libs๋กœ ์ด๋™ํ•œ๋‹ค. (cd build/libs) ์ž๋ฐ” ๋ช…๋ น์–ด๋กœ ์‹คํ–‰์‹œํ‚จ๋‹ค. (java -jar hello-spring-0.0.1-SNAPSHOT.jar) ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋นŒ๋“œ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. 2) CMD ๋ช…๋ น์–ด dir: ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. gradlew clean: ๋นŒ๋“œ ํด๋”๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค. Ctrl+C:..

    [Spring][ํ˜ผ๊ณต] 3. ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค์–ด๋ณด๊ธฐ - View ํ™˜๊ฒฝ ์„ค์ • (3)

    [Spring][ํ˜ผ๊ณต] 3. ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค์–ด๋ณด๊ธฐ - View ํ™˜๊ฒฝ ์„ค์ • (3)

    ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค์–ด๋ณด๊ธฐ 2. View ํ™˜๊ฒฝ ์„ค์ • ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์—๋Ÿฌ ํŽ˜์ด์ง€๋งŒ ๋‚˜ํƒ€๋‚˜๋Š”๋ฐ, ์ด ํŽ˜์ด์ง€๋ฅผ ๋ฐ”๊ฟ”๋ณผ ๊ฒƒ์ด๋‹ค. 1) Welcome ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ Welcome ํŽ˜์ด์ง€๋ž€ ๋„๋ฉ”์ธ์„ ์ž…๋ ฅํ•˜๊ณ  ๋“ค์–ด์™”์„ ๋•Œ ๋‚˜ํƒ€๋‚˜๋Š” ์ฒซ ํŽ˜์ด์ง€๋ฅผ ๋งํ•œ๋‹ค. ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” resources/static ํ•ด๋‹น ํด๋” ์œ„์น˜์— index.html๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ํ•ด๋‹น ํŒŒ์ผ์„ Welcome ํŽ˜์ด์ง€๋กœ ์ธ์‹ํ•œ๋‹ค. ์ง€๊ธˆ Welcome ํŽ˜์ด์ง€์˜ ์ƒํƒœ๋Š” ์ •์  ํŽ˜์ด์ง€ ์ƒํƒœ์ธ๋ฐ, html ํŒŒ์ผ์„ ์›น์„œ๋ฒ„๊ฐ€ ์ฝ์–ด๊ฐ„ ํ›„ ๋‹จ์ง€ ๋ณด์—ฌ์ฃผ๊ธฐ๋งŒ ํ•˜๊ณ  ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ…œํ”Œ๋ฆฟ ์—”์ง„์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ๋ชจ์–‘์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. 2) thymeleaf ํ…œํ”Œ๋ฆฟ ์—”์ง„ ๋™์ž‘ ๋ฐฉ์‹ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์–ด๋–ค ํŽ˜์ด์ง€๋ฅผ ๋˜์ง€๋ฉด ๋‚ด์žฅ ํ†ฐ์บฃ ์„œ๋ฒ„๊ฐ€ ๋ฐ›์•„์„œ ์Šคํ”„๋งํ•œํ…Œ ์ „๋‹ฌํ•œ๋‹ค...

    [Spring][ํ˜ผ๊ณต] 3. ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค์–ด๋ณด๊ธฐ - ๊ธฐ๋ณธ ์„ค์ • (2)

    [Spring][ํ˜ผ๊ณต] 3. ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค์–ด๋ณด๊ธฐ - ๊ธฐ๋ณธ ์„ค์ • (2)

    ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค์–ด๋ณด๊ธฐ 1. ๊ธฐ๋ณธ ์„ค์ • 4) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฒ˜์Œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์„ ํƒํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” 2๊ฐ€์ง€์ด๋‹ค. spring web: ์›น ํ”„๋กœ์ ํŠธ thymeleaf: HTML ๋งŒ๋“ค์–ด์ฃผ๋Š” ํ…œํ”Œ๋ฆฟ ์—”์ง„ test: ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋˜๋Š” Test ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ 3๊ฐ€์ง€๋ฐ–์— ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ์‹ค์ œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋“ค์–ด๊ฐ€ ๋ณด๋ฉด ์ˆ˜๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ์žˆ๋‹ค. ์™œ ์ด๋ ‡๊ฒŒ ๋งŽ์„๊นŒ? ๊ทธ๋ž˜๋“ค๊ณผ ๊ฐ™์€ ๋นŒ๋“œ ๋„๊ตฌ๋Š” ์˜์กด ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ•จ๊ป˜ ๋‹ค์šด๋กœ๋“œํ•œ๋‹ค. ์–ด๋–ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๊ด€๋ จ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๋˜ ์–ด๋–ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๊ด€๋ จ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ... ์ด ์ž‘์—…์„ ๋ฐ˜๋ณตํ•˜์—ฌ ์ˆ˜๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ์ง€๊ฒŒ ๋œ๋‹ค. spring-boot-starter-web spring-boot-starter-tomcat: ๋‚ด์žฅ ์›น์„œ..