3 ๋ถ„ ์†Œ์š”

๐Ÿ“š WEB


๐Ÿ“š SERVLET

SERVLET ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

์ž๋ฐ” ์„œ๋ธ”๋ฆฟ ( JAVA Servlet ) ์€ ์ž๋ฐ”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ํŽ˜์ด์ง€๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ์„œ๋ฒ„์ธก ํ”„๋กœ๊ทธ๋žจ ํ˜น์€ ๊ทธ ์‚ฌ์–‘์„ ๋งํ•œ๋‹ค.
์ž๋ฐ” ์„œ๋ธ”๋ฆฟ์€ ์›น ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฐ” ํด๋ž˜์Šค์˜ ์ผ์ข…์ด๋‹ค.
์„œ๋ธ”๋ฆฟ์€ ์ž๋ฐ”๋กœ ๊ตฌํ˜„๋œ CGI ์ด๋‹ค.
CGI๋Š” ํŠน๋ณ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ๋„๊ตฌ๊ฐ€ ์•„๋‹ˆ๊ณ  ๋ณ„๋„๋กœ ์ œ์ž‘๋œ ์›น์„œ๋ฒ„์™€ ํ”„๋กœ๊ทธ๋žจ๊ฐ„์˜ ๊ตํ™˜๋ฐฉ์‹์ด๋‹ค.
์ž๋ฐ” ์„œ๋ธ”๋ฆฟ์€ JSP์™€ ๋น„์Šทํ•œ ์ ์ด ์žˆ์ง€๋งŒ ์ž๋ฐ” ์„œ๋ธ”๋ฆฟ์€ ์ž๋ฐ” ์ฝ”๋“œ์•ˆ์— HTML์„ ํฌํ•จํ•˜๊ณ  ์žˆ๊ณ , JSP๋Š” HTML์•ˆ์— ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.

SERVLET ์˜ ํŠน์ง•

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

SERVLET ์˜ ๋™์ž‘๊ณผ์ •


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

SERVLET API


SERVLET ์˜ ์ฃผ์š” ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ

  • HttpServlet
    ์„œ๋ธ”๋ฆฟ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ์ƒ์†ํ•ด์•ผ ํ•  ํ•„์ˆ˜ ํด๋ž˜์Šค

  • HttpServletRequest
    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ํด๋ผ์ด์–ธํŠธ์˜ ์ •๋ณด์— ๋Œ€ํ•œ ์š”์ฒญ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค

  • HttpServletResponse
    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•œ ์ •๋ณด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‹ค์‹œ ์‘๋‹ตํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค

  • HttpSession
    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„ธ์…˜์— ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์„ธ์…˜ ๊ธฐ๋Šฅ ์œ ์ง€๋ฅผ ์œ„ํ•ด์„œ ์ œ๊ณต๋˜๋Š” ํด๋ž˜์Šค


HttpServlet์—์„œ ์ œ๊ณต๋˜๋Š” ์ฃผ์š” ๋ฉ”์„œ๋“œ

๋ฉ”์„œ๋“œ ์„ค๋ช…
void init() ์„œ๋ธ”๋ฆฟ์˜ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ ๋  ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ
void destroy() ์„œ๋ธ”๋ฆฟ์˜ ๊ฐ์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ฌ๋ผ์งˆ ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ
void service(request, response) ์„œ๋ธ”๋ฆฟ์˜ ์š”์ฒญ์ด ์žˆ์„ ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ
void doGet(request, response) html์—์„œ form์˜ ๋ฉ”์„œ๋“œ๊ฐ€ get์ผ ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ
void doPost(request, response) html์—์„œ form์˜ ๋ฉ”์„œ๋“œ๊ฐ€ post์ผ ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ

HttpServletRequest์—์„œ ์ œ๊ณต๋˜๋Š” ์ฃผ์š” ๋ฉ”์„œ๋“œ

๋ฉ”์„œ๋“œ ์„ค๋ช…
String getParameter(name) name ๊ฐ’์— ํ• ๋‹น๋œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ๊ฐ’์ด ์—†์œผ๋ฉด null์„ ๋ฐ˜ํ™˜
String[] getParameters(name) name์˜ ๋ชจ๋“  ๊ฐ’์„ String ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜
Enumeration getParameterNames() ์š”์ฒญ์— ์‚ฌ์šฉ๋œ ๋ชจ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„์„
java.util.Enumeration ํƒ€์ž…์œผ๋กœ ๋ฐ˜ํ™˜
void setCharacterEncoding(env)
โ€ป ๋ณดํ†ต env = "utf-8" ์ด๋‹ค.
post๋ฐฉ์‹์œผ๋กœ ์š”์ฒญ๋œ ๋ฌธ์ž์—ด์˜ character encoding์„ ์„ค์ •

