๋ฐ˜์‘ํ˜•

๋ฏธ๋‹ˆPC์—์„œ ์‹ค์Šตํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์ง€๋งŒ,
๊ธฐ๊ธฐ๋ฅผ ์™”๋‹ค ๊ฐ”๋‹ค ํ•˜๋ฉด์„œ ์ž‘์—…ํ•˜๋Š” ๊ฑด ๋„ˆ๋ฌด ๋ฒˆ๊ฑฐ๋กญ๋‹ค.
๊ทธ๋ž˜์„œ Mac์—์„œ ์ง‘์— ์žˆ๋Š” Ubuntu PC๋กœ SSH ์ ‘์†ํ•˜๋Š” ํ™˜๊ฒฝ์„ ๋งŒ๋“ค์–ด๋ดค๋‹ค.

โ˜ผ OpenSSH ๋Š” ssh ์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ ํŒจํ‚ค์ง€, ssh๋Š” ์›๊ฒฉ ์ ‘์† ํ”„๋กœํ† ์ฝœ ใ…Ž

์•„๋ž˜ ์ˆœ์„œ๋Œ€๋กœ ํ•˜๋ฉด ๊น”๋”ํ•˜๊ฒŒ ์›๊ฒฉ ์ ‘์†์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

-- OpenSSH ์„ค์น˜
sudo apt update
sudo apt install openssh-server -y

-- ssh ์ž๋™ ์‹คํ–‰ ์„ค์ •
sudo systemctl enable ssh 

-- ssh ์‹คํ–‰
sudo systemctl start ssh

-- ์ ‘์†
ssh [ubuntu ๊ณ„์ •๋ช…]@[์„œ๋ฒ„์•„์ดํ”ผ] -p 22

(์šฐ์„ ) ๋‚ด๋ถ€์•„์ดํ”ผ๋กœ ์ ‘์†์™„๋ฃŒ!

๋ฐ˜์‘ํ˜•
๋ฐ˜์‘ํ˜•

์ฝ”๋”ฉ ์ž์œจํ•™์Šต Vue.js ํ”„๋ŸฐํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์ž…๋ฌธ (~3.3์žฅ)

 

vue
  1. ํ”„๋กœ๊ทธ๋ ˆ์‹œ๋ธŒ ํ”„๋ ˆ์ž„์›Œํฌ
  2. MVVM ์•„ํ‚คํ…์ฒ˜
  3. ๋ทฐ์— ์ง‘์ค‘ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ

 

vue ํŠน์ง•?
  1. ๊ฐ€์ƒ DOM ์‚ฌ์šฉ
  2. ์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ (๋ทฐ↔๋ทฐ๋ชจ๋ธ↔๋ชจ๋ธ)
  3. ์„ค์น˜๊ฐ„๋‹จ

 

์„ค์น˜๊ด€๋ จ
  1. node.js : ๋ทฐ๊ฐ€ ๋…ธ๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋ ˆ์ž„์›Œํฌ๋ผ ํ•„์š”ํ•จ
  2. Vue CLI : ์œˆ๋„์šฐ, ๋งฅ ๋“ฑ์˜ ํ„ฐ๋ฏธ๋„์—์„œ ์‚ฌ์šฉ์ž ๋ช…๋ น์–ด ์ž…๋ ฅ์‹œ PC๊ฐ€ ๊ทธ์—๋งž๋Š” ๊ธฐ๋Šฅ ์‹คํ–‰ํ•ด์ฃผ๋Š” ์ฒ˜๋ฆฌํ•จ
  3. ๋น„์ฃผ์–ผ์ŠคํŠœ๋””์˜ค : ๊ฐœ๋ฐœํˆด
    1. Vue - Official : ๋ทฐ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฌธ๋ฒ• ๋ฐ ํŒŒ์ผ์„ ์ธ์‹ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๋Š” ์ต์Šคํ…์…˜
    2. Live Server : HTML ์‹ค์‹œ๊ฐ„ ๋ฐ˜์˜
    3. Prettier - Code formatter : ์ฝ”๋“œ ์ด์˜๊ฒŒ ์ •๋ฆฌ
  4. ํฌ๋กฌํ™•์žฅํ”„๋กœ๊ทธ๋žจ : Vue.js devtools

 

