Servlet์ด๋ž€?

niireymikยท2024๋…„ 1์›” 22์ผ

๐Ÿ’ก
Servlet๊ณผ Servlet Container๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด๊ณ , ์„œ๋ธ”๋ฆฟ์ด ๋™์ž‘ํ•˜๋Š” ๊ณผ์ •๊ณผ ์„œ๋ธ”๋ฆฟ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๊นŒ์ง€ ์•Œ์•„๋ณด์ž :>

๐Ÿ“Œ Servlet์ด๋ž€?

: ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผย ๋ฐ˜ํ™˜ํ•˜๋Š”ย Servlet ํด๋ž˜์Šค์˜ ๊ตฌํ˜„ ๊ทœ์น™์„ ์ง€ํ‚จ ์ž๋ฐ” ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ ์ด๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด, ์ž๋ฐ”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์  ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ธฐ์ˆ ์ด๋‹ค. ์ด๋Ÿฌํ•œ ์„œ๋ธ”๋ฆฟ์€ WAS(Web Application Server)์˜ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ ๋™์ž‘ํ•œ๋‹ค.

Servlet๊ณผ WAS?
WAS๋Š” Web Server + Web Container(Servlet Container)๋กœ ๋˜์–ด ์žˆ๋‹ค. Web Server + WAS์˜ ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ •์  ์ฝ˜ํ…์ธ ๋ฅผ ์ œ๊ณตํ•˜๋ฉด์„œ๋„(Web Server), ์›น ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ด์šฉํ•ด ๋‚ด๋ถ€ ๋กœ์ง์„ ๊ฑฐ์ณ ๋™์  ํŽ˜์ด์ง€(WAS)๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ์ž๋ฐ”๋Š” ์›น ๊ตฌํ˜„ ๊ธฐ์ˆ ๋กœ Servlet์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ด ์„œ๋ธ”๋ฆฟ์„ ๊ด€๋ฆฌํ•ด ์ฃผ๋Š” ๊ฒƒ์ด Servlet Container์ด๋‹ค. โžก๏ธ WAS๊ฐ€ Servlet Container๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐœ๋…์œผ๋กœ ์ดํ•ดํ•˜๋ฉด ๋˜๊ฒ ๋‹ค! :>

  • ์›น์ปจํ…Œ์ด๋„ˆ == ์„œ๋ธ”๋ฆฟ์ปจํ…Œ์ด๋„ˆ
  • WAS๊ฐ€ ์›น์ปจํ…Œ์ด๋„ˆ(์„œ๋ธ”๋ฆฟ์ปจํ…Œ์ด๋„ˆ)๋ฅผ ํฌํ•จํ•จ
  • ์‹ค๋ฌด์—์„œ๋Š” WAS == ํ†ฐ์บฃ์œผ๋กœ ์ธ์ง€
  • WAS๋Š” ์‚ฌ์‹ค์ƒ ์›น์„œ๋ฒ„+WAS ์—ญํ• ์„ ๋‘˜ ๋‹ค ํ•จ

์„œ๋ธ”๋ฆฟ์˜ ์ฃผ์š” ํŠน์ง•

  • ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋Œ€ํ•ด ๋™์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปดํฌ๋„ŒํŠธ์ด๋‹ค.
  • HTML์„ ์‚ฌ์šฉํ•˜์—ฌ ์‘๋‹ตํ•œ๋‹ค.
  • Java์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋™์ž‘ํ•œ๋‹ค.
  • MVC ํŒจํ„ด์—์„œ์˜ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ด์šฉ๋œ๋‹ค.
    (MVC, Model-View-Controller : ๋””์ž์ธ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜์ธ MVC ํŒจํ„ด์„ ๋งํ•œ๋‹ค. Controller๋Š” Model์„ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ๊ทธ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‹œ๊ฐ์ ์ธ ํ‘œํ˜„์„ ๋‹ด๋‹นํ•˜๋Š” View๋ฅผ ์ œ์–ดํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค. '์„ธ ๋ถ„์•ผ๋กœ ๋‚˜๋ˆ„์–ด ๊ฐœ๋ฐœํ•œ๋‹ค' ๋ผ๋Š” ๊ฐœ๋… ์ •๋„๋กœ ์ดํ•ดํ•˜๋ฉด ๋˜๊ฒ ๋‹ค.)
  • HTTP ํ”„๋กœํ† ์ฝœ ์„œ๋น„์Šค๋ฅผ ์ง€์›ํ•˜๋Š” javax.servlet.http.HttpServlet ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค.
  • HTML ๋ณ€๊ฒฝ ์‹œ Servlet์„ ์žฌ ์ปดํŒŒ์ผํ•ด์•ผ ํ•˜๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.
  • Servlet Filter์™€ Listener

