[์น ์๋ฒ ํ๋ก๊ทธ๋๋ฐ] ์๋ธ๋ฆฟ์ ์๋ช ์ฃผ๊ธฐ
์๋ธ๋ฆฟ์ ํน์ง
"์๋ฐ ํ๋ซํผ์์ ์ปดํฌ๋ํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ ์ฌ์ฉํ๋ ํต์ฌ ๊ธฐ์ "
๋ณดํต JSP๋ ์๋ธ๋ฆฟ์ด๋ผ๋ ์๋ฒ์ ๊ธฐ๋ฐํ๋ ์น ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ ๋ก์จ, ๋ด๋ถ์ ์ผ๋ก JSP๊ฐ ์๋ธ๋ฆฟ ํํ๋ก ๋ณํ๋์ด ์คํ๋๋ค. ์๋ธ๋ฆฟ์ ํจ๊ป ์ด์ฉํ๋ฉด ์น ์ดํ๋ฆฌ์ผ์ด์ ํ์ฅ์ด ์ฉ์ดํด์ง๊ณ ๋ ๋ฆฝ์ ์ธ ํ๋ซํผ์ผ๋ก ๊ฐ๋ฐํ ์ ์๋ค.
์๋ธ๋ฆฟ์ ์ฅ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
(1) ์๋ฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฏ๋ก ์๋ฐ API๋ฅผ ๋ชจ๋ ์ฌ์ฉํ ์ ์๋ค.
(2) ์ด์์ฒด์ ๋ ํ๋์จ์ด์ ์ํฅ์ ๋ฐ์ง ์๋๋ค
(3) ์น ์ดํ๋ฆฌ์ผ์ด์ ์์ ํจ์จ์ ์ธ ์๋ฃ ๊ณต์ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
(4) ๋ค์ํ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ๋ฐ๋๊ตฌ๋ฅผ ํ์ฉํ ์ ์๋ค.
์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ ์๋ธ๋ฆฟ์ ์ด์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ด์ ์ ์ป์ ์ ์๋ค.
(1) MVC ํจํด์ ์ฝ๊ฒ ์ ์ฉํ ์ ์๊ณ , ์ปจํ ์ด๋์ ๋ฐ์ ํ ์๋ฒ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ ์ ์๋ค.
(2) ๋ฆฌ์ค๋ ๋ฐ ํํฐ ์๋ธ๋ฆฟ ๋ฑ ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ ํตํด ๋์ฑ ํจ๊ณผ์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๊ณํ ์ ์๋ค.
์๋ธ๋ฆฟ๊ณผ ์๋ธ๋ฆฟ ์ปจํ ์ด๋
์๋ธ๋ฆฟ์ ์ปจํ ์ด๋๋ผ๊ณ ๋ถ๋ฆฌ๋ ์๋ฒ ์ํํธ์จ์ด์ ์ํด ๋์ํ๋ค. ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์น ์๋ฒ์ ๋ง์ฐฌ๊ฐ์ง๋ก URL์ ๊ธฐ๋ฐ์ผ๋ก ํ ์์ฒญ์ ๋ฐ๋ผ ํด๋น ์๋ธ๋ฆฟ์ ์คํํ๋ค. ์ฝ๊ฒ ๋งํ๋ฉด JSP๋ ์๋ธ๋ฆฟ์ ์ฌ์ฉํ์ง ์๋ ์น ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์๋ ์น ์๋ฒ๋ง ์์ผ๋ฉด ๋์ง๋ง, JSP๋ ์๋ธ๋ฆฟ์ผ๋ก ๊ฐ๋ฐํ๋ ค๋ฉด ์ํ์น ํฐ์บฃ๊ณผ ๊ฐ์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ํ์ํ๋ค.
์น ์๋ฒ 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) - ํ๋น ์์นด๋ฐ๋ฏธ - ํฉํฌ์ ์ง์