๊ฐœ๋ฐœ๋ฐฉ์‹
  1. CDN (์ฝ˜ํ…์ธ ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง„ ๋„คํŠธ์›Œํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด ์ œ๊ณตํ•˜๋Š” ์‹œ์Šคํ…œ)
    1. <script src="https://unpkg.com/vue@3.5.13/dist/vue.global.js"></script> ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐ”๋กœ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ
    1. npm create vue@latest : ๋ทฐ ํ”„๋กœ์ ํŠธ ์„ค์ •
    2. npm install : npm create ์œผ๋กœ ์ƒ์„ฑ๋œ package.json ํŒŒ์ผ ์ฐธ์กฐํ•ด ํŒจํ‚ค์ง€ ์„ค์น˜
    3. npm run dev : ๋ทฐ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰
    4. npm ์ด์šฉํ•˜์—ฌ ๋ทฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ
      NPM (node.js ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋„๊ตฌ)

CDN vs NPM
  1. cdn ์€ ๋น ๋ฅด๊ฒŒ ์ ์šฉ ๊ฐ€๋Šฅ but ์˜์กด์„ฑ ๊ด€๋ฆฌ(=ํ•„์š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ)๋ฅผ ์ง์ ‘ ํ•ด์•ผํ•จ. ์„œ๋น„์Šค ์ปค์งˆ๊ฒฝ์šฐ ๋‚œ๊ฐ
  2. npm ์€ ์˜์กด์„ฑ ๊ด€๋ฆฌ ์‰ฝ๊ณ , ํฐ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ๊ฐœ๋ฐœํ•˜๊ธฐ ํŽธํ•จ *

 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ (์ค‘์š”ํ•œ๊ฒƒ ์œ„์ฃผ)
  1. package.json
    1. ์ค‘์‹ฌ! ๊ธฐ๋ณธ์ •๋ณด ๋ฐ ์˜์กด์„ฑ ๋ชจ๋“ˆ ์ •๋ณด, ์Šคํฌ๋ฆฝํŠธ ๋ช…๋ น ์ •๋ณด
    2. npm run dev ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ทผ๊ฑฐ๊ฐ€ script ๋ถ€๋ถ„์˜ dev ์†์„ฑ์ด ์žˆ์–ด ์‹คํ–‰ ๋˜๋Š” ๊ฒƒ
      1. vite ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‹คํ–‰ํ•ด ๊ฐœ๋ฐœ ์„œ๋ฒ„ ๊ตฌ๋™
  2. index.html
    1. npm run dev ์‹คํ–‰์‹œ ํ•ด๋‹นํŒŒ์ผ ๋จผ์ € ๋กœ๋“œ.
  3. main.js
    1. ๋ทฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ๊ตฌ์„ฑํ•˜๋Š” ์—ญํ• . (index.html ์—์„œ ์‹คํ–‰)
  4. App.vue
    1. ์ปดํฌ๋„ŒํŠธ (SFC: Single File Components)
    2. ๋ฌธ๋ฒ•
      1. <script> : ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉํ•  ๋กœ์ง ๋ถˆ๋Ÿฌ์˜ด
      2. <template> : html ํƒœ๊ทธ ์ž‘์„ฑ
      3. <style> : css ์ ์šฉ

 

๋””๋ ‰ํ‹ฐ๋ธŒ ์‚ฌ์šฉ

