Backend/SERVLET

[์›น ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ] ์„œ๋ธ”๋ฆฟ์˜ ์ƒ๋ช…์ฃผ๊ธฐ

์œต๋ณต 2020. 1. 6. 20:08

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


"์ž๋ฐ” ํ”Œ๋žซํผ์—์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐ์ˆ "

 

๋ณดํ†ต JSP๋Š” ์„œ๋ธ”๋ฆฟ์ด๋ผ๋Š” ์„œ๋ฒ„์— ๊ธฐ๋ฐ˜ํ•˜๋Š” ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ ๋กœ์จ, ๋‚ด๋ถ€์ ์œผ๋กœ JSP๊ฐ€ ์„œ๋ธ”๋ฆฟ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜๋˜์–ด ์‹คํ–‰๋œ๋‹ค. ์„œ๋ธ”๋ฆฟ์„ ํ•จ๊ป˜ ์ด์šฉํ•˜๋ฉด ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ™•์žฅ์ด ์šฉ์ดํ•ด์ง€๊ณ  ๋…๋ฆฝ์ ์ธ ํ”Œ๋žซํผ์œผ๋กœ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์„œ๋ธ”๋ฆฟ์˜ ์žฅ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

(1) ์ž๋ฐ”๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฏ€๋กœ ์ž๋ฐ” API๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

(2) ์šด์˜์ฒด์ œ๋‚˜ ํ•˜๋“œ์›จ์–ด์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค

(3) ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํšจ์œจ์ ์ธ ์ž๋ฃŒ ๊ณต์œ  ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.

(4) ๋‹ค์–‘ํ•œ ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๊ฐœ๋ฐœ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ์„œ๋ธ”๋ฆฟ์„ ์ด์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. 

(1) MVC ํŒจํ„ด์„ ์‰ฝ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ์ปจํ…Œ์ด๋„ˆ์™€ ๋ฐ€์ ‘ํ•œ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

(2) ๋ฆฌ์Šค๋„ˆ ๋ฐ ํ•„ํ„ฐ ์„œ๋ธ”๋ฆฟ ๋“ฑ ๊ณ ๊ธ‰ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์„ ํ†ตํ•ด ๋”์šฑ ํšจ๊ณผ์ ์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

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


์„œ๋ธ”๋ฆฟ์€ ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์„œ๋ฒ„ ์†Œํ”„ํŠธ์›จ์–ด์— ์˜ํ•ด ๋™์ž‘ํ•œ๋‹ค. ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ์›น ์„œ๋ฒ„์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ URL์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์š”์ฒญ์— ๋”ฐ๋ผ ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ์„ ์‹คํ–‰ํ•œ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด JSP๋‚˜ ์„œ๋ธ”๋ฆฟ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์›น ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์—๋Š” ์›น ์„œ๋ฒ„๋งŒ ์žˆ์œผ๋ฉด ๋˜์ง€๋งŒ, JSP๋‚˜ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋ ค๋ฉด ์•„ํŒŒ์น˜ ํ†ฐ์บฃ๊ณผ ๊ฐ™์€ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

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

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

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

์„œ๋ธ”๋ฆฟ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์†Œ์Šค ์ž‘์„ฑ ํ›„ ์ปดํŒŒ์ผ ๊ณผ์ •์„ ๊ฑฐ์ณ ์ปจํ…Œ์ด๋„ˆ์— ๋ฐฐ์น˜ํ•˜๊ฒŒ ๋˜๋ฉด ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ์‹คํ–‰๋˜์–ด ๊ด€๋ฆฌ๋œ๋‹ค.

์ดํ›„ ์‚ฌ์šฉ์ž ์š”์ฒญ์— ๋”ฐ๋ผ ์Šค๋ ˆ๋“œ ๋‹จ์œ„๋กœ ์‹คํ–‰๋˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™ ๋“ฑ ํ•„์š”ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ HTML ํ˜•์‹์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.

 

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

 

(1) ์ปจํ…Œ์ด๋„ˆ๋Š” ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•œ๋‹ค.

(2) ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

(3) ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค์˜ init() ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค. init() ๋ฉ”์„œ๋“œ๋Š” ์ƒ๋ช…์ฃผ๊ธฐ์—์„œ ๋‹จ ํ•œ๋ฒˆ ํ˜ธ์ถœ๋˜๋ฉฐ, ๊ฐ์ข… ์ดˆ๊ธฐํ™” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

(4) ์„œ๋ธ”๋ฆฟ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์š”์ฒญ์— ๋Œ€ํ•ด์„œ ์• ๋„ˆํ…Œ์ด์…˜์ด๋‚˜ web.xml์„ ์ฐธ์กฐํ•˜์—ฌ URL ๋งคํ•‘์„ ํ™•์ธํ•˜๊ณ , ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ ์ธ์Šคํ„ด์Šค๋กœ๋ถ€ํ„ฐ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  service() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ๋ชจ๋“  ์‚ฌ์šฉ์ž ์š”์ฒญ์— ๋Œ€ํ•˜์—ฌ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉฐ, ์ดํ›„ doGet(), doPost() ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค.

(5) destroy() ๋ฉ”์„œ๋“œ๋Š” ์„œ๋ธ”๋ฆฟ์ด ์ข…๋ฃŒ๋  ๋•Œ ํ˜ธ์ถœ๋œ๋‹ค. 

์„œ๋ธ”๋ฆฟ ๊ตฌ์กฐ์™€ API


API๋Š” Application Programming Interface์˜ ์•ฝ์ž๋กœ ํŠน์ • ํด๋ž˜์Šค๋ฅผ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๊ทœ๊ฒฉํ™”ํ•ด๋†“์€ ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ž๋ฐ” ์„œ๋ธ”๋ฆฟ API๋Š” ์„œ๋ธ”๋ฆฟ๊ณผ ์„œ๋ฒ„ ์‚ฌ์ด์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•œ๋‹ค.

 

๋ชจ๋“  ์„œ๋ธ”๋ฆฟ์€ javax.servlet.Servlet ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ์ž๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฏธ๋ฆฌ ์ •์˜๋œ HttpServlet์„ ์ƒ์†ํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋œ๋‹ค.

 

ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์— ๋”ฐ๋ผ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” service() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , service() ๋ฉ”์„œ๋“œ๋Š” ์š”์ฒญ์ด GET์ธ์ง€ POST์ธ์ง€๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ฐ๊ฐ doGet(), doPost() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ตฌํ˜„ํ•ด์•ผ ํ•  ๋ถ€๋ถ„์€ doGet()๊ณผ doPost() ๋ฉ”์„œ๋“œ ์ด๋‹ค. ๋งŒ์•ฝ ํด๋ผ์ด์–ธํŠธ ํŠน์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ GET ์š”์ฒญ๊ณผ POST ์š”์ฒญ์„ ๊ตฌ๋ถ„ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๋ฉด ๋‘˜ ๋‹ค ๊ตฌํ˜„ํ•ด์•ผ ํ•˜์ง€๋งŒ, ๊ตณ์ด ๊ตฌ๋ถ„ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋ฉด doGet() ํ˜น์€ doPost() ๋ฉ”์„œ๋“œ ์ค‘ ํ•œ๊ฐ€์ง€๋งŒ ๊ตฌํ˜„ํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋ฉ”์„œ๋“œ์˜ ๊ฒฝ์šฐ ๊ตฌํ˜„๋œ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋„๋ก ๊ตฌํ˜„ํ•œ๋‹ค. 

 

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


1. ์„œ๋ธ”๋ฆฟ ์ดˆ๊ธฐํ™” : init() ๋ฉ”์„œ๋“œ 

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

 

2. ์š”์ฒญ/์‘๋‹ต : service() ๋ฉ”์„œ๋“œ

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

 

3. ์„œ๋ธ”๋ฆฟ ์ข…๋ฃŒ : destroy() ๋ฉ”์„œ๋“œ

์ปจํ…Œ์ด๋„ˆ๋กœ๋ถ€ํ„ฐ ์„œ๋ธ”๋ฆฟ ์ข…๋ฃŒ ์š”์ฒญ์ด ์žˆ์„ ๋•Œ destroy() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ์„œ๋ธ”๋ฆฟ์ด ์ข…๋ฃŒ๋˜๋ฉด์„œ ์ •๋ฆฌํ•ด์•ผํ•  ๋ถ€๋ถ„์€ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค.

 

Reference

https://lalwr.blogspot.com/2018/03/blog-post_20.html

 

์„œ๋ธ”๋ฆฟ์ด๋ž€?

1. ์„œ๋ธ”๋ฆฟ์ด๋ž€?? ์ž๋ฐ” ํ”Œ๋žซํผ์—์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์˜ ํ•ต์‹ฌ ๊ธฐ์ˆ   JSP๋Š” ์„œ๋ธ”๋ฆฟ ๊ธฐ๋ฐ˜์˜ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ ๋กœ ๋‚ด๋ถ€์ ์œผ๋กœ JSP๋Š” ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ์‹คํ–‰  ๊ณ ๊ธ‰ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด์„œ๋Š” ์„œ๋ธ”๋ฆฟ์— ๋Œ€ํ•œ ์ด...

lalwr.blogspot.com

ํ”„๋กœ์ ํŠธ๋กœ ๋ฐฐ์šฐ๋Š” ์ž๋ฐ” ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Servlet, JSP, JSDBC) - ํ•œ๋น› ์•„์นด๋ฐ๋ฏธ - ํ™ฉํฌ์ • ์ง€์Œ