์, ์๋ธ๋ ์ ์ ํด์ผํ ๊น? ๋ฐ๋ก ๋ฐฑ์๋ ๊ฐ๋ฐ, MVC ๋ชจ๋ธ ๊ตฌํํ๊ธฐ ์ํด์ ๋ผ๊ณ ํ๋ฉด ๋๋ค.
์ด๋๋ ์ดํด๊ฐ ํ๋๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
1. ์๋ธ๋ฆฟ์ด๋ ๋ฌด์์ธ๊ฐ?
ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์กํ๋ Servlet ํด๋์ค์ ๊ตฌํ ๊ท์น์ ์งํจ ์๋ฐ ํ๋ก๊ทธ๋จ" (ํด๋ผ์ด์ธํธ์ HTTP ์์ฒญ์ ๋ํด ํน์ ๊ธฐ๋ฅ์ ์ํ, HTML๋ฌธ์๋ฅผ ์์ฑ๋ฑ์ ์๋ต์ ํ๋ ์ธํฐ๋ท ์๋ฒ ํ๋ก๊ทธ๋จ)
#ํด๋ผ์ด์ธํธ= ์ฌ์ฉ์ = ๋ณดํต์ ์ฌ๋๋ค
๋์ ์ฝํ ์ธ ๋ฅผ ์์ฑํ๊ธฐ ์ํ ํ๋์ ๊ธฐ์ ??
# ์ฐธ์กฐ
์๋ธ๋ฆฟ์ ๋จ์ ์ธํฐํ์ด์ค๋ ํด๋์ค ๊ฐ์ ๊ฒ์ด ์๋๋๋ค. ์ฌ์ค ์ด ๋ง์ ์กฐ๊ธ์ ๊ฑฐ์ง๋ง(?)์ด ์์ฌ์๋๋ฐ์. ๋ค์์ ๋ ๋์ค๋, ์กฐ๊ธ๋ง ๊ธฐ๋ค๋ ค์ฃผ์ธ์. ์ง๊ธ์ ๊ทธ์ ๋์ ์ฝํ ์ธ ๋ฅผ ์์ฑํ๊ธฐ ์ํ ํ๋์ ๊ธฐ์ ์ด๋ผ๊ณ ์๊ฐํด์ฃผ์ธ์.
์ฌ์ค ์๋ธ๋ฆฟ ์ด์ ์ ๋์ ์ฝํ ์ธ ์์ฑ์ ์ํ ๊ธฐ์ ์ด ์์์ต๋๋ค. ์ด์ฐฝ๊ธฐ Applets์ด๋ผ๋ ๊ธฐ์ ์ด์๋๋ฐ์. ๊ทธ ๋ค์ CGI๋ผ๋ ๊ธฐ์ ๋ ์์์ต๋๋ค. ํ์ง๋ง CGI๋ ๊ธฐ๋ณธ์ ์ผ๋ก Java ํ๋ก์ธ์ค ๋จ์๋ก ๋์์ ํ์์ต๋๋ค. ์ฆ ์์ฒญ์ด ์์ ๋๋ง๋ค ํ๋ก์ธ์ค๋ฅผ ํ๋์ฉ ์์ฑ์ ํ์ด์ผ ํฉ๋๋ค. ์์ฆ๊ฐ์ด ๋ฉํฐ์ค๋ ๋ฉ ๊ฐ๋ฐ ํ๊ฒฝ์ด ๋น์ฐ์ ๋๋ ์์ ์์, ๊ฑฐ๋ํ ํ๋ก๊ทธ๋จ์ด ํ๋ก์ธ์ค ๋จ์๋ก ๋์์ ํ๊ฒ ๋๋ฉด ๋นํจ์จ์ ์ผ ๊ฒ ์ ๋๋ค. ์ฆ ์๋ฒ์ ์์์ ๋ง์ด ์ฌ์ฉํ ์๋ฐ์ ์์์ต๋๋ค.
ํ์ง๋ง Servlet์ Thread ๋จ์๋ก ๋์์ ํ๋ฉฐ, ํ๋ฒ ์ด๊ธฐํ๋์ด์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ์๋ธ๋ฆฟ์ ๋ค์ ๋ถ๋ฅด์ง ์์๋ ๋ฉ๋๋ค. ์ฌ๊ธฐ์ ๋ค์ ๋ถ๋ฅด์ง ์์๋ ๋๋ค๋ ๋ง์, ์ด๊ธฐํ๋ฅผ ํตํด์ ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ ์ฌ๋ฆฌ๋ ๊ณผ์ ์ด ์์ด์ก๋ค๋ ์๋ฏธ์ ๋๋ค. ๋ํ ์ฌ์ฉํ์ง ์์ ๋๋ destroy๋ฅผ ํ๊ธฐ๋ ํฉ๋๋ค. ์ฆ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋์์ต๋๋ค.
์์์ ์ค๋ช ํ๋ฏ์ด Servlet์ ๋์ ์ฝํ ์ธ ๋ฅผ ์์ฑํ๊ธฐ ์ํ ๊ธฐ์ ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด๋ฌํ ๋์ ์ฝํ ์ธ ๋ฅผ ์ด๋ป๊ฒ ์์ฑํ๋ ๊ฒ์ผ๊น์? ๊ทธ๋ฅ ์๋ฌด๊ฒ๋ ์๋ HTML ํ์ด์ง๊ฐ ๊ฐ์๊ธฐ ๋์ ์ผ๋ก ์์ง์ด์ง๋ ์์ ๊ฒ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก HTML์ ์ ์ ํ์ด์ง ์ ๋๋ค. ์ฆ ์ด๋ฏธ ๋ง๋ค์ด์ง๊ณ , ์ ํด์ง ์ฝํ ์ธ ๋ง ๋ณด์ฌ์ค๋๋ค. ์ฌ์ฉ์์ ๋ง๊ฒ ํ์ด์ง ์์์ ๋ค๋ฅธ ์ ๋ณด๋ฅผ ์ ํด์ค ์ ์์ต๋๋ค. ํ์ง๋ง ์๋ธ๋ฆฟ์ด ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ผ๋ ๊ฒ์ ํตํด์ ์๋ฒ์ ํต์ ์ ํ๋ฉฐ, View ํ์ด์ง์ ์๋ง์ ์ฝํ ์ธ ๋ฅผ ๋ณด๋ด์ค๋๋ค.
[Java/Java ์ด๋ก ] - ์น ์๋ฒ๋?
2. ์๋ธ๋ฆฟ ์ปจํ ์ด๋
์ฐ์ ์ด๊ฒ์ ๊ผญ ๊ธฐ์ตํ์. ํด๋ผ์ด์ธ๋ ๋ค์ 2๊ฐ์ง๋ฅผ ์ํํด์ค์ผํ๋ค. Request/Response
๊ทธ๋ ๋ค๋ฉด ์๋ธ๋ฆฟ์ด๋ผ๋ ๋์ ๊ด๋ฆฌํด์ฃผ๋ ์น๊ตฌ๊ฐ ์์ด์ผ ํ์ง ์์๊น? ๊ทธ๋ฅ ์๋ฒ์ ์๋ธ๋ฆฟ ๋ง๋ค์ด์ ์์นํด ๋๋ค๊ณ ํด๋ผ์ด์ธํธ์ Request/Response ๋ฅผ ์ฒ๋ฆฌํด์ค๋ฆฌ๊ฐ ์๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก ์๋ธ๋ฆฟ์ ๊ด๋ฆฌํด์ฃผ๋ ๋์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ผ๊ณ ํ๋ค. ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์๋ธ๋ฆฟ์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ์์ฒญ์ ๋ฐ๋ฅธ ์ค๋ ๋๋ฅผ ์์ฑํด์ค๋ค. ๋, ํด๋ผ์ด์ธํธ์ Request ๋ฅผ ๋ฐ์์ฃผ๊ณ Response ๋ฅผ ๋ณด๋ผ ์ ์๊ฒ ์น ์๋ฒ์ ์์ผ์ ๋ง๋ค์ด์ ํต์ ์ ํด์ค๋ค. ์์ธํ ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ์ญํ ์ ์๋์ ๊ฐ๋ค.
- ํต์ ์ง์
์๋ธ๋ฆฟ๊ณผ ์น ์๋ฒ๊ฐ ํต์ ํ ์ ์๋ ์์ฌ์ด ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค. ์ฐ๋ฆฌ๊ฐ ํต์ ์ ํ๋ค๊ณ ์๊ฐํ ๋ ์์ผ์ ๋ง๋ค๊ณ , ํน์ ํฌํธ๋ฅผ ๋ฆฌ์ค๋ํ๊ณ , ์ฐ๊ฒฐ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์คํธ๋ฆผ์ ์์ฑํด์ ์์ฒญ์ ๋ฐ๋๋ค๊ณ ์๊ณ ์๋๋ฐ ์ด ๊ณผ์ ์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ๋์ ํด์ฃผ๋ ๊ฒ์ด๋ค. ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์ด๋ฐ ํต์ ๊ณผ์ ์ API ๋ก ์ ๊ณตํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ค. - ์๋ช
์ฃผ๊ธฐ ๊ด๋ฆฌ
์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ๊ธฐ๋๋๋ ์๊ฐ ์๋ธ๋ฆฟ ํด๋์ค๋ฅผ ๋ก๋ฉํด์ ์ธ์คํด์คํํ๊ณ , ์ด๊ธฐํ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ , ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์ ์ ํ ์๋ธ๋ฆฟ ๋ฉ์๋๋ฅผ ์ฐพ์์ ํธ์ถํ๋ค. ๋ง์ฝ ์๋ธ๋ฆฟ์ ์๋ช ์ด ๋คํ๋ ์๊ฐ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์งํํ๋ค. - ๋ฉํฐ์ค๋ ๋ฉ ๊ด๋ฆฌ
์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ํด๋น ์๋ธ๋ฆฟ์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์ค๋ ๋๋ฅผ ์์ฑํด์ ์์ ์ ์ํํ๋ค. ์ฆ ๋์์ ์ฌ๋ฌ ์์ฒญ์ด ๋ค์ด์จ๋ค๋ฉด ๋ฉํฐ์ค๋ ๋ฉ ํ๊ฒฝ์ผ๋ก ๋์๋ค๋ฐ์ ์ธ ์์ ์ ๊ด๋ฆฌํ๋ค. - ์ ์ธ์ ์ธ ๋ณด์๊ด๋ฆฌ
์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ๋ณด์ ๊ด๋ จ๋ ๊ธฐ๋ฅ์ ์ง์ํ๋ค. ๋ฐ๋ผ์ ์๋ธ๋ฆฟ ์ฝ๋ ์์ ๋ณด์ ๊ด๋ จ๋ ๋ฉ์๋๋ฅผ ๊ตฌํํ์ง ์์๋ ๋๋ค. - JSP ์ง์
3. ํฐ์บฃ
ํฐ์บฃ์ด๋ผ๋ฉด ํ๋ก๊ทธ๋๋ฐ์ ํ๋ ์ฌ๋๋ค์ ๋ค ๋ค์ด๋ดค์ ์ด๋ฆ์ด๋ค. ํ์ง๋ง ์์งํ๊ฒ ๋งํด์ ๋๋ ํฐ์บฃ์ "์คํ์์ค ์น ์๋ฒ ์๋์ผ? ๊ทธ๊ฑฐ ๋๋ฆฌ๋ฉด ๊ณ ์์ด ์น ํ์ด์ง ๋จ๋๋ฐ" ์ ๋๋ก ์๊ณ ์์๋ค. ๋ญ... ์ด์ฐ๋๋ ํฐ์บฃ์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ด๋ค. ํฐ์บฃ์ ์น ์๋ฒ์ ์ฐ๋ํ์ฌ ์คํํ ์ ์๋ ์๋ฐ ํ๊ฒฝ์ ์ ๊ณตํ์ฌ ์๋ฐ ์๋ฒ ํ์ด์ง(JSP)์ ์๋ฐ ์๋ธ๋ฆฟ์ด ์คํํ ์ ์๋ ํ๊ฒฝ์ ์ ๊ณตํ๊ณ ์๋ค. ํฐ์บฃ์ ๊ด๋ฆฌํด์ ํตํด ์ค์ ์ ๋ณ๊ฒฝํ ์ ์์ง๋ง, XML ํ์ผ์ ํธ์งํ์ฌ ์ค์ ํ ์๋ ์๋ค. ๊ทธ๋ฆฌ๊ณ , ํฐ์บฃ์ HTTP ์๋ฒ๋ ์์ฒด ๋ด์ฅํ๊ธฐ๋ ํ๋ค. ๋ณดํต ํฐ์บฃ์ WAS ์ ๊ธฐ๋ฅ์ ์ํํ๋ค. ์์ฆ ํฐ์บฃ์ ๋ฒ์ ผ์ด ์ฌ๋ผ๊ฐ๋ฉด์ ์น ์๋ฒ์ ๊ธฐ๋ฅ๋ ์ถฉ๋ถํ ์ ์ํํ๊ธฐ ๋๋ฌธ์ ๊ตณ์ด ์น ์๋ฒ์ WAS ๋ฅผ ๋๋ ์ ์๊ฐํ์ง ์์๋ ๋๊ฒ ๋ค.
์ถ์ฒ: https://jusungpark.tistory.com/15 [์ ๋ฆฌ์ ๋ฆฌ์ ๋ฆฌ]
์ ๋ฆฌ
Servlet ํน์ง
- ํด๋ผ์ด์ธํธ์ Request์ ๋ํด ๋์ ์ผ๋ก ์๋ํ๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ปดํฌ๋ํธ
- HTML์ ์ฌ์ฉํ์ฌ ๋ฆฌ์คํฐ์คํ๋ค.= ์๋ต
- JAVA์ ์ฐ๋ ๋๋ฅผ ์ด์ฉํ์ฌ ๋์ํ๋ค.
- MVC ํจํด์์์ ์ปจํธ๋กค๋ฌ๋ก ์ด์ฉ๋๋ค.
- HTTP ํ๋กํ ์ฝ ์๋น์ค๋ฅผ ์ง์ํ๋ java.servlet.http.HttpServlet ํด๋์ค๋ฅผ ์์๋ฐ๋๋ค.
- UDP๋ณด๋ค ์๋๊ฐ ๋๋ฆฌ๋ค.
- HTML ๋ณ๊ฒฝ ์ Servlet์ ์ฌ์ปดํ์ผํด์ผ ํ๋ ๋จ์ ์ด ์๋ค.
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์กํ๋ Servlet ํด๋์ค์ ๊ตฌํ ํ์น์ ์งํจ ๊ธฐ์
- ์๋ฐ๋ฅผ ์ฌ์ฉํ์ฌ ์น์ ๋ง๋ค๊ธฐ ์ํด ํ์ํ ๊ธฐ์
- ์๋ฅผ ๋ค์ด, ์ ์ ๊ฐ ๋ก๊ทธ์ธ ์๋์์ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๊ณ ๋ก๊ทธ์ธ ๋ฒํผ์ ๋๋ฅธ๋ค. ์ด ๋, ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์์ ๋ค์ด์ค๋ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ํ์ธํ๊ณ ๋ค์ ํ์ด์ง๋ฅผ ๋์์ฃผ๋๋ฐ ์ด๋ฌํ ์ญํ ์ ์ํํ๋ ๊ฒ์ด Servlet์ด๋ค.
Servlet ๋์ ๋ฐฉ์
Client -> Servlet Contatiner๋ก HTTP Request -> HttpServletRequest, HttpServletResponse ๊ฐ์ฒด ์์ฑ -> ์๋ธ๋ฆฟ ๋ถ์(Web.xml) -> ์ฐพ์ ์๋ธ๋ฆฟ -> service() ๋ฉ์๋ ํธ์ถ -> doGet(), doPost() ํธ์ถ -> HttpServletRequest, HttpServletResponse ๋ ๊ฐ์ฒด ์๋ฉธ
- ์ฌ์ฉ์(ํด๋ผ์ด์ธํธ)๊ฐ URL์ ์น๊ณ ์ํฐ์น๋ฉด HTTP Request๋ฅผ Servlet Container๋ก ์ ์ก
- Servlet Contatiner๋ HttpServletRequest, HttpServletResponse ๋ ๊ฐ์ฒด ์์ฑ
- web.xml์ ์ฌ์ฉ์๊ฐ ์์ฒญํ URL์ ๋ถ์ํ์ฌ ์ด๋ ์๋ธ๋ฆฟ์ ๋ํด ์์ฒญ์ ํ ๊ฒ์ธ์ง ์ฐพ๋๋ค.
- ํด๋น ์๋ธ๋ฆฟ์์ service ๋ฉ์๋๋ฅผ ํธ์ถํ ํ ํด๋ผ์ด์ธํธ์ POST, GET ์ฌ๋ถ์ ๋ฐ๋ผ doGet() ๋๋ doPost()๋ฅผ ํธ์ถํ๋ค.
- doGet(), doPost()๋ ๋์ ํ์ด์ง๋ฅผ ์์ฑํ ํ HttpServletResponse ๊ฐ์ฒด์ ์๋ต์ ๋ณด๋ธ๋ค.
- ์๋ต์ด ๋๋๋ฉด HttpServletRequest, HttpServletResponse ๋ ๊ฐ์ฒด๋ฅผ ์๋ฉธ์ํจ๋ค.
Servlet Container(์๋ธ๋ฆฟ ์ปจํ ์ด๋) ๋
์๋ธ๋ฆฟ์ ๊ด๋ฆฌํด์ฃผ๋ ์ปจํ ์ด๋
์๋ฅผ ๋ค์๋ฉด, ์๋ธ๋ฆฟ์ด ์ด๋ ํ ์ญํ ์ ์ํํ๋ ์ ์์๋ผ๊ณ ๋ณด๋ฉด, ์๋ธ๋ฆฟ ์ปจํ
์ด๋๋ ๊ทธ ์ ์์๋ฅผ ๋ณด๊ณ ์ํํ๋ค๊ณ ๋ณผ ์ ์๋ค. ์๋ธ๋ฆฟ ์ปจํ
์ด๋๋ ํด๋ผ์ด์ธํธ์ Request๋ฅผ ๋ฐ๊ณ Response๋ฅผ ํ ์ ์๊ฒ ์น์๋ฒ์ ์์ผ์ ๋ง๋ค์ด ํต์ ํ๋ค. ๋ํ์ ์ธ ์๋ก Tomcat์ด ์๋ค. ํฐ์บฃ์ ์ค์ ๋ก ์น์๋ฒ์ ํต์ ํ์ฌ JSP(์๋ฐ ์๋ฒ ํ์ด์ง)์ Servlet์ด ์๋ํ๋ ํ๊ฒฝ์ ์ ๊ณตํด์ค๋ค.
Servlet Container ์ญํ
- ์น์๋ฒ์์ ํต์ ์ง์
- ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์๋ธ๋ฆฟ๊ณผ ์น์๋ฒ๊ฐ ์์ฝ๊ฒ ํต์ ํ ์ ์๊ฒ ํด์ค๋ค. ์ผ๋ฐ์ ์ผ๋ก ์์ผ์ ๋ง๋ค๊ณ listen, accept ๋ฑ์ ํด์ผํ์ง๋ง ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ API๋ก ์ ๊ณตํ์ฌ ๋ณต์กํ ๊ณผ์ ์ ์๋ตํ ์ ์๊ฒ ํด์ค๋ค. ๊ทธ๋์ ๊ฐ๋ฐ์๊ฐ ์๋ธ๋ฆฟ์ ๊ตฌํํด์ผ ํ ๋น์ง๋์ค ๋ก์ง์ ๋ํด์๋ง ์ด์ ์ ๋๊ฒ๋ ๋์์ค๋ค.
- ์๋ธ๋ฆฟ ์๋ช
์ฃผ๊ธฐ ๊ด๋ฆฌ
- ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์๋ธ๋ฆฟ ํด๋์ค๋ฅผ ๋ก๋ฉํ์ฌ ์ธ์คํด์คํํ๊ณ , ์ด๊ธฐํ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ , ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์ ์ ํ ์๋ธ๋ฆฟ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค. ๋ํ ์๋ช ์ด ๋ค ๋ ์๋ธ๋ฆฟ์ ์ ์ ํ๊ฒ ๊ฐ๋น์ง ์ฝ๋ ํฐ๋ฅผ ํธ์ถํ์ฌ ํ์์๋ ์์ ๋ญ๋น๋ฅผ ๋ง์์ค๋ค.
- ๋ฉํฐ์ฐ๋ ๋ ์ง์ ๋ฐ ๊ด๋ฆฌ
- ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ Request๊ฐ ์ฌ ๋๋ง๋ค ์๋ก์ด ์๋ฐ ์ฐ๋ ๋๋ฅผ ํ๋ ์์ฑํ๋๋ฐ, HTTP ์๋น์ค ๋ฉ์๋๋ฅผ ์คํํ๊ณ ๋๋ฉด, ์ฐ๋ ๋๋ ์๋์ผ๋ก ์ฃฝ๊ฒ ๋๋ค. ์๋๋ ์ฐ๋ ๋๋ฅผ ๊ด๋ฆฌํด์ผ ํ์ง๋ง ์๋ฒ๊ฐ ๋ค์ค ์ฐ๋ ๋๋ฅผ ์์ฑ ๋ฐ ์ด์ํด์ฃผ๋ ์ฐ๋ ๋์ ์์ ์ฑ์ ๋ํด์ ๊ฑฑ์ ํ์ง ์์๋ ๋๋ค.
- ์ ์ธ์ ์ธ ๋ณด์ ๊ด๋ฆฌ
- ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๋ ๋ณด์์ ๊ด๋ จ๋ ๋ด์ฉ์ ์๋ธ๋ฆฟ ๋๋ ์๋ฐ ํด๋์ค์ ๊ตฌํํด ๋์ง ์์๋ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ณด์๊ด๋ฆฌ๋ XML ๋ฐฐํฌ ์์ ์์๋ค๊ฐ ๊ธฐ๋กํ๋ฏ๋ก, ๋ณด์์ ๋ํด ์์ ํ ์ผ์ด ์๊ฒจ๋ ์๋ฐ ์์ค ์ฝ๋๋ฅผ ์์ ํ์ฌ ๋ค์ ์ปดํ์ผ ํ์ง ์์๋ ๋ณด์๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
3. Servlet Package
์๋ฒ์ ํต์ ์ ํ๋ ์๋ธ๋ฆฟ์ ๋น์ฐํ HTTP ํ๋กํ ์ฝ์ ์ด์ฉํฉ๋๋ค. javax.servlet / javax.servlet.http 2๊ฐ์ ํจํค์ง๊ฐ ์๋ธ๋ฆฟ ๊ธฐ์ ์ ์ฌ์ฉํ๊ธฐ ์ํ ํต์ฌ์ ์ธ ์ธํฐํ์ด์ค์ ํด๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. IDE์์ ์๋ธ๋ฆฟ ํด๋์ค๋ฅผ ์์ฑํ์๋ฉด, ์๋์ผ๋ก javax.servlet.http ํจํค์ง์ HttpServlet ํด๋์ค๋ฅผ ์์๋ฐ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. HttpServlet ํด๋์ค๋ ์น์ฌ์ดํธ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์ HTTP๋ฅผ ๋ค๋ฃฐ ์ ์๋ ๋ฉ์๋๋ค์ ์ค๋ฒ๋ผ์ด๋ฉํ ์ ์๊ฒ ํ๋๋ฐ์. ํํ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ doGet, doPost ๊ฐ์ ๋ฉ์๋๋ค์ ๋๋ค. ์ด๋ฌํ ํจํค์ง๋ฅผ ํตํด์ ์๋ธ๋ฆฟ์ด ๋จ์ ํด๋์ค์ด์ง๋ง HTTP ํ๋กํ ์ฝ์ ์์ฒญ์ ๋ฐ๊ณ , ์๋ตํ ์ ์๋ ๊ธฐ๋ฅ์ ํ ์ ์์ต๋๋ค.
4. Servlet Class Hierarchy
์์์ ์ธ๊ธํ HttpServlet๋ ์ด๋ป๊ฒ ์๋์ ํ๋ ๊ฒ์ผ๊น์? ๋ถ๋ช ํ ๊ฑด ํ๋ก๊ทธ๋๋ฐ์ ํจ์ ์์ด์ ์๋ฌด๋ฐ ๊ธฐ๋ฅ์ ๊ตฌํํ์ง ์์๋๋ฐ๋, ์๋์ผ๋ก ๋์ํ๋ ๊ฒ์ ์์ต๋๋ค.
๋จผ์ ์๋์ ๊ทธ๋ฆผ์ ๋ณด๊ฒ ์ต๋๋ค.
์๋ธ๋ฆฟ ๊ณ์ธต
์๋ธ๋ฆฟ ๊ธฐ์ ์ ๊ตฌํํ๋ javax.servlet ํจํค์ง์๋ ๋ฟ๋ฆฌ์ ํด๋นํ๋ Servlet ์ธํฐํ์ด์ค๊ฐ ์์ต๋๋ค. GenericServlet ํด๋์ค๋ Servlet ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ณ ์์ผ๋ฉฐ, ๋์์ ServletConfig ์ธํฐํ์ด์ค๋ ๊ตฌํํ๊ณ ์์ต๋๋ค. ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ์๋ธ๋ฆฟ๋ค์ ์ด๊ธฐํํ๋ ๋์ ์ ๋ณด๋ฅผ ๋๊ฒจ์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก MyServlet, ์ฆ ์ฐ๋ฆฌ๊ฐ ์์ฑํ ์๋ธ๋ฆฟ ํด๋์ค๊ฐ HttpServlet ํด๋์ค๋ฅผ ์์ํ๋ ๊ตฌ์กฐ์ ๋๋ค. ๋น์ฐํ MyServlet์ ์ด๋ฆ์ ์ฌ์ฉ์๊ฐ ์์ ๋กญ๊ฒ ์ง์ ์ ์์ต๋๋ค. ์ ํด์ง ์ด๋ฆ์ด ์๋๋๋ค.
4. 1. Servlet Interface
์์์ ์ธ๊ธ๋๋ ธ๋ฏ์ด Servlet ์ธํฐํ์ด์ค๋ javax.servlet ํจํค์ง์ ๋ฟ๋ฆฌ์ ํด๋นํฉ๋๋ค. ์ด ์ธํฐํ์ด์ค๋ Servlet Engine์์ Load(์ ์ฌ) ๋๊ณ Run ํฉ๋๋ค. ์ด๋ Servlet Engine์ Tomcat๊ณผ ๊ฐ์ ์น ์๋ฒ๋ฅผ ๋ป ํฉ๋๋ค. Servlet ์ธํฐํ์ด์ค๋ ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ์ํด์ ํธ์ถ๋ฉ๋๋ค. ์๋ง๋ ์คํ๋ง ํ๋ ์์ํฌ๋ฅผ ๋ฐฐ์ฐ์ ๋ถ๋ค์ด๋ผ๋ฉด ์ต์ํ ๊ฐ๋ ์ผ ๊ฒ ์ ๋๋ค. ์คํ๋ง ์ปจํ ์ด๋๊ฐ ์ฌ๋ฌ ๋น๋ค์ ๊ด๋ฆฌํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ง๊ธ์ ์๋ธ๋ฆฟ์ ๋ํ ๊ฐ๋ ์ ๋ช ํํ ํด๋๋ค๋ฉด, ์คํ๋ง ํ๋ ์์ํฌ๋ฅผ ๋ฐฐ์ธ ๋๋ ์กฐ๊ธ ๋ ์ต์ํ๊ฒ ๋ฐฐ์ธ ์ ์์ต๋๋ค.
Servlet ์ธํฐํ์ด์ค์๋ ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ์ํด์ call ๋๋ ์ค์ํ ๋ฉ์๋๋ค์ด ์๋๋ฐ์. init(), service(), destroy()์ ๋๋ค. ์ด๋ฌํ 3๊ฐ์ ๋ฉ์๋๋ค์ ๋ฌถ์ด์ Servlet life-cycle(์๋ช ์ฃผ๊ธฐ)์ด๋ผ๊ณ ํฉ๋๋ค. ์ฆ ์๋ธ๋ฆฟ์ด ์๊ธฐ๊ณ , ์ผํ๊ณ , ์์ด์ง๋ ๊ณผ์ ์ ๋ฉ์๋๋ก ๋ํ๋ด ๋์ ๊ฒ์ ๋๋ค. ์ฌ๋๋ ํ์ด๋๊ณ , ์ผํ๊ณ , ์ฃฝ๋ ์๋ช ์ฃผ๊ธฐ๊ฐ ์์ต๋๋ค. ์กฐ๊ธ์ ์ฌํ๋๋ค.
์ด์จ๋ ์์์๋ ์ธ๊ธํ์ง๋ง, ํ๋ก๊ทธ๋๋ฐ์์ ์๋ฌด๊ฒ๋ ์๋๋ฐ ์ ์ ๋ก ์๊ธฐ๊ณ , ์๋ํ๋ ๊ฒ์ ์์ต๋๋ค. ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ฉ์๋์ ์ํด์ ์๋ํ๋๋ฐ์.
+) ์๋์ ๋ชจ๋ ๊ณผ์ ์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ์ํด์ ํ์ํ ๋์ ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ, ์๋ธ๋ฆฟ์ด ์์ฒญ๋์๋ค๋ ๊ฐ์ ์ ํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์๋ธ๋ฆฟ ํด๋์ค๋ ์ด๋ฏธ ์ ์ฌ๋์ด ์ธ์คํด์คํ ๋ ์ํ์ ๋๋ค.
4. 1. 1. init()
์๋ธ๋ฆฟ์ด ์ฒ์์ผ๋ก ์์ฒญ๋ ๋ ์ด๊ธฐํ๋ฅผ ํฉ๋๋ค. ์๋ฐ์์ ๋ณ์๋ฅผ ์ด๊ธฐํํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์์ฑํ ๊ฐ ์๋ธ๋ฆฟ ํด๋์ค๋ ์ด๊ธฐํ๋ฅผ ํด์ผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ์ํด์ ํธ์ถ๋๋ฉฐ, ์ฌ์ฉํ๊ธฐ ์ํ ์ค๋น๊ณผ์ ์ ๋๋ค.
ํ์ง๋ง ์ฌ๊ธฐ์ ์์์ผ ํ ๊ฒ์, ์๋ธ๋ฆฟ ํด๋์ค๋ ์ฒ์ ์์ฒญ๋ ๋ ์ด๊ธฐํ๊ฐ ๋๊ณ ๋๋ฉด, ๋ค์ ํ๋ฒ ํด๋น ์๋ธ๋ฆฟ ํด๋์ค๋ฅผ ํธ์ถํด๋ ์ด๊ธฐํ๊ฐ ๋์ง ์์ต๋๋ค. ๋จ์ํ ์๋ฐ ์ฝ๋๋ฅผ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค. ์ด๋ฏธ ์ด๊ธฐํํ ๋ณ์๋ฅผ ๋ ์ด๊ธฐํํ ํ์๋ ์์ผ๋๊น์.
4. 1. 2. service()
์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ Request(์์ฒญ)์ ๋ฐ๊ณ Response(์๋ต)์ ํ์ํ ์๋ธ๋ฆฟ์ service ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค. ์ฌ๊ธฐ์ service ๋ฉ์๋๋ ๋ณดํต ๊ทธ ์์ฒด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋, Servlet interface๋ฅผ ๊ตฌํํ HttpServlet ํด๋์ค์ doGet, doPost ๊ฐ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋น์ฐํ์ง๋ง service() ๋ฉ์๋๋ ์๋ธ๋ฆฟ ํด๋์ค๊ฐ init() ๋ฉ์๋๊ฐ ์คํ๋์ด ์ด๊ธฐํ๋ ํ์ ํธ์ถ๋ฉ๋๋ค. ์ ๋๋ก ๊ทธ์ ์ ํธ์ถ๋ ์ ์์ต๋๋ค.
๋ํ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์ด๋ฉฐ, ๋์์ ์ฌ๋ฌ ์์ฒญ๋ค์ ๋ฐ์ ์ ์์ต๋๋ค. ์ฆ ์ฌ๋ฌ service()๊ฐ ์คํ๋ ์ ์์ต๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋๊ธฐํ ๋ฌธ์ ์ ์ ๊ฒฝ์ ์จ์ผ ํฉ๋๋ค.
์๋ธ๋
- ํ์ํ SW : ์ํ์น ํฐ์ผ,
- ์๋ฐ ํ๊ฒฝ ๊ตฌ์ถ ํ์ธ : JAVA EE
- ์๋ฒ ์ฐ๊ฒฐ
์ด๋ก
- ์นํต์
- ํฌ๊ฒ 3ํํธ๋ก ๋๋๋ค.
- ํ๋ก ํธ์๋ : ์นํ์ด์ง๊ฐ๋ฐ
- ์ํํธ์จ์ด ์์ง๋์ด(๋ฐฑ์๋) : WAS
- ๋๋ ํ์คํ( ํ๋ก ํธ์๋_+๋ฐฑ์๋)?
- 3 Tier : ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋๋์ด์ง๋ ๊ณ์ธต
- ์นํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ค์์ JSP/Servlet์ ์ฌ์ฉํ๋ ์ด์
๋ถ๊ฐ์ค๋ช (์ฐธ์กฐ)
WAS๊ฐ ํ์ํ ์ด์
- ์น ํ์ด์ง์ ์กด์ฌํ๋ ๋์ ์ปจํ ์ธ ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํจ.
- ์น์๋ฒ๋ง์ ์ด์ฉํ๋ค๋ฉด ๋์ ์ผ๋ก ๋์ํด์ผ ํ๋ ์ปจํ ์ธ ์ ๊ฒฐ๊ณผ๋ฅผ ์น์๋ฒ์์ ๋ชจ๋ ๋ฏธ๋ฆฌ ๋ก๋ํด๋๊ณ ํด๋ผ์ด์ธํธ์ Response๋ฅผ ๋ณด๋ด์ผํจ.
- -> ์ด์ ๋ฐ๋ฅธ ์์๋ญ๋น๋ฅผ ๋ง๊ธฐ ์ํด WAS๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ง๋ ์ปจํ ์ธ ๋ฅผ ๊ทธ๋ ๊ทธ๋ ์ ๊ณตํ ์ ์์.
๊ฒฐ๋ก
- WAS๋ ์น์๋ฒ์ ์ธ๋ถํ๋ก๊ทธ๋จ์ ์ฐ๊ฒฐํ๋ ๋ฏธ๋ค์จ์ด์ด๊ณ , WSGI๋ WAS๊ฐ ํ์ด์ฌ ํ๋ก๊ทธ๋จ๊ณผ ์ฐ๊ฒฐ๋๋ ๊ฒฝ์ฐ์ ์น์๋ฒ์ WAS๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฏธ๋ค์จ์ด ์ญํ ์ ํ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
- CGI ๋ฐฉ์์ ์น์๋ฒ์ ์ธ๋ถํ๋ก๊ทธ๋จ์ ์ง์ ์ฐ๊ฒฐ์์ผ ์น์๋ฒ ์์์ ์ธ๋ถ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋ฐฉ์์ด๋ค.
- WAS ๋ฐฉ์์ ์ธ๋ถ ํ๋ก๊ทธ๋จ์ ์น์๋ฒ์ ๋ถ๋ฆฌ์ํค๊ณ WAS๋ผ๋ ๋ณ๊ฐ์ ์๋ฒ ์์์ ์คํ๋๊ฒ ํ๋ค.
์น ์๋ฒ ๊ตฌ์กฐ
- ์ ์ ์ฒ๋ฆฌ : ํด๋ผ์ด์ธํธ -> (Request) -> ์น์๋ฒ
- ๊ธฐ๋ณธ์ ์ธ ๋์ ์ฒ๋ฆฌ์ ๊ฒฝ์ฐ : ํด๋ผ์ด์ธํธ -> (Request) -> ์น์๋ฒ -> (Request) -> WAS -> ์ธ๋ถ ํ๋ก๊ทธ๋จ ์คํ(WAS์์ ๋์)
- CGI๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ : ํด๋ผ์ด์ธํธ -> Request -> ์น์๋ฒ -> CGI -> ์ธ๋ถ ํ๋ก๊ทธ๋จ ์คํ(์น์๋ฒ์์ ๋์)
- WSGI๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ : ํด๋ผ์ด์ธํธ -> Request -> ์น์๋ฒ -> Request -> WSGI (๋ฏธ๋ค์จ์ด) -> Requset -> WAS -> ์ธ๋ถ ํ๋ก๊ทธ๋จ
์น ์๋ฒ
- ์ํํธ์จ์ด + ํ๋์จ์ด๋ก ์ด๋ฃจ์ด์ง.
- ํ๋์จ์ด : ์น์๋ฒ๊ฐ ์ค์น๋ ์์คํ ์ปดํจํฐ
- ์ํํธ์จ์ด : ์น ๋ธ๋ผ์ฐ์ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ Requset๋ฅผ ๋ฐ์ ์ ์ ์ธ ์ปจํ ์ธ (html , css ๋ฑ๋ฑ)์ Response ํ๋ ํ๋ก๊ทธ๋จ.
- ๊ธฐ๋ฅ : ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์๋ต์ ๋ณด๋ด๋ ์ญํ ์ ํ๋ค.
- ์น์๋ฒ ์ํํธ์จ์ด์ ์) Apache, Nginx, IIS ๋ฑ๋ฑ
CGI (Common Gateway Interface)
- ์ ์ ์ผ๋ก ๋์ํ๋ ์น์๋ฒ๋ฅผ ๋์ ์ผ๋ก ๊ธฐ๋ฅํ๊ฒ ๋ง๋ค๊ธฐ ์ํจ.
- ์น์๋ฒ์ ๋ค์ด์จ Request๋ฅผ ์ธ๋ถ ํ๋ก๊ทธ๋จ๊ณผ ์ฐ๊ฒฐํ์ฌ ํด๋น ํ๋ก๊ทธ๋จ์ด ๊ทธ ์์ฒญ์ ์ฒ๋ฆฌํ๊ฒ ์ฐ๊ฒฐํด์ฃผ๋ ์ญํ .
- ๋ค์ด์จ ์์ฒญ์ ์ฐ๊ฒฐํด์ฃผ๋ ์ญํ ๋ง ํ ๋ฟ, ์น ์๋ฒ๊ฐ ์ธ๋ถ ํ๋ก๊ทธ๋จ์ ์ง์ ์คํํจ.
- WAS์์ ์ฐจ์ด๋ ์ฐ๊ฒฐ๋๋ ์ธ๋ถ ํ๋ก๊ทธ๋จ์ ์๋ฒ๊ฐ ์ง์ ์คํํ๋์ง, WAS๊ฐ ๋์ ์คํํ๋์ง ์ฐจ์ด.
- -> ์์ฒญ์ด ๋ค์ด์ฌ ๋ ๋ง๋ค ์๋ธํ๋ก์ธ์ค๋ฅผ forkํจ.
WAS web application server
- ์น์๋ฒ + CGI = WAS. ์ผ๋ฐ์ ์ผ๋ก๋ ์น์๋ฒ์ WAS๋ฅผ ๊ตณ์ด ๊ตฌ๋ถํ ํ์๊ฐ ์์.
- DB์กฐํ, ๋ค์ํ ๋ก์ง ์ฒ๋ฆฌ๋ฑ๋ฑ์ ๋์ ์ธ ์ปจํ ์ธ ์ ๊ณต์ ์ํด ๋ง๋ค์ด์ง.
- http/https ๋ฅผ ํตํด ์ปดํจํฐ๋ ์ฅ์น์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํํด์ฃผ๋ ๋ฏธ๋ค์จ์ด(์ํํธ์จ์ด ์์ง)์.
- ์น ์ปจํ ์ด๋/์๋ธ๋ฆฟ ์ปจํ ์ด๋ ๋ผ๊ณ ๋ ๋ถ๋ฆผ -> jsp, servlet ๊ตฌ๋ ํ๊ฒฝ์ ์ ๊ณตํจ.
- ์น์๋ฒ+์น์ปจํ ์ด๋ -> ์น์๋ฒ์ ๊ธฐ๋ฅ์ ๊ตฌ์กฐ์ ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ชฉ์ .
- ->๋ถ์ฐ์ฒ๋ฆฌ ํ๊ฒฝ์ ๊ตฌ์ฑํ๊ณ , ์ฃผ๋ก DB ์๋ฒ๋ฅผ ๋ฐ๋ก ๋ถ๋ฆฌํ๋ ์์ผ๋ก ๊ตฌ์ฑ๋๋ค.
- ์)Tomcat(Apache), JBoss(Redhat), Jeus(Tmax),, Web Sphere(IBM),Django ๋ฑ
์น ์๋ฒ๊ฐ ํ์ํ ์ด์
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก๋ถํฐ Response๋ฅผ ๋ฐ์๋ HTML๋ฌธ์์ ์ด๋ฏธ์ง ํ์ผ๋ฑ์ ์ ์ ์ปจํ ์ธ ๋ฅผ ํ๊บผ๋ฒ์ ๋ฐ๋๊ฒ์ด ์๋, ์น ๋ฌธ์๋ฅผ ๋ชจ๋ ๋ฐ๊ณ ๋๋ฉด ๊ทธ์ ๋ง๋ ์ด๋ฏธ์ง ํ์ผ์ ์ฌ ์์ฒญํ์ฌ ๋ฐ์์ค๋ ์์.
- ์ด๋ ์น์๋ฒ ํ๋ก๊ทธ๋จ์ด ์ด๋ฏธ์ง ํ์ผ ์์ฒญ๊น์ง ํ๋ฒ์ ์ฒ๋ฆฌํด์ Response ํด์ฃผ๋ฉด WAS์ ์์ฒญ์ ๋ค์ ๋ณด๋ผ ํ์๊ฐ ์์ด์ง
- -> ์น์๋ฒ๊ฐ ์ ์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ฉด WAS์ ์์ฒญ/์๋ต ๊ณผ์ ์ด ์๋ต๋์ด ์๋ฒ์ ๋ถ๋ด์ ์ค์ผ ์ ์์.
'๐๏ธ์ํํธ์จ์ด > ๐java & Servlete & JSP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JSP ๊ธฐ๋ณธ 2 (0) | 2021.09.14 |
---|---|
JSP ๊ธฐ์ด (feat.์ง์์) (0) | 2021.09.14 |
JSP (0) | 2021.09.13 |
[์๋ฐ/Java] ๋๊ฐ์ ๋ฐฐ์ด A์B๋ฅผ ํฉ๋ณ ํ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ๋ฐํํ๋ mergeArray๋ฉ์๋๋ฅผ ์์ฑํ์์ค (0) | 2021.09.05 |
[์๋ฐ/Java] 1์ฐจ ์ํ ์ค๋น (1) (0) | 2021.09.05 |