์ ‘๋‘์‚ฌ -v ๊ฐ€ ๋ถ™์Œ. <template> ์˜์—ญ์—์„œ ์‚ฌ์šฉ (https://vuejs.org/api)
v-html, v-text, v-pre, v-bind...


์ถœ์ฒ˜
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=341090647&start=pebook
๋ฐ˜์‘ํ˜•
๋ฐ˜์‘ํ˜•

ํ˜„์žฌ GUI ๋ชจ๋“œ๋กœ ์šฐ๋ถ„ํˆฌ๋ฅผ ๊ฐ–๊ณ ๋…ธ๋Š”์ค‘์ธ๋ฐ ๊ฐ‘์ž๊ธฐ ํ‚ค๋ณด๋“œ๊ฐ€ ํ•œ๊ธ€์ด ์•ˆ๋จน๋Š” ํ˜„์ƒ์ด ์ƒ๊ฒผ๋‹ค (?)

windows key + space ์„ ์น˜๋‹ˆ ํ•œ์˜ํ‚ค๊ฐ€ ๋จน๋”๋ผ (???)

๋ฐ˜์‘ํ˜•

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

SSE (Server Sent Event)  (1) 2023.08.20
Vault  (1) 2023.02.07
ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜ (Hexagonal Architecture)  (2) 2022.09.25
JWT (JSON WEB TOKEN)  (0) 2021.12.22
Rest API  (0) 2021.06.02
๋ฐ˜์‘ํ˜•

์–ด๋А๋‚  ๋ฏธ๋‹ˆPC์„ ๊ตฌ์ž…ํ•˜์˜€๋‹ค. (?)

์ œํ’ˆ์€ [๋ ˆ๋…ธ๋ฒ„ M710Q] ์ด๊ฑฐ๋‹ค.
(๋ชจ๋‹ˆํ„ฐ ์—ฐ๊ฒฐ์„ ์œ„ํ•ด DP to DP ์–‘๋ฐฉํ–ฅ ์ผ€์ด๋ธ” ๋ฐ usb ํฌํŠธ ์ง€์› ๋งˆ์šฐ์Šค๋„ ๊ฐ™์ด ๊ตฌ๋งค ใ…Ž.. ํ‚ค๋ณด๋“œ๋Š” ์ด๋ฏธ ์žˆ๊ณ ..)


ํ•ด๋‹น PC ์—๋Š” ์ด๋ฏธ ์œˆ๋„์šฐ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์—ˆ๋‹ค. 
๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์œˆ๋„์šฐ๋ฅผ ์ง€์šฐ์ง€ ์•Š๊ณ  ๋ฆฌ๋ˆ…์Šค(์šฐ๋ถ„ํˆฌ!)๋ฅผ ๊ฐ™์ด ์„ค์น˜ํ•˜์—ฌ ๋ฉ€ํ‹ฐ๋ถ€ํŒ…์„ ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค.
(๋‚˜์ค‘์— ๊ฐœ์ธ์ ์ธ ์šฉ๋ฌด๋กœ ์ธํ•œ? ์œˆ๋„์šฐ ํ™˜๊ฒฝ์œผ๋กœ ๋ญ”๊ฐ€ ์ž‘์—…์ด ํ•„์š”ํ• ์ˆ˜ ์žˆ์„์ˆ˜๋„์žˆ์ง€ ์•Š์„๊นŒ ํ•˜์—ฌ?)

 


โ˜… ๋ฉ€ํ‹ฐ๋ถ€ํŒ…์„ ํ•˜๊ธฐ ์œ„ํ•œ ์ค€๋น„

1) ์šฐ๋ถ„ํˆฌ๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ์ง‘์— ๋Œ์•„๋‹ค๋‹ˆ๋˜ usb์„ ์ฐพ์•˜๊ณ  ํฌ๋งทํ–ˆ๋‹ค.
(๋Œ€์ถฉ ์ด๋Ÿฐ์‹..https://www.samsungsvc.co.kr/solution/40474)

2) ๋ถ€ํŒ…๋””์Šคํฌ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.
์šฐ๋ถ„ํˆฌ ์‚ฌ์ดํŠธ๋ฅผ ๊ฐ€์„œ osi ํŒŒ์ผ์„ PC์— ๋‹ค์šด๋ฐ›๊ณ , Refus ๋ผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•˜์—ฌ ๋ถ€ํŒ…๋””์Šคํฌ ๋งŒ๋“œ๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ–ˆ๋‹ค. 
(https://amkorousagi-money.tistory.com/entry/%EC%9A%B0%EB%B6%84%ED%88%AC-%EB%B6%80%ED%8C%85-usb-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EC%9A%B0%EB%B6%84%ED%88%AC-%EC%84%A4%EC%B9%98 ์„ ์ฐธ๊ณ ํ–ˆ๋‹ค)

Ubuntu 24.04.1 ๋ฒ„์ „ + GUI ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋œ Desktop image ์„ ๋‹ค์šด๋ฐ›์Œ ใ…Ž..

 

3) ์œˆ๋„์šฐ ํ•˜๋“œ๋””์Šคํฌ ํŒŒํ‹ฐ์…˜ ๋ถ„ํ• ์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ์ด์œ ๋Š” ์ถ”ํ›„ ์šฐ๋ถ„ํˆฌ๋ฅผ ์œ„ํ•œ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•จ!
(๋Œ€์ถฉ ์ด๋Ÿฐ์‹..https://www.samsungsvc.co.kr/solution/25065)

4) ๋ฏธ๋‹ˆPC์— ๋ถ€ํŒ…๋””์ŠคํฌUSB์„ ๊ผฝ์•„๋†“๊ณ !!!! ์žฌ๋ถ€ํŒ…์„ ํ–ˆ๋‹ค.
๋ถ€ํŒ… ํ™”๋ฉด์ด ๋–ณ์„๋•Œ ๋ถ€ํŠธ ๋””๋ฐ”์ด์Šค ์„ ํƒ ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•˜๋„๋ก F12์„ ๊ฒ€๋‚˜๊ฒŒ ๋ˆŒ๋ €๋‹ค. (์ด๊ฒŒ PC ๊ธฐ๊ธฐ ๋ณ„๋กœ ์‚ด์ง ๋‹ค๋ฅธ๋“ฏ ํ–ˆ๋‹ค.)