HttpServletResponse์—์„œ ์ œ๊ณต๋˜๋Š” ์ฃผ์š” ๋ฉ”์„œ๋“œ

๋ฉ”์„œ๋“œ ์„ค๋ช…
void setHeader(name, value) ์‘๋‹ต์— ํฌํ•จ๋  Header๋ฅผ ์„ค์ •ํ•œ๋‹ค.
void setContentType(type) ์ถœ๋ ฅ๋˜๋Š” ํŽ˜์ด์ง€์˜ contentType์„ ์„ค์ •
String getCharacterEncoding() ์‘๋‹ต ํŽ˜์ด์ง€์˜ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ Type์„ ๋ฐ˜ํ™˜
void sendRedirect() ์ง€์ •๋œ URL๋กœ ์š”์ฒญ์„ ์žฌ์ „์†ก

HttpSession์—์„œ ์ œ๊ณต๋˜๋Š” ์ฃผ์š” ๋ฉ”์„œ๋“œ

๋ฉ”์„œ๋“œ ์„ค๋ช…
String getId() ํ•ด๋‹น ์„ธ์…˜์˜ ์„ธ์…˜ID๋ฅผ ๋ฐ˜ํ™˜
long getCreationTime() ์„ธ์…˜์˜ ์ƒ์„ฑ๋œ ์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜
long getLastAccessedTime() ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์ด ๋งˆ์ง€๋ง‰์œผ๋กœ ์‹œ๋„๋œ ์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜
void setMaxInactiveInterval(time) ์„ธ์…˜์„ ์œ ์ง€ํ•  ์‹œ๊ฐ„์„ ์ดˆ๋‹จ์œ„๋กœ ์„ค์ •
โ€ป ์‚ฌ์ง„์„ ์Šฌ๋ผ์ด๋“œ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ํ•  ๋•Œ ์‚ฌ์šฉ
boolean isNew() ํด๋ผ์ด์–ธํŠธ ์„ธ์…˜ID๋ฅผ ํ• ๋‹นํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ true ๊ฐ’์„ ๋ฐ˜ํ™˜
void invalidate() ํ•ด๋‹น ์„ธ์…˜์„ ๋ชจ๋‘ ์ข…๋ฃŒ

SERVLET Life-Cycle

Servlet class๋Š” javaSE์—์„œ์˜ class์™€๋Š” ๋‹ค๋ฅด๊ฒŒ main method๊ฐ€ ์—†๋‹ค. ์ฆ‰ ๊ฐ์ฒด์˜ ์ƒ์„ฑ๋ถ€ํ„ฐ ์‚ฌ์šฉ์˜ ์ฃผ์ฒด๊ฐ€ ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋‹Œ Servlet Container์—๊ฒŒ ์žˆ๋‹ค.
Client๊ฐ€ ์š”์ฒญ(request) ํ•˜๊ฒŒ ๋˜๋ฉด Servlet Container๋Š” Servlet ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ (ํ•œ๋ฒˆ๋งŒ)ํ•˜๊ณ , ์ดˆ๊ธฐํ™” (ํ•œ๋ฒˆ๋งŒ) ํ•˜๋ฉฐ ์š”์ฒญ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ ( ์š”์ฒญ์‹œ๋งˆ๋‹ค ๋ฐ˜๋ณต )๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค. ๋˜ํ•œ Servlet ๊ฐ์ฒด๊ฐ€ ํ•„์š”์—†๊ฒŒ ๋˜๋ฉด ์ œ๊ฑฐํ•˜๋Š” ์ผ๊นŒ์ง€ Container๊ฐ€ ๋‹ด๋‹นํ•œ๋‹ค.

SERVLET Life-Cycle์˜ ์ฃผ์š” ๋ฉ”์„œ๋“œ


  • init()
    ์„œ๋ธ”๋ฆฟ์ด ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ ๋  ๋•Œ ํ•œ ๋ฒˆ ํ˜ธ์ถœ
    ์ฝ”๋“œ ์ˆ˜์ •์œผ๋กœ ๋‹ค์‹œ ๋กœ๋“œ ๋˜๋ฉด ๋‹ค์‹œ ํ˜ธ์ถœ

  • doGet()
    GET๋ฐฉ์‹์œผ๋กœ data ์ „์†ก ์‹œ ํ˜ธ์ถœ

  • doPost()
    POST๋ฐฉ์‹์œผ๋กœ data ์ „์†ก ์‹œ ํ˜ธ์ถœ

  • service()
    ๋ชจ๋“  ์š”์ฒญ์€ service()๋ฅผ ํ†ตํ•ด์„œ doXXX() ๋ฉ”์„œ๋“œ๋กœ ์ด๋™

  • destroy()
    ์„œ๋ธ”๋ฆฟ์ด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ๋˜๋ฉด ํ˜ธ์ถœ
    ์ฝ”๋“œ๊ฐ€ ์ˆ˜์ •๋˜๋ฉด ํ˜ธ์ถœ

