๋ชฉ์ฐจ
Servlet(์๋ธ๋ฆฟ)์ด๋
Servlet Container?
Servlet์ ๋์๋ฐฉ์
JSP์์ ์ ์ฌ์ฑ?
Servlet(์๋ธ๋ฆฟ)์ด๋?
๋์ ์น ํ์ด์ง(Dynamic Web Page)๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉ๋๋ ์๋ฐ ๊ธฐ๋ฐ์ Web Application ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ . ์น ์๋ฒ ์ฑ๋ฅ ํฅ์์ ์ํ JAVA class์ ์ผ์ข . ํด๋ผ์ด์ธํธ์ HTTP request์ ๋ํด ์ฒ๋ฆฌํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ํด๋ผ์ด์ธํธ์๊ฒ responseํ๋ Servlet ํด๋์ค ๊ตฌํ ๊ท์น์ ์งํจ ์๋ฐ ํ๋ก๊ทธ๋จ.
- ํด๋ผ์ด์ธํธ์ Request์ ๋ํด ๋์ ์ผ๋ก ์๋
- HTML์ ์ด์ฉํ์ฌ Response
- JAVA์ ์ค๋ ๋๋ฅผ ์ด์ฉํ์ฌ ๋์
- MVC์์ ์ปจํธ๋กค๋ฌ ์ญํ
- javax.servlet.http.HttpServlet ์ ์์๋ฐ๋๋ค
Servlet Container?
์๋ธ๋ฆฟ์ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ, ์์ฒญ์ ๋ฐ๋ฅธ ์ค๋ ๋๋ฅผ ์์ฑํด์ฃผ๋ ๋ฑ ์๋ธ๋ฆฟ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์๋ธ๋ฆฟ ์ด์ํ๊ฒฝ. ์๋ฐ ๊ฐ์๋จธ์ ๋ด์ฅ. ๋ํ์ ์ผ๋ก apache tomcat.
์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ์ญํ
- ํต์ ์ง์
ํด๋ผ์ด์ธํธ์ Request๋ฅผ ๋ฐ๊ณ , ์ฒ๋ฆฌ Response๋ฅผ ๋ณด๋ผ ์ ์๊ฒ ์๋ฒ์์ ์์ผ์ ๋ง๋ค์ด ํต์ ์ ํด์ค๋ค.
์์ผ์ด๋?
๋คํธ์ํฌ ์์์ ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ฅผ ํน์ ํฌํธ๋ฅผ ํตํด ์ ๋ฐฉํฅ ํต์ ์ด ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด์ฃผ๋ ์ํํธ์จ์ด
- ์๋ช ์ฃผ๊ธฐ(Life Cycle) ๊ด๋ฆฌ
์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ๊ฐ๋๋๋ ์๊ฐ, ์๋ธ๋ฆฟ ํด๋์ค๋ฅผ ๋ก๋ฉํ์ฌ ์ธ์คํด์ค ํ. ์ด๊ธฐํ(init) ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ค, ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์ ์ ํ ์๋ธ๋ฆฟ ๋ฉ์๋๋ฅผ ์ฐพ์ ๋์. ๊ทธ๋ฆฌ๊ณ ์๋ช ์ด ๋คํ๋ฉด GC(๊ฐ๋น์ง์ปฌ๋ ์ )์ ํตํด ๋ฉ๋ชจ๋ฆฌ์์ ์ ๊ฑฐํ๋ ํ๋์ ์๋ธ๋ฆฟ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ๋ค.
- ๋ฉํฐ์ค๋ ๋
์๋ธ๋ฆฟ์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด, ๋ ๋ง๋ค, ์๋ก์ด ์๋ฐ ์ค๋ ๋๋ฅผ ์์ฑํ์ฌ ์์ ์ ์ํํ๋ค. ์ฌ๋ฌ Request๊ฐ ๋ค์ด์๋ ๋์๋ค๋ฐ์ ์ธ ์์ ์ ํ ์ ์๋ค๋ ์๋ฏธ์ด๋ค. HTTP ์๋น์ค๋ฅผ ๋ฉ์๋๋ฅผ ์คํํ๊ณ ๋๋ฉด, ์ค๋ ๋๋ฅผ ์๋์ผ๋ก ์๋ฉธํ๋ค.
- ๋ณด์๊ด๋ฆฌ
์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ์ฅ์
- ์๋ฐ ๊ธฐ๋ฐ์ด๋ฏ๋ก, ์๋ฐ API ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ
- ์ด์์ฒด์ ๋ ํ๋์จ์ด์ ์ํฅ์ ๋ฐ์ง ์๋๋ค.
- ์ค๋ ๋ ๊ธฐ๋ฐ์ ํจ์จ์ ์ด์์ด ๊ฐ๋ฅํ๋ค.
- ์ปจํธ๋กค๋ฌ์ ๋ทฐ์ ์ญํ ๋ถ๋ด > ์ ์ง๋ณด์๊ฐ ์์ํ๋ฉฐ, ๊ธฐ๋ฅ์ ํ์ฅ์ด ์ฉ์ดํ๋ค.
Servlet์ ๋์๋ฐฉ์
1. Servlet Request, Servlet Response ๊ฐ์ฒด ์์ฑ
- WAS๊ฐ ์น๋ธ๋ผ์ฐ์ ๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์ผ๋ฉด, ์ฆ ์ฌ์ฉ์๊ฐ URL์ ์ ๋ ฅํ๋ฉด HTTP request๊ฐ Servlet Container๋ก ์ ์ก.
- HttpServletRequest, HttpServletResponse(๋น ๊ฐ์ฒด) ๊ฐ์ฒด ์์ฑ. ์์ฑ๋ HttpServletRequest์ HttpServletResponse(๋น ๊ฐ์ฒด)์ ์๋ธ๋ฆฟ์ ์ ๋ฌ.
HttpServletRequest
- Http ํ๋กํ ์ฝ์ request ์ ๋ณด๋ฅผ ์๋ธ๋ฆฟ์๊ฒ ์ ๋ฌํ๊ธฐ ์ํจ
- Header, Parameter, Cookie, URI, URL ๋ฑ์ ์ ๋ณด ์ฝ์ด๋ค์ด๋ ๋ฉ์๋๋ฅผ ๊ฐ์ง ํด๋์ค์ด๋ค.
- Body์ Stream์ ์ฝ๋ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
HttpServletResponse
- Content Type, ์๋ต ์ฝ๋, ์๋ต ๋ฉ์์ง๋ฅผ ๋ด์ ์ ์กํ๊ธฐ ์ํจ
2. ๋งคํํ Servlet ์ฐพ๋๋ค.
web.xml ๊ธฐ๋ฐ์ผ๋ก ์์ฒญ URL์ด ์ด๋ ์๋ธ๋ฆฟ์ ๋ํ ์์ฒญ์ธ์ง ์ฐพ๋๋ค.
3. ์๋ธ๋ฆฟ ์ธ์คํด์ค์ ์กด์ฌ ์ ๋ฌด ํ์ธ. init() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์๋ธ๋ฆฟ์ ๋ก๋ฉ
- ์ต์ด ํด๋ผ์ด์ธํธ ์์ฒญ ์, init() ๋ฉ์๋๊ฐ ํธ์ถ๋๋ฉฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋๋ค. ์๋ธ๋ฆฟ์ด ์ฒ์ ์์ฒญ๋ ๋, ์ด๊ธฐํํ๋ ๋ฉ์๋.
4. Servlet Container์ thread ์์ฑ ํ, service ์คํ
- ํด๋ผ์ด์ธํธ์ GET/POST ์์ฒญ์ ๋ฐ๋ผ doGet(), doPost() ๋ฉ์๋ ์ฌ์ฉํ์ฌ ์์ ์ํ
- doGet(), doPost() ๋ฉ์๋๋ ๋์ ํ์ด์ง ์์ฑ ํ, HttpServletResponse ๊ฐ์ฒด์ ์๋ต์ ๋ณด๋ธ๋ค.
5. ์๋ต ์ฒ๋ฆฌ ํ, distory() ๋ฉ์๋ ์คํ
- HttpServletRequest, HttpServletResponse ๊ฐ์ฒด ์๋ฉธ.
Servlet ์ฝ๋ ์์
JSP์์ ์ ์ฌ์ฑ?
- ์๋ธ๋ฆฟ๋ง ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ณด์ฌ์ฃผ๋ฉด, ์๋ฐ ์ฝ๋ ์์์ HTML ์ฝ๋๋ฅผ ์์ฑํด์ผํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์กด์ฌํ๋ค. ๊ฐ๋ ์ฑ์ด ๋งค์ฐ ๋งค์ฐ ๋จ์ด์ง๊ธฐ ๋๋ฌธ์ JSP๋ฅผ ์ฌ์ฉํ์ฌ ๋น์ง๋์ค ๋ก์ง๊ณผ ๋ทฐ ๋ก์ง์ ๋ถ๋ฆฌํ์ฌ ์ด๋ฅผ ์์ํ๋ค.
- ์๋ธ๋ฆฟ์ ์ปจํ ์ด๋๊ฐ ์ดํดํ ์ ์๊ฒ ๊ตฌ์ฑ๋ ์์ํ ์๋ฐ ์ฝ๋์ด๋ค(.java file). ์ด์ ๋ฐํ์ฌ, JSP๋ ์๋ฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ Server side script ์ธ์ด์ด๋ค. ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ผ๋ก๋ ์๋ธ๋ฆฟ์ ์๋ฐ ์ฝ๋ ์์ HTML ์ฝ๋๊ฐ ์๊ณ , JSP๋ HTML์ฝ๋ ์์ ์๋ฐ ์ฝ๋๊ฐ ์๋ค. - ์๋ธ๋ฆฟ์ ์์ ๋์ด์ง๋ ๊ฒฝ์ฐ, ๋์ ํ์ด์ง๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋ณ๋์ ์ปดํ์ผ ๊ณผ์ ์ด ํ์ํ๋ค. JSP๋ HTML์์ฑ ์ ์ ์ฉํ๋ค๋ ์ฅ์ ์ด ์๋ค. JSP๊ฐ ์์ ๋๋ ๊ฒฝ์ฐ ์ฌ๋ฐฐํฌ ํ์ ์์ด WAS๊ฐ ์์์ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ด๋ค.
'๐ Web > Network, Server' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[tomcat] Tomcat(ํฐ์บฃ) JAVA_HOME ์๋ ์ค์ (0) | 2022.03.16 |
---|---|
[HTTP] Content-Type (0) | 2022.03.01 |
[Service] ์ค์ง ์ค์ธ ์๋น์ค ๊ฐ์ ๋ก Killํ๋ ๋ช ๋ น์ด (0) | 2022.02.24 |
[Server] Web Server์ Was์ ์ฐจ์ด (Apache, Tomcat?) (0) | 2022.02.20 |