USB ์„ ์„ ํƒ! ์—”ํ„ฐ!

 

5) ์šฐ๋ถ„ํˆฌ ์„ค์น˜ ์‹œ์ž‘!

...์ญ‰์ญ‰

์•„๊นŒ ์œˆ๋„์šฐ ํ•˜๋“œ๋””์Šคํฌ ํŒŒํ‹ฐ์…˜ ๋‚˜๋ˆด๋˜๊ฑธ ๊ธฐ์–ต!ํ•˜์—ฌ ์ˆ˜๋™ ํŒŒํ‹ฐ์…”๋‹์œผ๋กœ ์„ ํƒ!

์ญ‰์ญ‰...๊ณ„์ • ์„ค์ •๊นŒ์ง€ ํ•˜๋ฉด ์šฐ๋ถ„ํˆฌ ์„ค์น˜ ๋!

6) ๋ฏธ๋‹ˆPC์—์„œ USB ์ œ๊ฑฐ ๋ฐ ์žฌ์‹คํ–‰์‹œ F12์„ ๋ˆŒ๋Ÿฌ OS์„ ์„ ํƒ ๋ฐ ์‹คํ–‰ํ•˜๋„๋กํ•จ!


 

๋ฐ˜์‘ํ˜•
๋ฐ˜์‘ํ˜•
REST & API
  • REST : HTTP URL ๋กœ ์„œ๋ฒ„์˜ ์ž์›(resource)์„ ๋ช…์‹œํ•˜๊ณ , HTTP ๋ฉ”์„œ๋“œ๋กœ ํ•ด๋‹น ์ž์›์— ๋Œ€ํ•ด CRUDํ•˜๋Š”๊ฒƒ
  • API : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์˜ ์ž์›์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋„๋ก ์„œ๋ฒ„์— ์ œ๊ณตํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค 

 

PUT / PATCH ์ฐจ์ด
  • PUT: ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋ถ€ ์ƒˆ ๋‚ด์šฉ์œผ๋กœ ๋ณ€๊ฒฝ. ๋งŒ์•ฝ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑ! (requestBody ์— ์ „์ฒด ์š”์ฒญ๊ฐ’์„!)
  • PATCH: ๊ธฐ์กด ๋ฐ์ดํ„ฐ ์ค‘ ์ผ๋ถ€๋งŒ ์ƒˆ ๋‚ด์šฉ์œผ๋กœ ๋ณ€๊ฒฝ (requestBody ์— ์ผ๋ถ€ ์š”์ฒญ๊ฐ’์„!)

 