SERVLET Parameter

GET

  • ํŠน์ง•
    ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ URL๋’ค์— Query String์œผ๋กœ ์ „๋‹ฌ.
    ์ž…๋ ฅ ๊ฐ’์ด ์ ์€ ๊ฒฝ์šฐ๋‚˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋…ธ์ถœ์ด ๋˜๋„ ๋ฌธ์ œ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ ์‚ฌ์šฉ

  • ์žฅ์ 
    ๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ „์†ก
    form tag ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ง์ ‘ URL์— ์ž…๋ ฅํ•˜์—ฌ ์ „์†ก ๊ฐ€๋Šฅ

  • ๋‹จ์ 
    ๋ฐ์ดํ„ฐ ์–‘์— ์ œํ•œ์ด ์žˆ๋‹ค.

POST

  • ํŠน์ง•
    URL๊ณผ ๋ณ„๋„๋กœ ์ „์†ก
    HTTP header ๋’ค body์— ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ ๋ฐ์ดํ„ฐ๋กœ ์ „๋‹ฌ

  • ์žฅ์ 
    ๋ฐ์ดํ„ฐ์˜ ์ œํ•œ์ด ์—†๋‹ค.
    ์ตœ์†Œํ•œ์˜ ๋ณด์•ˆ ์œ ์ง€ ํšจ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

  • ๋‹จ์ 
    ์ „๋‚  ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ๊ฐ™์„ ๊ฒฝ์šฐ GET๋ฐฉ์‹ ๋ณด๋‹ค ๋Š๋ฆฌ๋‹ค.

URL ?


SERVLET ๋งˆ๋ฌด๋ฆฌ

์ž๋ฐ” ์„œ๋ธ”๋ฆฟ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค.
์†”์งํžˆ ํ˜„์žฌ์—๋Š” ๊ฑฐ์˜ ์•ˆ์“ฐ์ธ๋‹ค์ง€๋งŒ ์›น ๊ฐœ๋ฐœ์˜ ์—ญ์‚ฌ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ํ–ฅ๋“ค์ด ์žˆ์„ ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.
๊ทธ๊ฑด ์‚ฌ์‹ค ๋” ๋ฐฐ์›Œ๋ด์•ผ ์•Œ๊ฒ ์ง€๋งŒ ใ…Žใ…Ž
์‹ค์Šต๋„ ํ•ด๋ณด์•˜๋Š”๋ฐ ํ™•์‹คํžˆ ์›น ๋“ค์–ด์˜ค๋‹ˆ๊นŒ ์™”๋‹ค๊ฐ”๋‹ค ํ—ท๊ฐˆ๋ฆฌ๋Š”๊ฒŒ ์ข€ ๋งŽ๋‹ค..
๊ทธ๋ฆฌ๊ณ  ์ž๋ฐ”๋ฅผ ์™œ ์ฐฉ์‹คํžˆ ํ•ด๋†“์œผ๋ผ๋Š”์ง€ ์•Œ ๊ฒƒ ๊ฐ™๋‹ค.
ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด ๋‹ค ์ž๋ฐ”๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฐ”๋ฅผ ์ž˜ ์•Œ๊ณ  ์žˆ์ง€ ์•Š์œผ๋ฉด ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋„ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ๊ฒƒ ๊ฐ™๋‹ค.
๊ทธ๋ฆฌ๊ณ  servlet์€ java ์ฝ”๋“œ์•ˆ์— HTML์„ ์ž‘์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ต‰์žฅํžˆ ๋ฒˆ๊ฑฐ๋กœ์šด ์ž‘์—…๋“ค์ด ์กด์žฌํ•œ๋‹ค.
๊ทธ๊ฒƒ๋“ค์„ ํ•ด์†Œํ•ด์ฃผ๊ณ  ์ข€ ๋” ์œ ์šฉํ•œ ๋ฐฉ๋ฒ•์ธ JSP ๋ฅผ ๋” ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.





๐Ÿ‘ ์ฐธ์กฐ
https://mangkyu.tistory.com/14

ํƒœ๊ทธ: , ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: