์์์ฑ(persistence)๋ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ ํ๋ก๊ทธ๋จ์ ์คํ์ด ์ข ๋ฃ๋๋๋ผ๋ ์ฌ๋ผ์ง์ง ์๋ ๋ฐ์ดํฐ์ ํน์ฑ์ ์๋ฏธํ๋ค. ์์์ฑ์ ํ์ผ ์์คํ , ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํน์ ๊ฐ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ์ ํ์ฉํ์ฌ ๊ตฌํํ๋ค.
์ธํฐํ์ด์ค
ํ๋กํ ์ฝ
ํ๋์์์๊ฐ ORM
์์์ฑ : ๋ฐ์ดํฐ -> ์๊ตฌ์ ์ผ๋ก ์ ์ฅ
์ปจํ
์คํธ๋?
๋์์ ๋ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ด๋ค.
์ฆ, ์์์ฑ ์ปจํ ์คํธ๋ ์๋ฐ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ ๋ฐ์ดํฐ๋ฅผ selectํด์ ๊ฐ์ ธ์ค๋ ์ผ๋ จ์ ๋ชจ๋ ์ ๋ณด๋ฅผ ์์์ฑ ์ปจํ ์คํธ๋ฅผ ํตํด์ ๋ชจ๋ ํ์ธํ ์ ์๋ค.
- ์๋ฐ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํด์ผ ๋๋ ๋ชจ๋ ๋ฉํ๋ฐ์ดํฐ๋ค์ ์ ๋ณด๋ค์ ์์์ฑ ์ปจํ ์คํธ๊ฐ ๋ชจ๋ ๊ฐ์ง๊ณ ์๋ค.
- ์๋ฐ๋ ํญ์ ์์์ฑ ์ปจํ ์คํธ๋ฅผ ํตํด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ค์ ์ ์ฅํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ ๋ฐ์ดํฐ๋ ์์์ฑ ์ปจํ ์คํธ๋ฅผ ํตํด์ ๋ฐ์ดํฐ๊ฐ ์๋ฐ์ชฝ์ผ๋ก ์ ๋ฌ๋๋ค.
- ์์์ฑ ์ปจํ ์คํธ์์ ์ผ์ด๋๋ ๋ชจ๋ ์ผ๋ค์ ์๋์ผ๋ก ์ฒ๋ฆฌ๋๋ค.
โ๏ธ๋ด์ฅ ํฐ์ผ์ ์๊ธฐ์ socket๊ณผ httpํต์ ์ ๋ํด์ ์ง๊ณ ๋์ด๊ฐ๊ธฐ
์ด์์ฒด์ ์ ๋ด์ฅ๋์ด ์๋ ๊ฒ์ด๋ค.
โ๏ธํฐ์ผ์ ๋ฐ๋ก ์ค์นํ ํ์ ์์ด ๋ฐ๋ก ์คํ๊ฐ๋ฅํ๋ค.
์์ผ ํต์ ์ด๋)
B๊ฐ A๋ ํต์ ํ๊ณ ์ถ๋ค๋ฉด IP์ฃผ์์ 5000๋ฒ ํฌํธ๋ฒํธ๋ฅผ ๋ฃ์ด์ ์ฐ๊ฒฐ์ ํ๋ค. ํ์ง๋ง, 5000๋ฒ ํฌํธ๋ ์ฐ๊ฒฐ์ ์ฉ๋์ด๊ณ ๋ค๋ฅธ ํฌํธ๋ฒํธ(5001๋ฒ)๊ฐ ๋ง๋ค์ด์ ธ์ ์ฐ๊ฒฐ๋๋ค. ํ์ง๋ง ๋ 5001๋ฒ๊ณผ B๊ฐ ์ฐ๊ฒฐ(ํต์ )๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์์์ 5001๋ฒ์ด ์ฌ์ฉํ๋ค. ๋๋ฌธ์ 5000๋ฒ์ด ์ฐ๊ฒฐ์ ๋ฐ์ ์ ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ 5001๋ฒ์ ์ค๋ ๋๋ฅผ ๋ง๋ค์ด ์ฃผ๊ณ 5000๋ฒ์๋ main ์ค๋ ๋๋ฅผ ๋ง๋ค์ด์ค๋ค. ๊ทธ๋ฌ๋ฉด
C๊ฐ A๋ ํต์ ํ๊ณ ์ถ๋ค๋ฉด ๋ 5002๋ฒ ํฌํธ๋ฒํธ์ ์ค๋ ๋2๋ฅผ ๋ง๋ค์ด์ฃผ์ด ํต์ ํ๋ฉด ๋๋ค.
์ด๊ฒ ์์ผ ํต์ ์ด๋ค. ์์ผํต์ ์ ์ ๋๋ก ์๋ ค๋ฉด ์ค๋ ๋ ๊ฐ๋ ์ ์์์ผ๋๋ค.
์ฅ์ )
Socket ํต์ ์ ์ฅ์ ์ ์ฐ๊ฒฐ์ด ๊ณ์๋์ด์๋ค.
๋จ์ )
์ง์์ฐ๊ฒฐ ์ด๊ธฐ ๋๋ฌธ์ ๋ถํ๊ฐ ์ปค์ ๋๋ ค์ง ์ ์๋ค.
ํด๊ฒฐ๋ฐฉ๋ฒ)
http ํต์ ์ ์ฌ์ฉํ๋ฉด ๋๋ค.
- http ํต์ ์ ์ฐ๊ฒฐ์ ์ง์ํ์ง ์๊ณ Stateless ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
- http ํต์ ์ ๋จ์ํ๊ฒ ๋ฌธ์๋ฅผ ์ ๋ฌํ๋ ํต์ ์ด๋ค.
- http๋ ์ด์์ฒด์ ๊ฐ ๋ค๊ณ ์๋ ์์ผ์ด๋ผ๋ ์๋ฅผ ์ด์ฉํด์ ๋ง๋ค์ด์ก๋ค.
- http๊ธฐ๋ฐ์ ์์ผ์ด๋ค.
์์ฒญ์๋ง๋ค ๋ณํ๋ ์์(๋์ )์ด ์๋๋ผ ์ ์ ์ด๋ค. ์ด๊ฒ ์น์๋ฒ์ด๋ค.
์๋ฐ ์ฝ๋๋ฅผ ์ปดํ์ผ ํ๊ณ html ํ์ผ๋ก ๋ง๋ค์ด์ฃผ๊ณ ์ํ์นํํ ๋๋ ค ์ฃผ๋ ๊ฒ์ด๋ค.
์น์๋ฒ = ์ํ์น
์น์๋ฒ๋ ํํ ์ฌ์ฉํ๊ณ ์๋๊ฒ ์ํ์น๋ผ๋ ์น์๋ฒ์ด๋ค.
์ํ์น๋ ์๋ฐ์ฝ๋๋ฅผ ์ดํดํ์ง ๋ชปํ๋ค. ๊ทธ๋์ ์๋ฐ์ฝ๋ ์์ฒญ์์ ์๋ตํ์ง ๋ชปํ๋ค. ๊ทธ๋์ ์๊ธฐ์ ์ํ์น์ ํฐ์ผ์ด๋ผ๋ ์๋ฅผ ๋ฌ์์ค๋ค. ํฐ์ผ์ด๋ผ๋ ์ ๋ฅผ ๋ฌ๋ฉด ์ํ์น๊ฐ ์๊ธฐ๊ฐ ์ดํดํ์ง ๋ชปํ๋ ์ด๋ค ํ์ผ์ ๋ํ ์์ฒญ์ด ์ค๋ฉด ์ ์ด๊ถ์ ํฐ์ผ์ ๋๊ฒจ๋ฒ๋ฆฐ๋ค. ๊ทธ๋์ ํฐ์ผ์ .JSPํ์ผ ์์ ์๋ ์๋ฐ์ฝ๋๋ฅผ ์ปดํ์ผํ๊ณ ์ปดํ์ผ์ด ๋๋๋ฉด ์ปดํ์ผ์ด ๋๋ ๋ฐ์ดํฐ๋ฅผ .html ํ์ผ์๋ค๊ฐ ๋ฎ์ด ์ด๋ค.
์ฆ, ์ํ์น๋ ํด๋น .htmlํ์ผ์ ์๋ตํด์ฃผ๋ ๊ฒ์ด๋ค.
์น ๋ธ๋ผ์ฐ์ ๋ html, js, css ํ์ผ์ ์ฝ์ด์ฃผ๋ ํ๋ก๊ทธ๋จ์ด๋ค. ์๊ธฐ๊ฐ ์ดํดํ ์ ์๋ ํ์ฅ์๊ฐ ๋ค์ด์ค๋ฉด ์ฌ๊ธฐ๋ฅ์ ํ ์ ์๋ ๊ฒ์ด๋ค.
Service(HttpServletRequest, HttpServletResponse)๋ ํ์ผ์ด ๋ง๋ค์ด์ฃผ๋ ๊ฐ์ฒด์ด๋ค.
์๋ธ๋ฆฟ(Servlet)์ด๋ ๋์ ์น ํ์ด์ง๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉ๋๋ ์๋ฐ ๊ธฐ๋ฐ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ ์ด๋ค. ์๋ธ๋ฆฟ์ ์น ์์ฒญ๊ณผ ์๋ต์ ํ๋ฆ์ ๊ฐ๋จํ ๋ฉ์๋ ํธ์ถ๋ง์ผ๋ก ์ฒด๊ณ์ ์ผ๋ก ๋ค๋ฃฐ ์ ์๊ฒ ํด์ค๋ค.
์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์๋ธ๋ฆฟ์ ๋ด๊ณ ๊ด๋ฆฌํด์ฃผ๋ ์ปจํ ์ด๋์ด๋ค. ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ๊ตฌํ๋์ด ์๋ ์๋ธ๋ฆฟ ํด๋์ค์ ๊ท์น์ ๋ง๊ฒ ์๋ธ๋ฆฟ์ ๊ด๋ฆฌํ๋ฉฐ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ฐ์ผ๋ฉด HttpServletRequest์ HttpServletResponse ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ post, get ์ฌ๋ถ์ ๋ฐ๋ผ ๋์ ์ธ ํ์ด์ง๋ฅผ ์์ฑํ์ฌ ์๋ตํ๋ค.
์น ํ์ด์ง๋ ํฌ๊ฒ ์ ์ (Static)๊ณผ ๋์ (Dyanamic)์ผ๋ก ๋๋๋ค. ์ ์ ๊ณผ ๋์ ์ ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ ์ด๋ฏธ ๋ง๋ค์ด์ ธ ์๋ ๋ฌธ์๋ง์ ์๋น์คํ ๊ฒ์ด๋ ์๋๋์ ์ฐจ์ด์ด๋ค. ์ ์ ์ ์ด๋ฏธ ๋ง๋ค์ด์ง ๊ฒ๋ง์ ์ฌ์ฉํ๋ ๊ฒ์ด๊ณ ๋์ ์ ํด๋ผ์ด์ธํธ์๊ฒ ์ค์๊ฐ์ผ๋ก ์ ๋ณด๋ฅผ ๊ฐ๊ณต ์ฒ๋ฆฌํ์ฌ ์๋น์คํ๋ ๊ฒ์ด๋ค.
๋์ ์ธ ์น ํ์ด์ง๋ ์ฃผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ์ฐ๋ํ์ฌ ์น ์๋ฒ์์ ์ฒ๋ฆฌํ๋ค.
URL
Spring์ ์ง์ ์ ์ธ ์์์ ์์ฒญ์ ํ ์ ์๋ค.
Spring์ ์๋ณ์๋ฅผ ํตํด์ ์์ฒญ์ ํด์ผ๋๋ค.
URL : ์์ ์ ๊ทผ X
URI : ์๋ณ์ ์ ๊ทผ
URL์ ๊ทผ๋ฐฉ์์ Spring์์๋ ๋ค ๋ง์๋ค.
์ฆ, ์๋ณ์๋ฅผ ํตํด์ ์์ฒญ์ ํด์ผ๋๋ค. ํน์ ํ ํ์ผ ์์ฒญ์ ํ ์ ์๊ธฐ ๋๋ฌธ์
์์ฒญ ์์๋ ๋ฌด์กฐ๊ฑด ์๋ฐ๋ฅผ ๊ฑฐ์ณ์ผ๋๋ค.
URL ์ฃผ์ ํํ
http://naver.com/a.png
URI ์ฃผ์ ํํ
http://naver.com/picture/a
20๊ฐ์ ์ค๋ ๋๊ฐ ์๊ณ 21๋ฒ์งธ ์์ฒญ์ ํ์ ๋ ๋น ์ค๋ ๋๊ฐ ์๋ค๋ฉด ๋๊ธฐํ๋ค. 1๋ฒ ์ค๋ ๋๊ฐ ์๋ต์ ํ๊ณ ์์
์ด ๋๋๋ฉด ์ฌ๋ผ์ง๋๊ฒ ์๋๋ผ 21๋ฒ์งธ ์์ฒญ์ ์ฌ์ฌ์ฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋นจ๋ผ์ง๋ค.
์ฌ๊ธฐ์์ Servlet/JSP ๋งคํ์(web.xml์ ์ง์ ๋งคํ or @WebServlet ์ด๋ ธํ ์ด์ ์ฌ์ฉ)์ ๋ชจ๋ ํด๋์ค์ ๋งคํ์ ์ ์ฉ์ํค๊ธฐ์๋ ์ฝ๋๊ฐ ๋๋ฌด ๋ณต์กํด์ง๊ธฐ ๋๋ฌธ์ FrontController ํจํด์ ์ด์ฉํจ.
web.xml ์ ๋ญ๋ก ๋ณด๋ฉด ๋๋๋ฉด?
๋ฌธ์ง๊ธฐ๊ฐ web.xml์ด๋ค.
์ด๊ธฐํ๋ผ๋ฏธํฐ๋ ํ๋ฒ ์ค์ ํ๋ฉด ์ด๋์๋ ์๋ํ ์ ์๋ค.
a๊ฐ '๋ค'๋ฅผ ๋ค๊ณ ์ค๋ฉด ๋ฌธ์ง๊ธฐ(web.xml)๋ ์์ธ ์ฉ์ฐ๊ตฌ๋ก ๊ฐ๋ฉด๋๋ค๊ณ ํด์ฃผ๋ ๊ฒ์ด๋ค.
'๋ค'๋ ์์ธ ์ฉ์ฐ๊ตฌ๋ก ์ ์๋์ด ์๊ธฐ ๋๋ฌธ์ ๊ทธ์ชฝ์ ๋งคํํด์ฃผ๋ ๊ฒ์ด๋ค.
b๋ ์๋ฌด๊ฒ๋ ์๊ฐ์ ธ์ฌ ์ ์๋ค. ์ด๊ฒ get๋ฐฉ์(select)์ด๋ค.
a๊ฐ ์์ด๋ผ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค. ๊ทธ๋ฌ๋ฉด ๋ฌธ์ง๊ธฐ๊ฐ Mime Type์ด ๋ญ์ผ? ํ๋ฉด ์์ด์์ ํ๋ฉด ์์ฐฝ๊ณ ๋ก ๋ณด๋ธ๋ค. ์์ฐฝ๊ณ ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ ์ฐ๋ฆฌ๋๋ผ์์ ์์์ง ์์์ง ํ๋จํ๊ณ ๋จน์ ์ ์์ผ๋ฉด ๊ฐ๊ณตํ๋ค.
get๋ฐฉ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค์ง ์๋๋ค.
Mime Type์ ์์์ผํ๋ค. ์? ์ด๋ค ๋ฌผ๊ฑด์ ๋ค๊ณ ์ค๋์ง ์์์ผ์ง ์์ ์ด๋๋ก ๋ณด๋ด์ผ ํ ์ง ์๋ค.
๊ฒฐ๋ก ) Mime Type์ ๋ด๊ฐ ๋ค๊ณ ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ญ์ง๋ฅผ ์๋ ค์ฃผ๋๊ฑฐ ๊ฒ์ด๋ค.
์๋ฌด ์ด์ ์์ด ๋ค์ด์จ ์ ๋ค์ ๊ด์ฅ์ผ๋ก ๋ณด๋ด๋ผ๋๊ฒ Welcom File list์ด๋ค.
์ต์ด ์๋จ์์ request ์์ฒญ์ ๋ฐ์์ ํ์ํ ํด๋์ค์ ๋๊ฒจ์ค๋ค. ์? web.xml์ ๋ค ์ ์ํ๊ธฐ๊ฐ ๋๋ฌด ํ๋ฌ.
์ด๋ ์๋ก์ด ์์ฒญ์ด ์๊ธฐ๊ธฐ ๋๋ฌธ์ request์ response๊ฐ ์๋กญ๊ฒ new๋ ์ ์๋ค. ๊ทธ๋์ ์๋์ RequestDispatch๊ฐ ํ์ํ๋ค.
.do(ํน์ ์ฃผ์) ๋ค์ด์ค๋ฉด FrontController๋ก ๋ณด๋ด๋ผ๋ ์ฝ์์ ์ฝ๋๋ฅผ ์ง ๋ค ์ด๋์? web.xml์ ์จ๋๋๋ค.
์์ฒญํ ์ฌ๋๋ค์ ์ ๋ณด๋ค์ ๋ฐ๋ผ์ response๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ค๋ค. ํ์ผ์ด ๋ง๋ค์ด์ค๋ค.
web.xml์ JSP/servlet ๋งคํ์ด ๋๋ฌด ๋ง์ผ๋ฉด ์ด๋ฐ ํน์ ์ฃผ์๋ฅผ FrontController๊ฐ ์ฒ๋ฆฌํ๋ค.
ํ์ํ ํด๋์ค ์์ฒญ์ด ๋๋ฌํ์ ๋ FrontController์ ๋์ฐฉํ request์ response๋ฅผ ๊ทธ๋๋ก ์ ์ง์์ผ์ค๋ค.
์ด๊ฑฐ๋ฅผ ์ด์ฉํด์ผ์ง ํ์ด์ง๊ฐ ๋ฐ์ดํฐ ์ด๋์ด ๊ฐ๋ฅํ๋ค.
FrontController ํจํด์ ์ง์ ์ง๊ฑฐ๋ RequestDispatcher๋ฅผ ์ง์ ๊ตฌํํ ํ์๊ฐ ์๋ค. ์๋ํ๋ฉด ์คํ๋ง์๋ DispatchServlet์ด ์๊ธฐ ๋๋ฌธ์ด๋ค. DispatchServlet์ FrontController ํจํด + RequestDispatcher์ด๋ค.
DispatchServlet์ด ์๋์์ฑ๋์ด ์ง ๋ ์ ๋ง์ ๊ฐ์ฒด๊ฐ ์์ฑ(IoC)๋๋ค. ๋ณดํต ํํฐ๋ค์ด๋ค. ํด๋น ํํฐ๋ค์ ๋ด๊ฐ ์ง์ ๋ฑ๋กํ ์๋ ์๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ํ ํํฐ๋ค์ ์๋ ๋ฑ๋ก ๋์ด์ง๋ค.