HTTP ์ƒํƒœ
  • 1XX : ์š”์ฒญ์ด ์ˆ˜์‹ ๋ผ ์ฒ˜๋ฆฌ ์ค‘
  • 2XX : ์„ฑ๊ณต (์ •์ƒ)
  • 3XX : ์š”์ฒญ์ด ์™„๋ฃŒ๋˜๋ ค๋ฉด ์ถ”๊ฐ€ ํ–‰๋™์ด ํ•„์š”ํ•จ (๋ฆฌ๋‹ค์ด๋ ‰ํŠธ..)
  • 4XX : ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์ด ์ž˜๋ชป๋˜ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Œ
  • 5XX : ์„œ๋ฒ„ ๋‚ด๋ถ€์— ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ!

 

RequestBody (์š”์ฒญ ๋ฉ”์„ธ์ง€)
  • ์š”์ฒญ๋ผ์ธ: method type: POST, PATCH.., url..
  • ํ—ค๋”: content-type..host..
  • ๋ณธ๋ฌธ: json 

 

ResponseBody (์‘๋‹ต ๋ฉ”์„ธ์ง€)
  • ์ƒํƒœ๋ผ์ธ: 200..201..
  • ํ—ค๋”: content-type...
  • ๋ณธ๋ฌธ: json
๋ฐ˜์‘ํ˜•
๋ฐ˜์‘ํ˜•
๋กœ๊น… (logging)

์‹œ์Šคํ…œ์ด ์ž‘๋™ํ•  ๋•Œ ๋‹น์‹œ์˜ ์ƒํƒœ์™€ ์ž‘๋™ ์ •๋ณด๋ฅผ ๊ธฐ๋ก 

 

๋กœ๊น…๋‹จ๊ณ„
๋ช…์นญ ์„ค๋ช…
TRACE 1๋‹จ๊ณ„ - DEBUG ๋ ˆ๋ฒจ๋ณด๋‹ค ์ƒ์„ธํ•œ ์ •๋ณด
DEBUG 2๋‹จ๊ณ„ - ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์„ธ๋ถ€ ์ •๋ณด
INFO 3๋‹จ๊ณ„ - ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์ˆœ์กฐ๋กœ์šด ์ง„ํ–‰ ์ •๋ณด
WARN 4๋‹จ๊ณ„ - ์ž ์žฌ์ ์œผ๋กœ ์œ ํ•ดํ•œ ์ƒํ™ฉ ์ •๋ณด
ERROR 5๋‹จ๊ณ„ - ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋„์˜ ์˜ค๋ฅ˜ ์ •๋ณด
FATAL 6๋‹จ๊ณ„ - ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์ค‘๋‹จ๋  ๋งŒํ•œ ์‹ฌ๊ฐํ•œ ์˜ค๋ฅ˜ ์ •๋ณด
OFF 7๋‹จ๊ณ„ - ๋กœ๊น… ๊ธฐ๋Šฅ ํ•ด์ œ 

 

JPA ๋ฐ ๋กœ๊น… ๊ด€๋ จ properties ์„ค์ • 
-- ํ”„๋กœ์ ํŠธ ๋‚ด resources > application.properties (or yaml)

server.servlet.encoding.force = true
spring.h2.console.enable=true
spring.jpa.defer-datasource-initialization=true

# JPA ๋กœ๊น… ์„ค์ •
logging.level.hibernate.SQL=DEBUG

# ์ฟผ๋ฆฌ ์ค„๋ฐ”๊ฟˆ
spring.jpa.properties.hibernate.format_sql=true

# ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’ ๋ณด์—ฌ์ฃผ๊ธฐ
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

# ์œ ๋‹ˆํฌ URL ์ƒ์„ฑํ•˜์ง€ ์•Š๊ธฐ
spring.datasource.generate-unique-name=false

# ๊ณ ์ • URL ์„ค์ •
spring.datasource.url=jdbc:h2:mem:testdb

 