์„œ๋ธ”๋ฆฟ์˜ ํ•„ํ„ฐ์™€ ๋ฆฌ์Šค๋„ˆ?
: ํ•œ ๋ฒˆ ์„ค์ •์„ ํ•ด๋‘๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งค๋ฒˆ ์ƒˆ๋กœ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š์•„๋„ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•ด ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค.

๐Ÿง€ํ•„ํ„ฐ
์„œ๋ธ”๋ฆฟ ์‹คํ–‰ ์ „, ๋จผ์ € ๋™์ž‘ํ•˜์—ฌ ์„œ๋ธ”๋ฆฟ์˜ ์‚ฌ์ „ ์ฒ˜๋ฆฌ ์ž‘์—… ์ˆ˜ํ–‰
์„œ๋ธ”๋ฆฟ ์‹คํ–‰ ํ›„, ์‘๋‹ต ๋ฉ”์‹œ์ง€๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์— ์ „์†ก๋˜๊ธฐ ์ „์— ์‚ฌํ›„ ์ฒ˜๋ฆฌ ์ž‘์—… ์ˆ˜ํ–‰

๐Ÿง€๋ฆฌ์Šค๋„ˆ
ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์‹คํ–‰ (์˜ค๊ฐ€๋Š” ์š”์ฒญ-์‘๋‹ต๊ณผ๋Š” ๊ด€๊ณ„ X)
Listener[์ฒญ์ทจ์ž] : ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธธ ๊ณ„์† ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋‹ค.



๐Ÿ“Œ Servlet Container๋ž€?

: ๋ง ๊ทธ๋Œ€๋กœ ์„œ๋ธ”๋ฆฟ์„ ๋‹ด๊ณ  ๊ด€๋ฆฌํ•ด ์ฃผ๋Š” ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค. ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š” servlet ํด๋ž˜์Šค์˜ ๊ทœ์น™์— ๋งž๊ฒŒ ์„œ๋ธ”๋ฆฟ์„ ๊ด€๋ฆฌํ•ด ์ฃผ๋ฉฐ, ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”์ฒญ์„ ํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๋Š” HttpServletRequest, HttpServletResponse ๋‘ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ post, get ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋™์ ์ธ ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•ด ์‘๋‹ตํ•ด ์ค€๋‹ค.

HttpServletRequest
: HTTP ํ”„๋กœํ† ์ฝœ์˜ ์š”์ฒญ ์ •๋ณด๋ฅผ ์„œ๋ธ”๋ฆฟ์—๊ฒŒ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ ํ—ค๋” ์ •๋ณด, ํŒŒ๋ผ๋ฏธํ„ฐ, ์ฟ ํ‚ค, URI, URL ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์ฝ์–ด ๋“ค์ด๋Š” ๋ฉ”์„œ๋“œ์™€ Body์˜ Stream์„ ์ฝ์–ด ๋“ค์ด๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
HttpServletResponse
: ์–ด๋–ค ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ๋ณด๋ƒˆ๋Š”์ง€ ์•Œ์•„๋‘๊ณ  ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ต์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. WAS๋Š” HttpServletResponse ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์„œ๋ธ”๋ฆฟ์—๊ฒŒ ์ „๋‹ฌํ•˜๊ณ  ์ด ๊ฐ์ฒด๋ฅผ ํ™œ์šฉํ•˜์—ฌ content type, ์‘๋‹ต ์ฝ”๋“œ, ์‘๋‹ต ๋ฉ”์‹œ์ง€ ๋“ฑ์„ ์ „์†กํ•œ๋‹ค.


