๐Ÿ“š CS [ComputerScience]/๐Ÿ“š CS ๋ฉด์ ‘

๐Ÿ“š [CS๋ฉด์ ‘] ์›น ๋ฉด์ ‘ ์งˆ๋ฌธ [9] [Servlet]

Dbswnstjd 2024. 2. 29. 21:34

1. Servlet ์ด๋ž€ ?

์„œ๋ธ”๋ฆฟ์ด๋ž€ ๋™์  ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฐ” ๊ธฐ๋ฐ˜์˜ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ ์ด๋‹ค. ์›น์„ ๋งŒ๋“ค ๋•Œ Request, Response์—๋Š” ๊ทœ์น™์ด ์กด์žฌํ•˜๋Š”๋ฐ ์ด๋Ÿฌํ•œ ์›น ์š”์ฒญ๊ณผ ์‘๋‹ต์˜ ํ๋ฆ„์„ ๊ฐ„๋‹จํ•œ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๋งŒ์œผ๋กœ ์ฒด๊ณ„์ ์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. 

 

Servlet์˜ ์ฃผ์š” ํŠน์ง•

  • ํด๋ผ์ด์–ธํŠธ์˜ Request์— ๋Œ€ํ•œ ๋™์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปดํฌ๋„ŒํŠธ
  • HTML์„ ์‚ฌ์šฉํ•ด Response
  • Java์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์ด์šฉ
  • MVC ํŒจํ„ด์—์„œ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ด์šฉ
  • java.servlet.http.HttpServlet ํด๋ž˜์Šค๋ฅผ ์ƒ์†
  • UDP ๋ณด๋‹ค ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค
  • HTML ๋ณ€๊ฒฝ ์‹œ Servlet์„ ์žฌ ์ปดํŒŒ์ผ ํ•ด์•ผํ•จ

์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋ž€?

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

HttpServletRequest
httpํ”„๋กœํ† ์ฝœ์˜ request์ •๋ณด๋ฅผ ์„œ๋ธ”๋ฆฟ์—๊ฒŒ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ ํ—ค๋” ์ •๋ณด, ํŒŒ๋ผ๋ฏธํ„ฐ, ์ฟ ํ‚ค, URI, URL ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์ฝ์–ด ๋“ค์ด๋Š” ๋ฉ”์„œ๋“œ์™€ Body์˜ Stream์„ ์ฝ์–ด ๋“ค์ด๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

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

 

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

1. ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ 

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

 

2. ํ†ต์‹  ์ง€์›

ํด๋ผ์ด์–ธํŠธ์˜ Request๋ฅผ ๋ฐ›์•„์ฃผ๊ณ  Response๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ์›น ์„œ๋ฒ„์™€ ์†Œ์ผ“์„ ๋งŒ๋“ค์–ด ํ†ต์‹ ์„ ํ•ด์ค€๋‹ค. ์†Œ์ผ“์„ ๋งŒ๋“ค๊ณ  listen, accept ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ API๋กœ ์ œ๊ณตํ•˜์—ฌ ๋ณต์žกํ•œ ๊ณผ์ •์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๊ณ  ๊ฐœ๋ฐœ์ž๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ๋”์šฑ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

3. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ๊ด€๋ฆฌ

4. ์„ ์–ธ์ ์ธ ๋ณด์•ˆ๊ด€๋ฆฌ

 

์„œ๋ธ”๋ฆฟ ๋™์ž‘๊ณผ์ •

1. Servlet Request, Servlet Response ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ

2. ์„ค์ • ํŒŒ์ผ์„ ์ฐธ๊ณ ํ•˜์—ฌ ๋งคํ•‘ํ•  Servlet์„ ํ™•์ธ

3. ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ ์ธ์Šคํ„ด์Šค์˜ ์กด์žฌ ์œ ๋ฌด๋ฅผ ํ™•์ธํ•˜๊ณ  ์—†์œผ๋ฉด init() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ƒ์„ฑ

4. Servlet Container์— ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  Service๋ฅผ ์‹คํ–‰

5. ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•˜์˜€์œผ๋ฉด destroy() ๋ฉ”์„œ๋“œ ์‹คํ–‰ํ•˜์—ฌ Servlet Request, Servlet Response ๊ฐ์ฒด ์†Œ๋ฉธ