๋ฐ˜์‘ํ˜•
๋ฐ˜์‘ํ˜•
๋งํฌ (Link)

 ๋ฏธ๋ฆฌ ์ •ํ•ด ๋†“์€ ์š”์ฒญ์„ ๊ฐ„ํŽธํžˆ ์ „์†กํ•˜๋Š” ๊ธฐ๋Šฅ (ํŽ˜์ด์ง€์ด๋™!)
ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋งํฌ๋ฅผ ํ†ตํ•ด ์–ด๋А ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ฒ ๋‹ค๊ณ  ์š”์ฒญํ•˜๋ฉด, ์„œ๋ฒ„๋Š” ๊ฒฐ๊ณผ ํŽ˜์ด์ง€๋ฅผ ์‘๋‹ต!

 

๋ฆฌ๋‹ค์ด๋ ‰ํŠธ (Redirect)

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋งํฌ๋ฅผ ํ†ตํ•ด ์–ด๋А ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ฒ ๋‹ค๊ณ  ์š”์ฒญํ•˜๋ฉด,
์„œ๋ฒ„๋Š” ๊ฒฐ๊ณผ ํŽ˜์ด์ง€๋ฅผ 
์‘๋‹ต ํ•˜์ง€ ์•Š๊ณ  ์žฌ์š”์ฒญํ•˜๋ผ๋Š” ํšŒ์‹ ์„ ๋ณด๋ƒ„ (์žฌ์š”์ฒญ)
๋ฆฌ๋‹ค์ด๋ ‰ํŠธ(์žฌ์š”์ฒญ)
์„ ์ง€์‹œ๋ฐ›์€ ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ด์ค€ ์ฃผ์†Œ๋กœ ๋‹ค์‹œ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์„œ๋ฒ„๋Š” ์ด์—๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์‘๋‹ต

ํด๋ผ์ด์–ธํŠธ ๋งํฌ ์ด๋™ ์š”์ฒญ → ์„œ๋ฒ„์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋กœ ์‘๋‹ต → ํด๋ผ์ด์–ธํŠธ๋Š” ์žฌ์š”์ฒญ ์ฃผ์†Œ๋กœ ๋‹ค์‹œ ์š”์ฒญ  → ์„œ๋ฒ„์‘๋‹ต

 

๋ฐ˜์‘ํ˜•
๋ฐ˜์‘ํ˜•
๋กฌ๋ณต (Lombok)

• ์ฝ”๋“œ๋ฅผ ๊ฐ„์†Œํ™”ํ•ด ์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (@Data)
    → https://projectlombok.org/features/Data 

 

@Data

 

projectlombok.org

    → ๊ผญ ํ•„์š”ํ•œ ์–ด๋…ธํ…Œ์ด์…˜๋งŒ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด ์ข‹๋‹ค. (@Data ์ง€์–‘ ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰)

๋กœ๋”ฉ ๊ธฐ๋Šฅ ์ง€์› (@Slf4j)

 

๋ฆฌํŒฉํ„ฐ๋ง

 ์ฝ”๋“œ์˜ ๊ธฐ๋Šฅ์—๋Š” ๋ณ€ํ•จ์—†์ด ๊ตฌ์กฐ ๋ฐ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋Š” ์ž‘์—…

๋ฐ˜์‘ํ˜•
๋ฐ˜์‘ํ˜•
ํผ๋ฐ์ดํ„ฐ (form data)

• <form> ํƒœ๊ทธ์— ์‹ค๋ ค ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ. ์ „์†ก๋œ ๋ฐ์ดํ„ฐ๋Š” ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๊ฐ์ฒด์— ๋‹ด์•„ ๋ฐ›์Œ(=DTO)
DTO(Data Transfer Object) ์„ ์ง€์ง€๊ณ  ๋ณถ์•„ DB ์— ์ €์žฅ

 

Database & JPA

 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ฐฝ๊ณ  (DB)
 DB๋Š” ์ž๋ฐ”์–ธ์–ด๋ฅผ ๋ชจ๋ฆ„! DB๋Š” SQL(Structured Query Languate) ๋งŒ ์•Œ๊ณ ์žˆ์Œ.
