PRG(POST-Redirect-GET) ํจํด
๐ก PRG ํจํด์ด๋? ์น MVC ๊ตฌ์กฐ์์ ํํ๊ฒ ์ฌ์ฉํ๋ ํจํด์ผ๋ก, HTTP POST ์์ฒญ์ ๋ํ ์๋ต์ด ๋ ๋ค๋ฅธ URL๋ก์ GET ์์ฒญ์ ์ํ Redirect์ฌ์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ๋ค์ ๋งํด, POST ๋ฐฉ์์ผ๋ก ์จ ์์ฒญ์ ๋ํด์ GET ๋ฐฉ์์ ์นํ์ด์ง๋ก Redirect ์ํค๋ ํจํด์ ๋งํ๋ค. ๐ก PRG ํจํด์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋ฐ์ํ๋ ๋ฌธ์ ์ ์๋ก๊ณ ์นจ์ผ๋ก ์ธํ ๋์ผํ ์์ฒญ์ด ์ฐ์์ ์ผ๋ก ๋ณด๋ด์ง๋ ์ด์๊ฐ ๋ฐ์ํ๋ค. ๋ง์ฝ ์ด ์ด์๊ฐ ์ค์ํ์ง ์์ ๋ก์ง์ด ์๋ ๋ถ๋ถ์ด๋ผ๋ฉด ์๊ด์๊ฒ ์ง๋ง ๊ฒฐ์ ๊ฐ์ ์ค์ํ ๋ก์ง์์๋ ์ค๋ณต ๊ฒฐ์ ๊ฐ ์ผ์ด๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. POST ์์ฒญ์ URL์ ๋ณต์ฌํ๋๋ผ๋ ๋ค๋ฅธ ์ฌ๋๊ณผ ๊ณต์ ํ ์ ์๋ค. POST ์์ฒญ์ ๋ณด๋ด๊ฒ ๋๋ฉด Parameter ๊ฐ๋ค์ด URL์ ๋จ๊ฒจ์์ง ์๊ธฐ์ ํน์ Par..
์๋ธ๋ฆฟ(Servlet)๊ณผ JSP(Java Server Pages)์ ๊ฐ๋ ๋ฐ ์ฐจ์ด
Servlet๊ณผ JSP๋ Java EE์ ์ฌ๋ฌ ๊ธฐ์ ์ค ํ๋์ด๋ค. Java EE(Enterprise Edition)๋? ๊ธฐ์ ์์ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๋ฐ ์ ํฉํ ์๋ฐ ๊ฐ๋ฐ ๋ฒ์ ์ ์๋ฏธํ๋ฉฐ, Java EE์ ์คํ์๋ Servlet, JSP, EJB(Enterprise Java Beans) ๋ฑ์ด ์๋ค. ์ฐธ๊ณ : https://doozi316.github.io/java/2020/07/01/WEB20/ 1. Servlet ์๋ธ๋ฆฟ์ ์๋ฒ์์ ์นํ์ด์ง ๋ฑ์ ๋์ ์ผ๋ก ์์ฑํ๊ฑฐ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํํ๊ธฐ ์ํด ์๋ฐ๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ด๋ค. ์ฆ, ์๋ฒ์์ ๋์ ์ผ๋ก ์์ฒญ๊ณผ ์๋ต์ ์ฒ๋ฆฌํ ์ ์๋ API๋ค์ด๋ผ๊ณ ํ ์ ์๋ค. ๊ฐ์ฅ ํฐ ํน์ง์ Java ์ฝ๋ ์์ HTML ํ๊ทธ๊ฐ ์ฝ์ ๋๋ฉฐ, ์๋ฐ ์ธ์ด๋ก ๋์ด์๋ค๋ ๊ฒ์ด๋ค. ์..
HTTP์ HTTPS
๋ธ๋ผ์ฐ์ ์ ์์ฒญ๊ณผ ์๋ฒ์ ์๋ต ์ฌ์ด์ ๋ฐ์ดํฐ ๊ตํ ๊ท์ฝ์ 'ํ๋กํ ์ฝ(protocol)'์ด๋ผ๊ณ ํฉ๋๋ค. ์น์์๋ HTTP(Hyper Text Transfer Protocol), HTTPS์ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ต๋๋ค. (HTTPS๋ HTTP์ ๋ณด์ ๊ฐํ ๋ฒ์ ์ ๋๋ค.) ํ๋กํ ์ฝ์ ๋ํด ์์ธํ ์๊ณ ์ถ๋ค๋ฉด? ํ๋กํ ์ฝ ์ ์, ๊ธฐ๋ณธ ์์, ์ข ๋ฅ, ๊ธฐ๋ฅ ๐ ํ๋กํ ์ฝ์ด๋? ํ๋กํ ์ฝ(Protocol)์ ์ปดํจํฐ๋ ๋คํธ์ํฌ ์ฅ๋น๊ฐ ์๋ก ํต์ ํ๊ธฐ ์ํด ๋ฏธ๋ฆฌ ์ ํด ๋์ ์ฝ์ ๋๋ ๊ท์ฝ์ ๋งํ๋ค. ๐ ํ๋กํ ์ฝ์ ๊ธฐ๋ณธ ์์ ๊ตฌ๋ฌธ(Syntax) : ์ ์กํ๊ณ ์ ํ๋ ๋ฐ์ดํฐ easyhomputer.tistory.com ๐ HTTP(Hyper Text Transfer Protocol) HTTP(Hyper Text Transfer P..
๋ธ๋ผ์ฐ์ ์ ์๋ฒ์ ๊ด๊ณ - ์์ฒญ๊ณผ ์๋ต, GET/POST ๋ฐฉ์, ์ ์ /๋์ ๋ฐ์ดํฐ
๐ Request(์์ฒญ)์ Reponse(์๋ต) ๋ธ๋ผ์ฐ์ ์ ์๋ฒ๋ ์์ฒญ๊ณผ ์๋ต์ด๋ผ๋ ๋์์ผ๋ก ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ด๊ณ์ ๋๋ค. Request : ๋ธ๋ผ์ฐ์ ์์ ์๋ฒ์๊ฒ ํน์ ํ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์๊ตฌํ๋ ๊ฒ. Reponse : ์๋ฒ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์ด์ ๋ธ๋ผ์ฐ์ ์๊ฒ ๋ณด๋ด๋ ๊ฒ. ๐ GET/POST ๋ฐฉ์ ์ฃผ๋ก ๋ธ๋ผ์ฐ์ ๋ GET/POST ๋ฐฉ์์ ์ด์ฉํ์ฌ Request(์์ฒญ)ํฉ๋๋ค. GET ๋ฐฉ์ : ์ฃผ์์ฐฝ์ ์ง์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐ๋ ๋งํฌ๋ฅผ ํด๋ฆญํด์ ํธ์ถ ์ํ๋ ์น์ ์ฃผ์๋ฅผ ํธ์ถํ ๋ ํ์ํ ๋ฐ์ดํฐ๋ฅผ "?"์ "&,="๋ฅผ ์ด์ฉํด์ ๊ฐ์ด ์ ์กํ๋ ๋ฐฉ์์ ๋งํฉ๋๋ค. ์ฃผ์์ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ๊ฐ์ด ๋ณด๋ด๋ฏ๋ก ๋จ์ ๋งํฌ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. ๋ค์ ๋งํด, ์ฃผ์ ์์ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋์ด ์๋ค๋ ์๋ฏธ์ ๋๋ค. GET๋ฐฉ์์ ์ฃผ๋ก ํน์ ํ..
JWT(JSON Web Token)
JWT(JSON Web Token)๋ ์ธ์ฆ์ ํ์ํ ์ ๋ณด๋ค์ ์ํธํ์ํจ JSON ํ ํฐ์ด๋ค. JWT ํ ํฐ(Access Token)์ HTTP ํค๋์ ์ค์ด ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ฅผ ์๋ณํ๋ ๋ฐฉ์์ผ๋ก ์ธ์ฆํ๋ค. JWT๋ JSON ๋ฐ์ดํฐ๋ฅผ Base64 URL-safe Encode ๋ฅผ ํตํด ์ธ์ฝ๋ฉํ์ฌ ์ง๋ ฌํํ ๊ฒ์ด๋ฉฐ, ํ ํฐ ๋ด๋ถ์๋ ์๋ณ์กฐ ๋ฐฉ์ง๋ฅผ ์ํด ๊ฐ์ธํค๋ฅผ ํตํ ์ ์์๋ช ๋ ๋ค์ด์๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์๊ฐ JWT ๋ฅผ ์๋ฒ๋ก ์ ์กํ๋ฉด ์๋ฒ๋ ์๋ช ์ ๊ฒ์ฆํ๋ ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ๋๋ฉฐ ๊ฒ์ฆ์ด ์๋ฃ๋๋ฉด ์์ฒญํ ์๋ต์ ๋๋ ค์ค๋ค. โ Base64 URL-safe Encode ์ผ๋ฐ์ ์ธ Base64 Encode ์์ URL ์์ ์ค๋ฅ์์ด ์ฌ์ฉํ๋๋ก '+', '/' ๋ฅผ ๊ฐ๊ฐ '-', '_' ๋ก ํํํ ๊ฒ์ด๋ค. ๐ก JWT์ ๊ตฌ์กฐ JWT๋ . ์..
ํด๋ผ์ด์ธํธ ์ธ์ฆ ๋ฐฉ์ - Cookie, Session, Token
์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ํ์ธํ๋ ๋ฐฉ์์ ๋ํ์ ์ผ๋ก ์ฟ ํค, ์ธ์ , ํ ํฐ 3๊ฐ์ง ๋ฐฉ์์ด ์๋ค. ๐ Cookie ์ฟ ํค๋ Key-Value ํ์์ ๋ฌธ์์ด ๋ฉ์ด๋ฆฌ๋ก, ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ ํ ์น์ฌ์ดํธ๋ฅผ ๋ฐฉ๋ฌธํ ๊ฒฝ์ฐ, ๊ทธ ์ฌ์ดํธ๊ฐ ์ฌ์ฉํ๊ณ ์๋ ์๋ฒ๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์ ๋ธ๋ผ์ฐ์ ์ ์ค์น๋๋ ์์ ๊ธฐ๋ก ์ ๋ณด ํ์ผ์ด๋ค. ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์ฅํ๊ณ ์ ํ๋ ์ ๋ณด๋ฅผ ์๋ต ํค๋(Cookie)์ ์ ์ฅํ์ฌ ์ ๋ฌํ๋ค. ๊ฐ ์ฌ์ฉ์๋ง๋ค์ ๋ธ๋ผ์ฐ์ ์ ์ ๋ณด๋ฅผ ์ ์ฅํ์ฌ ๊ณ ์ ์ ๋ณด ์๋ณ์ด ๊ฐ๋ฅํ๋ค. ๐ก ์ธ์ฆ ๋ฐฉ์ ๋ธ๋ผ์ฐ์ (ํด๋ผ์ด์ธํธ)๊ฐ ์๋ฒ์ ์์ฒญ(์ ์)์ ๋ณด๋ธ๋ค. ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ํ ์๋ต์ ์์ฑํ ๋, ํด๋ผ์ด์ธํธ ์ธก์ ์ ์ฅํ๊ณ ์ถ์ ์ ๋ณด๋ฅผ ์๋ต ํค๋์ Set-Cookie์ ๋ด๋๋ค. ์ดํ ํด๋น ํด๋ผ์ด์ธํธ๋ ์์ฒญ์ ๋ณด๋ผ ๋๋ง๋ค, ๋งค..
CI/CD๋?
๐ CI/CD๋?๋งค๋ฒ ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ์์ ํ๊ณ ๋น๋์ ํ ์คํธ๋ฅผ ํ๊ณ ๋ฐฐํฌ๊น์ง ํ๋ค๋ฉด ์๋นํ ๋ง์ ์๊ฐ์ด ์์๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ git์ ์ฝ๋๋ฅผ ์ฌ๋ฆฌ๋ ๊ฒ๋ง์ผ๋ก๋ ๋น๋์ ํ ์คํธ, ๋ฐฐํฌ๊น์ง ํด์ค๋ค๋ฉด, ์ธ๋ฐ์๋ ์๊ฐ์ ๋จ์ถ์ํค๊ณ ๊ฐ๋ฐ์ ๋ ๋ง์ ์๊ฐ์ ํฌ์ํ ์ ์์ ๊ฒ์ด๋ค. ์ด๋ฅผ ์ํด ๊ณ ์๋ ๋ฐฉ๋ฒ์ด CI/CD์ด๋ค.CI/CD ์๋น์ค๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ, ํ ์คํธ ๋ฐ ๋ฐฐํฌ์ ์๋ํ๋ฅผ ์ ์ฉํ์ฌ ๊ฐ๋ฐ ๋ฐ ์ด์ ํ๋๊ณผ ํ ๊ฐ์ ๊ฒฉ์ฐจ๋ฅผ ํด์ํ๋ค. ๊ฐ๋ฐ์๊ฐ ๋ง๋ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ปดํ์ผํ ๋ค์ ์ด๋ฅผ ์ํํธ์จ์ด ๊ฒฐ๊ณผ๋ฌผ์ ์ฐ๊ฒฐํ๊ณ ํจํค์งํ๊ณ , ์๋ํ๋ ํ ์คํธ๋ฅผ ํตํด ์ํํธ์จ์ด ๊ธฐ๋ฅ์ ํ์ธํ์ฌ ์๋ํ๋ ๋ฐฐํฌ ์๋น์ค๋ก ์ด๋ฅผ ์ต์ข ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ๋ค.๋ชฉํ๋ ์กฐ๊ธฐ ๊ฒฐํจ ๋ฐ๊ฒฌ์ ๋์ด๊ณ ์์ฐ์ฑ์ ๋์ด๋ฉฐ ๋ ๋น ๋ฅธ ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ๋ฅผ ์ ๊ณตํ๋..
๋นํธ๋๋ฏธ(Bitnami) WAMP ์ค์นํ๊ธฐ
๐ Bitnami(๋นํธ๋๋ฏธ)๋? ๋นํธ๋๋ฏธ(Bitnami)๋ ๊ฐ์ ์ดํ๋ผ์ด์ธ์ค ๋ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ , ๊ฐ๋ฐ ์คํ์ฉ ์ํํธ์จ์ด ํจํค์ง ๋ฐ ์ค์น ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. WAMP(Windows/Apache/MySQL/PHP) : ์๋์ฐ ํ๊ฒฝ์์ ์ํ์น(Server), MySQL(DB), PHP(์๋ฒ์ฌ์ด๋)์ ๊ฐ์ ์น ๊ฐ๋ฐํ๊ฒฝ์ ํตํฉ์ ์ผ๋ก ๊ตฌ์ถํด์ฃผ๋ ํ๋ก๊ทธ๋จ MAMP(Mac/Apache/MySQL/PHP) : ๋งฅ ํ๊ฒฝ์์ ์ํ์น(Server), MySQL(DB), PHP(์๋ฒ์ฌ์ด๋)์ ๊ฐ์ ์น ๊ฐ๋ฐํ๊ฒฝ์ ํตํฉ์ ์ผ๋ก ๊ตฌ์ถํด์ฃผ๋ ํ๋ก๊ทธ๋จ ๐ Bitnami(๋นํธ๋๋ฏธ) ์ค์นํ๊ธฐ > bitnami.com/stack/wamp/installer Infrastructure Bitnami Application Catalog Develop..
๋ฆฌ๋ ์ค ๊ธฐ์ด, CLI์ GUI ๐ง
๐ Linux ๐ ์ฃผ์ ๋ช ๋ น์ด pwd(print working directory) : ํ์ฌ ์์ ์ค์ธ ๋๋ ํ ๋ฆฌ ์ ๋ณด ์ถ๋ ฅ cd(change directory) : ๊ฒฝ๋ก ์ด๋ ls(list segments) : ๋๋ ํ ๋ฆฌ ๋ชฉ๋ก ํ์ธ mkdir(make directory) : ๋๋ ํ ๋ฆฌ ์์ฑ rm(remove) : ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ ์ญ์ ์ด์ธ์๋ touch(์ต๊ทผ ์์ ์ผ์ ๋ณ๊ฒฝ), cat, head, tail, find ๋ฑ ๋งค์ฐ ๋ค์ํ๋ค. ์์ฃผ ์ฐ์ด๋ ๊ฑด ์ธ์์ง๊ฒ ์ง๋ง ๋๋จธ์ง๋ ํ์ํ ๋๋ง๋ค ์ฐพ์์ฐ๋๋ก ํ์. ๊ฐ ๋ช ๋ น์ด๋ง๋ค ์ฌ๋ฌ ์ต์ ์ด ์กด์ฌํ๋ค. ์ด๊ฒ๋ ํ์ํ ๋๋ง๋ค ์ฐพ์์ฐ์. ๋ฆฌ๋ ์ค ๋ช ๋ น์ด ๋ชจ์ BEST 50 ์ด๋ณด์ ๋ฐ ์ ๋ฌธ๊ฐ์ฉ - ๋๋ผ๊ฐ์ด๋ ๐ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ ๊ตฌ๋ถ์ ‘/’(์ฌ๋์) ์ญํธ๋ฆฌ ๊ตฌ์กฐ ๋ฆฌ๋ ์ค ํ์ผ์์คํ ..
Web Server์ WAS โ
๐ Web Server ๐ ์ ์ ํด๋ผ์ด์ธํธ(์ฌ์ฉ์)๊ฐ ์น ๋ธ๋ผ์ฐ์ ์์ ๋ณด๋ด๋ HTTP ์์ฒญ์ ๋ฐ์ ์ ์ ์ปจํ ์ธ ๋ฅผ ์ ๊ณตํ๋ ์๋ฒ. ๐ ๊ธฐ๋ฅ ์น ๋ฌธ์๋ค์ HTTP ๊ท์ฝ์ ๋ฐ๋ผ ์น ํด๋ผ์ด์ธํธ์ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ํต์ . HTML, CSS, JavaScript, ์ด๋ฏธ์ง, ํ์ผ ๋ฑ ์ฆ์ ์๋ต๊ฐ๋ฅํ ์ ์ ์ปจํ ์ธ ์ ๊ณต. ๋์ ์ปจํ ์ธ ์์ฒญ ์ WAS์๊ฒ ํด๋น ์์ฒญ์ ๋๊ฒจ์ฃผ๊ณ , WAS์์ ์ฒ๋ฆฌํ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ. ๐ ์ข ๋ฅ Apache IIS nginx ๐ WAS (Web Application Server) ๐ ์ ์ ์น ์๋ฒ์ ์น ์ปจํ ์ด๋๊ฐ ํฉ์ณ์ง ํํ๋ก, ์น ์๋ฒ ๋จ๋ ์ผ๋ก๋ ์ฒ๋ฆฌํ ์ ์๋ ๋์ ์๋ฒ ์ปจํ ์ธ ๋ฅผ ์ํํ๋ ์๋ฒ. ์ฃผ๋ก DB ์๋ฒ์ ๊ฐ์ด ์ํ. HTTP๋ฅผ ํตํด ์ปดํจํฐ๋ ์ฅ์น์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํํด์ฃผ๋ ๋ฏธ๋ค..