Servlet


Servlet ์€ ์›น ์„œ๋ฒ„ ๋‚ด์—์„œ ์›น ํŽ˜์ด์ง€๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” Java ๊ธฐ๋ฐ˜์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.

Servlet ์€ ์›น ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์„ ๋ฐ›๊ณ  ํŠน์ • ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•œ ๋’ค ์‘๋‹ต์„ ๋ณด๋‚ธ๋‹ค.

Java ์—์„œ Servlet ์€ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ œ๊ณต๋˜๋Š”๋ฐ, ํ”„๋กœํ† ์ฝœ์— ๋…๋ฆฝ์ ์ธ GenericServlet ์ด๋‚˜ HTTP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” HttpServlet ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Servlet ์˜ ์ƒ๋ช…์ฃผ๊ธฐ


init(ServletConfig config)

init() ๋ฉ”์„œ๋“œ๋Š” Servlet ์ด ์„œ๋น„์Šค์— ๋ฐฐ์น˜๋˜๊ณ  ์žˆ์Œ์„ Servlet ์—๊ฒŒ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ํ†ฐ์บฃ๊ณผ ๊ฐ™์€ ServletContainer ์— ์˜ํ•ด ํ˜ธ์ถœ๋œ๋‹ค.

ServletContainer ๋Š” Servlet ์„ ์ธ์Šคํ„ด์Šคํ™”ํ•œ ํ›„ init() ๋ฉ”์„œ๋“œ๋ฅผ ์ตœ์ดˆ์— ํ•œ ๋ฒˆ ํ˜ธ์ถœํ•œ๋‹ค. Servlet ์ด ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜๊ธฐ ์œ„ํ•ด์„  init() ๋ฉ”์„œ๋“œ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์–ด์•ผ ํ•œ๋‹ค.

service(ServletRequest req, ServletResponse res)

Servlet ์ด ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ServletContainer ์— ์˜ํ•ด ํ˜ธ์ถœ๋œ๋‹ค.

service() ๋ฉ”์„œ๋“œ๋Š” init() ๋ฉ”์„œ๋“œ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์„ ๊ฒฝ์šฐ์—๋งŒ ํ˜ธ์ถœ๋œ๋‹ค.

Servlet ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ServletContainer ์—์„œ ์ฒ˜๋ฆฌ๋œ๋‹ค. ๋•Œ๋ฌธ์—, Servlet ์„ ๊ตฌํ˜„ํ•  ๋•Œ ํŒŒ์ผ, ๋„คํŠธ์›Œํฌ ์ปค๋„ฅ์…˜, ์„œ๋ธ”๋ฆฟ์˜ ํด๋ž˜์Šค ๋ฐ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๊ณผ ๊ฐ™์€ ๊ณต์œ  ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ๋™๊ธฐํ™”ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

destroy()

destroy() ๋ฉ”์„œ๋“œ๋Š” Servlet ์ด ์„œ๋น„์Šค์—์„œ ์ œ๊ฑฐ๋˜๊ณ  ์žˆ์Œ์„ Servlet ์—๊ฒŒ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ServletContainer ์— ์˜ํ•ด ํ˜ธ์ถœ๋œ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋Š” Servlet ๋‚ด์˜ ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ timeout ๊ธฐ๊ฐ„์ด ์ง€๋‚œ ํ›„์—๋งŒ ํ˜ธ์ถœ๋œ๋‹ค. ServletContainer ๊ฐ€ ์ด ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ํ›„์—๋Š” ํ•ด๋‹น Servlet ์˜ service() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ด ๋ฉ”์„œ๋“œ๋Š” Servlet ์ด ๋ณด์œ ํ•œ ๋ฉ”๋ชจ๋ฆฌ, ์Šค๋ ˆ๋“œ ๋“ฑ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ •๋ฆฌํ•  ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ๋ชจ๋“  ์˜์† ์ƒํƒœ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” Servlet ์˜ ํ˜„์žฌ ์ƒํƒœ์™€ ๋™๊ธฐํ™” ๋˜๋„๋ก ํ•œ๋‹ค.

Servlet Container


ServletContainer ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›๊ณ  ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋„๋ก ์†Œ์ผ“์œผ๋กœ ํ†ต์‹ ํ•˜๊ณ  ์š”์ฒญ์— ๋งž๋Š” Servlet ์„ ์ฐพ์•„ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋“ฑ ์ „๋ฐ˜์ ์ธ Servlet ์˜ ๊ด€๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•œ๋‹ค.

๋Œ€ํ‘œ์ ์ธ ServletContainer ๋กœ Tomcat ์ด ์žˆ๋‹ค.

Servlet Container ์˜ ์—ญํ• 


์›น ์„œ๋ฒ„์™€ ํ†ต์‹  ์ง€์›

ServletContainer ๋Š” Servlet ๊ณผ ์›น ์„œ๋ฒ„๊ฐ€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. ์ด๋Ÿฌํ•œ ํ†ต์‹  ๊ณผ์ •์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž๋Š” Servlet ์˜ service() ๋ฉ”์„œ๋“œ์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

Servlet ์˜ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ

ServletContainer ๋Š” Servlet ์„ ์ธ์Šคํ„ฐ์Šคํ™”ํ•˜๊ณ  init() ๋ฅผ ํ˜ธ์ถœํ•ด Servlet ์„ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด service() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  Servlet ์˜ ์—ญํ• ์ด ์ข…๋ฃŒ๋˜๋ฉด destroy() ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ GC ๋Œ€์ƒ์ด ๋˜๋„๋ก ํ•œ๋‹ค.

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์ง€์› ๋ฐ ๊ด€๋ฆฌ

ServletContainer ๋Š” ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ ๋งˆ๋‹ค ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  Java ์Šค๋ ˆ๋“œ๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•œ๋‹ค. ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ์ƒ์„ฑ ๋ฐ ์šด์˜์„ ํ†ตํ•ด ๋™์‹œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.