์ž๋ฐ”์—์„œ DB์— ๋ฐ์ดํ„ฐ ๊ธฐ๋ก์„ ํ•˜๊ธฐ์œ„ํ•œ ์ˆ˜๋‹จ์ค‘์— ํ•˜๋‚˜๋กœ JPA๊ฐ€ ์žˆ์Œ 
    → JPA(Java Persistence API) ์„ ํ†ตํ•ด ์ž๋ฐ”์–ธ์–ด๋กœ DB์— ๋ช…๋ น์„ ๋‚ด๋ฆผ!
    → ๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Œ
    → JPA ๋Š” entity, repository ๊ฐ€ ์žˆ์Œ

 

์‹ค์Šต๊ด€๋ จ

1. H2 DB์— ์›น ์ฝ˜์†”๋กœ ์ ‘๊ทผ ํ—ˆ์šฉํ•˜๋„๋ก ํ•จ (application.yaml)

spring.h2.console.enabled=true

2. h2 db ์ ‘์† ๊ด€๋ จ
→ ์ธํ…”๋ฆฌ์ œ์ด > debug ์ฝ˜์†” > jdbc: ๊ฒ€์ƒ‰ ํ›„, jdbc url ์ •๋ณด ์ฐพ์•„ localhost:8080/h2-console ๋‚ด์˜ JDBC URL ์— ๊ธฐ์ž…

์„œ๋ฒ„ ์‹คํ–‰ํ• ๋•Œ๋งˆ๋‹ค JDBC URL์€ ๋ฐ”๋€œ

๋ฐ˜์‘ํ˜•
๋ฐ˜์‘ํ˜•
๋ทฐํ…œํ”Œ๋ฆฟ (View Template)

• ํ™”๋ฉด์„ ๋‹ด๋‹นํ•˜๋Š” ๊ธฐ์ˆ 
 ์›นํŽ˜์ด์ง€(View) ์„ ํ•˜๋‚˜์˜ ํ‹€(Template) ์œผ๋กœ ๋งŒ๋“ค๊ณ  ์—ฌ๊ธฐ์— ๋ณ€์ˆ˜๋ฅผ ์‚ฝ์ž…ํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ๋ณด์—ฌ์คŒ โ“
    → ์ •๋ณด์„ฑ์˜ ๋ฐ์ดํ„ฐ(๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ์ •๋ณด) ๋“ค์„ ์œ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ณด์—ฌ์ค€๋‹ค๋Š” ๋‚ด์šฉ
• mustache
     ๋ทฐํ…œํ”Œ๋ฆฟ ๋งŒ๋“œ๋Š” ๋„๊ตฌ (ํ…œํ”Œ๋ฆฟ ์—”์ง„)
     src > main > resources > templates ์— ์œ„์น˜
     ์ปจํŠธ๋กค๋Ÿฌ ๋ฉ”์†Œ๋“œ ๋‚ด์—์„œ ์—์„œ mustache ํŒŒ์ผ๋ช…์„ return ํ•˜๋ฉด ์„œ๋ฒ„์—์„œ๋Š” ์•Œ์•„์„œ mustache ํŒŒ์ผ์„ ์ฐพ์•„ ์›น๋ธŒ๋ผ์šฐ์ €๋กœ ์ „์†กํ•จ!

       


     ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถ”๊ฐ€ ํ•„์š” 
 ๊ทธ์™ธ์—๋„ Thymeleaf..JSP ๋“ฑ์ด ์žˆ๋‹ค.ใ…Žใ…Žใ…Ž

 

MVC ํŒจํ„ด 

 Model : ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌ!

 View : ํ™”๋ฉด์— ๋ณด์—ฌ์คŒ!

 Controller : ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๋ฐ›์Œ!

 

์‹ค์Šต๊ด€๋ จ

1. html ํŒŒ์ผ ๋‚ด์—์„œ ํ•œ๊ธ€์ด ๊นจ์ง€๋Š” ๊ฒฝ์šฐ, application.properties ํŒŒ์ผ ๋‚ด์— ์•„๋ž˜์˜ ๋‚ด์šฉ ์ถ”๊ฐ€ ํ•„์š” 

server.servlet.encoding.force=true

 

๋ฐ˜์‘ํ˜•

+ Recent posts