์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ์„œ๋ธ”๋ฆฟ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ
    : ์„œ๋ธ”๋ฆฟ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ธฐ๋™๋˜๋ฉด ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉ์—์„œ ์ธ์Šคํ„ด์Šคํ™”ํ•˜๊ณ , ์ดˆ๊ธฐํ™” ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์ ์ ˆํ•œ ์„œ๋ธ”๋ฆฟ ๋ฉ”์„œ๋“œ๋ฅผ ์ฐพ์•„์„œ ๋™์ž‘ํ•˜๊ณ , ์„œ๋ธ”๋ฆฟ์˜ ์ƒ๋ช…์ด ๋‹คํ•˜๋ฉด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐํ•œ๋‹ค.

  • ํ†ต์‹  ์ง€์›
    : ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›์•„์ฃผ๊ณ  ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ์›น ์„œ๋ฒ„์™€ ์†Œ์ผ“์„ ๋งŒ๋“ค์–ด์„œ ํ†ต์‹ ์„ ํ•ด์ค€๋‹ค. ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…(์†Œ์ผ“ ๋งŒ๋“ฆ / ํฌํŠธ ๋ฆฌ์Šค๋‹ / ์ŠคํŠธ๋ฆผ ์ƒ์„ฑํ•ด ์š”์ฒญ๋ฐ›์Œ)์„ ๋ชจ๋‘ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋Œ€์‹ ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ๋“ค์„ API๋กœ ์ œ๊ณตํ•˜์—ฌ ๋ณต์žกํ•œ ๊ณผ์ •์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ฃผ๊ณ , ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ๋”์šฑ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด ์ค€๋‹ค.

  • ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ์ง€์›, ๊ด€๋ฆฌ
    : ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ์˜ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•ด์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๋™์‹œ์— ์—ฌ๋Ÿฌ ์š”์ฒญ์ด ๋“ค์–ด์™€๋„ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ํ™˜๊ฒฝ์œผ๋กœ ๋™์‹œ๋‹ค๋ฐœ์  ์ž‘์—…์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์„ ์–ธ์ ์ธ ๋ณด์•ˆ ๊ด€๋ฆฌ
    : ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ณด์•ˆ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ด ์„œ๋ธ”๋ฆฟ ๋˜๋Š” ์ž๋ฐ” ํด๋ž˜์Šค ์•ˆ์— ๋ณด์•ˆ ๊ด€๋ จ๋œ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.



๐Ÿ“Œ ์„œ๋ธ”๋ฆฟ์˜ ๋™์ž‘๊ณผ์ •

์ „๋ฐ˜์ ์ธ ํ๋ฆ„
ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›น ์„œ๋ฒ„์— ์š”์ฒญํ•˜๋ฉด ์›น ์„œ๋ฒ„๋Š” ์ด๋ฅผ ํ•ด์„ํ•˜์—ฌ ์ •์  ์ž์›์— ๋Œ€ํ•œ ์š”์ฒญ์ผ ๊ฒฝ์šฐ ์ž์›์„ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ทธ ์š”์ฒญ์„ Tomcat๊ณผ ๊ฐ™์€ ์›น ์ปจํ…Œ์ด๋„ˆ์— ์œ„์ž„ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์›น ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐ ์š”์ฒญ์— ํ•ด๋‹นํ•˜๋Š” Servlet์„ ์‹คํ–‰ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Servlet์€ ์š”์ฒญ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ด ํด๋ผ์ด์–ธํŠธ์— ์ „์†กํ•œ๋‹ค.

์„œ๋ธ”๋ฆฟ ์š”์ฒญ-์‘๋‹ต์˜ ์ž์„ธํ•œ ๊ณผ์ •

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ(URL์„ ์ž…๋ ฅ)ํ•˜๋ฉด HTTP Request๊ฐ€ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋กœ ์ „์†ก๋œ๋‹ค.
  2. ์š”์ฒญ์„ ๋ฐ›์€ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ HttpServletRequest, HttpServletResponse ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  3. Web.xml(์„ค์ • ํŒŒ์ผ)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ URL์ด ์–ด๋А ์„œ๋ธ”๋ฆฟ์— ๋Œ€ํ•œ ์š”์ฒญ์ธ์ง€ ํƒ์ƒ‰ํ•œ๋‹ค.
  4. ํ•ด๋‹นํ•˜๋Š” ์„œ๋ธ”๋ฆฟ์˜ ์ธ์Šคํ„ด์Šค ์กด์žฌ ์œ ๋ฌด๋ฅผ ํ™•์ธํ•ด ์—†์œผ๋ฉด init() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด ์ƒ์„ฑํ•œ ํ›„, (์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์— ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ ) service() ๋ฉ”์„œ๋“œ๋กœ ์‹คํ–‰ํ•œ๋‹ค.
  5. ํด๋ผ์ด์–ธํŠธ์˜ GET, POST ์—ฌ๋ถ€์— ๋”ฐ๋ผ doGet() ๋˜๋Š” doPost()๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
  6. ํ˜ธ์ถœ๋œ ๋ฉ”์„œ๋“œ๋Š” ๋™์  ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ServletResponse ๊ฐ์ฒด์— ์‘๋‹ต์„ ๋ณด๋‚ธ๋‹ค.
  7. ์‘๋‹ต์ด ๋๋‚˜๋ฉด distroy() ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•ด HttpServletRequest, HttpSErvletResponse ๋‘ ๊ฐ์ฒด๋ฅผ ์†Œ๋ฉธ์‹œํ‚จ๋‹ค.

(์ฐธ๊ณ ) ์„œ๋ธ”๋ฆฟ ํ˜•์‹

