JSP + Servlet

ํŒŒ๊ณผยท2022๋…„ 7์›” 22์ผ
0

JSP + Servlet

๋ชฉ๋ก ๋ณด๊ธฐ
29/33

๐Ÿ”— javax.servlet ํŒจํ‚ค์ง€

javax.servlet
Interface ServletRequest
> Interface HttpServletRequest

์šฐ๋ฆฌ๊ฐ€ ์“ฐ๋Š” ์„œ๋ธ”๋ฆฟ์€ HttpServlet์ด๋ž€ ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค.

Servlet ์ธํ„ฐํŽ˜์ด์Šค

๋ชจ๋“  ์„œ๋ธ”๋ฆฟ์ด ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜.
์„œ๋ธ”๋ฆฟ์˜ ์ƒ๋ช…์ฃผ๊ธฐ์— ํ•„์š”ํ•œ
init(), service(), destroy() ์ œ๊ณต.

Servlet Config ์ธํ„ฐํŽ˜์ด์Šค

์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์„œ๋ธ”๋ฆฟ์„ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ ํ•„์š”๋กœ ํ•˜๋Š” ์ •๋ณด๋ฅผ ์ „๋‹ฌ.
web.xml(๋ฐฐํฌ์„œ์ˆ ์ž)์„ ์ฐธ๊ณ ํ•˜์—ฌ ์„œ๋ธ”๋ฆฟ ์ดˆ๊ธฐํ™”๋ฅผ ์œ„ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ , ์ปจํ…Œ์ด๋„ˆ๊ฐ€ init()์œผ๋กœ ์„œ๋ธ”๋ฆฟ์„ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ servletConfig ๊ฐ์ฒด๊ฐ€ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋œ๋‹ค.

๐Ÿ”— ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ

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

์„œ๋ธ”๋ฆฟ์„ ์œ„ํ•œ ๋ง ๊ทธ๋Œ€๋กœ ์ผ์ข…์˜ '์ปจํ…Œ์ด๋„ˆ' ์„œ๋ธ”๋ฆฟ์˜ ์ƒ์„ฑ, ์‹คํ–‰, ํŒŒ๊ดด๋ฅผ ๋‹ด๋‹น.

์›น ์„œ๋ฒ„์™€ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ์–ด๋–ป๊ฒŒ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ• ๊นŒ?

  1. ์›น ์„œ๋ฒ„๊ฐ€ HTTP ์š”์ฒญ์„ ๋ฐ›๋Š”๋‹ค.
  2. ์›น ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋กœ ์ „๋‹ฌํ•œ๋‹ค. (forward)
  3. ์„œ๋ธ”๋ฆฟ์ด ์ปจํ…Œ์ด๋„ˆ์— ์—†๋‹ค๋ฉด, ์„œ๋ธ”๋ฆฟ์„ ๋™์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์— ๋กœ๋“œํ•œ๋‹ค.
  4. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์„œ๋ธ”๋ฆฟ์˜ init()๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด, ์„œ๋ธ”๋ฆฟ์ด ์ดˆ๊ธฐํ™”๋œ๋‹ค. (์„œ๋ธ”๋ฆฟ์ด ์ฒ˜์Œ ๋กœ๋“œ๋์„ ๋•Œ ํ•œ๋ฒˆ๋งŒ ํ˜ธ์ถœ)
  5. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์„œ๋ธ”๋ฆฟ์˜ service()๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ HTTP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. (์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ , ์‘๋‹ต์„ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค) ์„œ๋ธ”๋ฆฟ์€ ์ปจํ…Œ์ด๋„ˆ ์ฃผ์†Œ์— ๋‚จ์•„์žˆ๊ณ , ๋‹ค๋ฅธ HTTP ์š”์ฒญ๋“ค์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  6. ์›น ์„œ๋ฒ„๋Š” ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ ๊ฒฐ๊ณผ๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ๋ฐ˜ํ™˜ํ•œ๋‹ค.

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

ServletContext ์ธํ„ฐํŽ˜์ด์Šค

์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์™€ ์„œ๋ธ”๋ฆฟ์˜ ์‚ฌ์ด์—์„œ ๋‘˜์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฐ์ข… ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
๋˜๋Š” ์„œ๋ธ”๋ฆฟ์—์„œ ๋‹ค๋ฅธ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ์‚ฌ์šฉ์ž ์š”์ฒญ์„ ์ „๋‹ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
ServletContext ๊ฐ์ฒด๋Š” ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ๋™ํ•  ๋•Œ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๊ณ , ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์— ๋‹จ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋งŒ ์กด์žฌํ•œ๋‹ค.
servletConfig์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๊ณ  web.xml์„ ์ฐธ๊ณ ํ•ด ๊ฐ์ข… ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.
servletConfig๊ฐ์ฒด์˜ ์ •๋ณด๋Š” ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ณ , ServletContext๊ฐ์ฒด์˜ ์ •๋ณด๋Š” ์ปจํ…Œ์ด๋„ˆ์— ์†ํ•œ ๋ชจ๋“  ์„œ๋ธ”๋ฆฟ์ด ๊ณต์œ ํ•œ๋‹ค.
๋˜ํ•œ setAttribute()์™€ getAttribute()๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ๊บผ๋‚ด์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ €์žฅ์†Œ์˜ ์—ญํ• ์„ ํ•œ๋‹ค.

ServletRequest ์ธํ„ฐํŽ˜์ด์Šค

์š”์ฒญ์„ ํ†ตํ•ด ์„œ๋ธ”๋ฆฟ์— ์ „๋‹ฌ๋˜๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•˜๊ณ  ๊ทธ ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ(request)ํ•˜๋ฉด ์„œ๋ฒ„๋Š” ๊ณ ๊ฐ ์š”์ฒญ์— ๋”ธ๋ ค์˜จ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์„œ๋ธ”๋ฆฟ์— ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ServletRequest ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ ๋‹ค.
ServletRequest๊ฐ์ฒด๋Š” ์„œ๋ธ”๋ฆฟ ์‹คํ–‰์„ ์œ„ํ•œ service()๋ฉ”์„œ๋“œ์— ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋˜๊ณ , ์ด ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋ธ”๋ฆฟ์ด ๊ฐ์ข… ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.
์‚ฌ์šฉ์ž๊ฐ€ service()๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ ๊ฐ์ฒด์— ๋”ฐ๋กœ ์ •๋ณด ์ €์žฅ๋„ ๊ฐ€๋Šฅํ•œ๋ฐ, setAttribute() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

ServletResponse ์ธํ„ฐํŽ˜์ด์Šค

๊ณ ๊ฐ ์š”์ฒญ์— ๋”ฐ๋ฅธ ์‘๋‹ต(response)์„ ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•˜๊ณ  ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
์ƒ์„ฑ ์‹œ์ ์€ ServletRequest์™€ ๋™์ผํ•˜๋‹ค. ๋‘˜ ๋‹ค ๊ณ ๊ฐ์ด ์„œ๋ฒ„์— ์š”์ฒญํ•  ๋•Œ ๋™์‹œ์— ์ƒ์„ฑ๋˜๊ณ , ๋™์‹œ์— service()๋ฉ”์„œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ œ๊ณต๋œ๋‹ค.

RequestDispatcher ์ธํ„ฐํŽ˜์ด์Šค

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ ์ƒ์„ฑ๋˜๋Š” request ๊ฐ์ฒด๋ฅผ ์„œ๋ฒ„ ์•ˆ์˜ ๋‹ค์–‘ํ•œ ๋ฆฌ์†Œ์Šค๋กœ ์ „๋‹ฌํ•˜๋Š” ์—ญํ• . - ?

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