public class FirstServlet extends HttpServlet {
	@Override
    public void init() {
    ...
	}
    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp) {
    ...
    }
    @Override
    public void doPost(HttpServletRequest req, HttpServletResponse resp) {
    ...
    }
    @Override
    public void destroy() {
    ...
    }
}


๐Ÿ“Œ ์„œ๋ธ”๋ฆฟ์˜ ์ƒ๋ช…์ฃผ๊ธฐ

: ์„œ๋ธ”๋ฆฟ๋„ ์ž๋ฐ” ํด๋ž˜์Šค์ด๋ฏ€๋กœ ์‹คํ–‰ํ•˜๋ฉด ์ดˆ๊ธฐํ™”๋ถ€ํ„ฐ ์„œ๋น„์Šค ์ˆ˜ํ–‰ ํ›„ ์†Œ๋ฉธํ•˜๊ธฐ๊นŒ์ง€์˜ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค. ์ด ๊ณผ์ •์„ ์„œ๋ธ”๋ฆฟ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ผ ํ•˜๋ฉฐ, ๊ฐ ๋‹จ๊ณ„๋งˆ๋‹ค ํ˜ธ์ถœ๋˜์–ด ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์„œ๋ธ”๋ฆฟ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ๋ผ ํ•œ๋‹ค.

์„œ๋ธ”๋ฆฟ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ์— ๋”ฐ๋ฅธ ํ๋ฆ„

  1. ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์ปจํ…Œ์ด๋„ˆ๋Š” ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์—†์„ ๊ฒฝ์šฐ init() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•œ๋‹ค. init()์€ ์ฒ˜์Œ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์„œ๋ธ”๋ฆฟ์˜ ์Šค๋ ˆ๋“œ์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๋ฉด ๋œ๋‹ค. ์‹คํ–‰ ์ค‘ ์„œ๋ธ”๋ฆฟ์ด ๋ณ€๊ฒฝ๋  ๊ฒฝ์šฐ, ๊ธฐ์กด ์„œ๋ธ”๋ฆฟ์„ destroy()ํ•˜๊ณ  init()์„ ํ†ตํ•ด ์ƒˆ๋กœ์šด ๋‚ด์šฉ์„ ๋‹ค์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•œ๋‹ค.

  2. init()์ด ํ˜ธ์ถœ๋œ ํ›„ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋”ฐ๋ผ์„œ service() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์ด doGet()๊ณผ doPost()๋กœ ๋ถ„๊ธฐ๋œ๋‹ค. ์ด๋•Œ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ์˜ค๋ฉด ๊ฐ€์žฅ ๋จผ์ € ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •์œผ๋กœ ์ƒ์„ฑ๋œ HttpServletRequest, HttpServletResponse์— ์˜ํ•ด request์™€ response ๊ฐ์ฒด๊ฐ€ ์ œ๊ณต๋œ๋‹ค.

  3. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์„œ๋ธ”๋ฆฟ์— ์ข…๋ฃŒ ์š”์ฒญ์„ ํ•˜๋ฉด destroy() ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋Š”๋ฐ, ์ด๋„ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋˜๋ฉฐ, ์ข…๋ฃŒ ์‹œ์— ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…๋“ค์€ destroy() ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๋ฉด ๋œ๋‹ค.

์„œ๋ธ”๋ฆฟ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ

์ดˆ๊ธฐํ™” : init()

  • ์„œ๋ธ”๋ฆฟ ์š”์ฒญ ์‹œ ๋งจ ์ฒ˜์Œ ํ•œ ๋ฒˆ๋งŒ ํ˜ธ์ถœ๋œ๋‹ค.
  • ์„œ๋ธ”๋ฆฟ ์ƒ์„ฑ ์‹œ ์ดˆ๊ธฐํ™” ์ž‘์—…์„ ์ฃผ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์ž‘์—… ์ˆ˜ํ–‰ : service()

  • Servlet interface๋ฅผ ๊ตฌํ˜„ํ•œ HttpServlet ํด๋ž˜์Šค์˜ doGet(), doPost() ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋“ค์ด ํ˜ธ์ถœ๋œ๋‹ค.
  • ์„œ๋ธ”๋ฆฟ ์š”์ฒญ ์‹œ ๋งค๋ฒˆ ํ˜ธ์ถœ๋œ๋‹ค.
  • ์‹ค์ œ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์ข…๋ฃŒ : destroy()

  • ์„œ๋ธ”๋ฆฟ์ด ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ ๋’ค ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์†Œ๋ฉธ๋  ๋•Œ ํ˜ธ์ถœ๋œ๋‹ค.
  • ์„œ๋ธ”๋ฆฟ์˜ ๋งˆ๋ฌด๋ฆฌ ์ž‘์—…์„ ์ฃผ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€