์ ๋ฆฌ์ ์ฐธ๊ณ ํ ๋ธ๋ก๊ทธ
๊ณต์ ๋ฌธ์
์๋ธ๋ฆฟ ๊ด๋ จ ํด๋์ค์ ์ธํฐํ์ด์ค๋ค์ ํฌํจํ๋ค.
Servlet
ServletConfig
ServletContext
ServletRequest
ServletResponse
RequestDispatcher
๋ชจ๋ ์๋ธ๋ฆฟ์ด ๊ตฌํํด์ผ ํ๋ ๋ฉ์๋๋ฅผ ์ ์ํ๋ค.
์น ์๋ฒ ์์์ ๋์๊ฐ๋ ์์ ์๋ฐ ํ๋ก๊ทธ๋จ. ์น ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ์ ๋ฐ๊ณ ์๋ตํ๋ค - ๋ณดํต HTTP๋ฅผ ํตํด์.
์ด ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ค๋ฉด javax.servlet.GenericServlet ํด๋์ค๋ฅผ ์์๋ฐ๋ ์๋ธ๋ฆฟ ํน์ javax.servlet.http.HttpServlet ํด๋์ค๋ฅผ ์์๋ฐ๋ ์๋ธ๋ฆฟ์ ์์ฑํ๋ค.
์ด ์ธํฐํ์ด์ค๋ ์๋ธ๋ฆฟ์ ์ด๊ธฐํํ๊ณ , ์์ฒญ์ ์ํํ๊ณ , ์๋ธ๋ฆฟ์ ์๋ฒ๋ก๋ถํฐ ์ ๊ฑฐํ๋ ์๋ธ๋ฆฟ ์๋ช
์ฃผ๊ธฐ ๋ฉ์๋๋ฅผ ์ ์ํ๋ค.
์ด ๋ฉ์๋๋ค์ ๋ชจ๋ ์๋ธ๋ฆฟ ์ปจํ
์ด๋๊ฐ ํธ์ถํจ์ผ๋ก์จ ์คํ๋๋ค.
void init(ServletConfig config)
์ด๊ธฐํ. ์๋น์คํ ์ ์๋๋ก ๋ฐฐ์น๋๋ค๋ ๊ฒ์ ์๋ฏธ.
์๋ธ๋ฆฟ ์ธ์คํด์ค๋ฅผ ๋ง๋ ํ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ๋ฑ ํ ๋ฒ ํธ์ถํ๋ค. ์๋ธ๋ฆฟ์ด ์์ฒญ์ ๋ฐ๊ธฐ ์ ์ ๋ฐ๋์ init()์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์ด์ผ ํ๋ค.
ServletConfig ๊ฐ์ฒด๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ๋ฐ๋๋ค.
void service(ServletRequest req, ServletResponse res)
์๋ธ๋ฆฟ์ด ์์ฒญ์ ์๋ตํ ์ ์๋๋ก ํ๋ค.
init() ๋ฉ์๋๊ฐ ์๋ฒฝํ ๋๋ ํ์๋ง ํธ์ถ๋๋ค.
void destroy()
์๋ธ๋ฆฟ์ด ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ ๋ ํธ์ถ๋๋ค.
์๋ธ๋ฆฟ์ด ์ด๊ธฐํ๋ ๋ ์๋ธ๋ฆฟ์ ์ ๋ณด๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด ์๋ธ๋ฆฟ ์ปจํ ์ด๋์์ ์ฌ์ฉํ๋ ๊ฐ์ฒด.
ServletContext getServletContext()
ํธ์ถ์๊ฐ ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ interactํ๋ ๋ฐ ์ฌ์ฉํ ServletContext ๊ฐ์ฒด ๋ฐํ.
์๋ธ๋ฆฟ ์ปจํ
์ด๋์ ํต์ ํ๊ธฐ ์ํด ์ฌ์ฉํ ์ผ๋ จ์ ๋ฉ์๋๋ค์ ์ ์ํ๋ค - ํ์ผ์ MIMEํ์
์ป๊ธฐ, ์์ฒญ ์ ๋ฌํ๊ธฐ, ๋ก๊ทธ ํ์ผ์ ์ฐ๊ธฐ ๋ฑ...
์ฆ ์๋ธ๋ฆฟ ์ปจํ
์ด๋์ ์๋ธ๋ฆฟ ์ฌ์ด์์ ๋์ ์ฐ๊ฒฐํ๋ ๋ฐ ํ์ํ ๊ฐ์ข
๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
ServletContext๊ฐ์ฒด๋ ServletConfig๊ฐ์ฒด - ์๋ธ๋ฆฟ์ด ์ด๊ธฐํ๋ ๋ ์น ์๋ฒ๊ฐ ์ ๊ณตํ๋ ๊ฐ์ฒด - ์์ ํฌํจ๋๋ค.
Object getAttribute(String name)
ํด๋น ์ด๋ฆ์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋ ์์ฑ์ ๋ฐํํ๊ฑฐ๋, ํด๋น ์ด๋ฆ์ ์์ฑ์ด ์์ผ๋ฉด null์ ๋ฐํํ๋ค.
void SetAttribute(String name, Object object)
ํด๋น ์ด๋ฆ์ ๊ฐ์ฒด๋ฅผ ๋ฐ์ธ๋ฉํ๋ค.
์๋ธ๋ฆฟ์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๊ฐ์ฒด๋ฅผ ์ ์ํ๋ค. ์๋ธ๋ฆฟ ์ปจํ
์ด๋๊ฐ ServletRequest ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ , ์๋ธ๋ฆฟ์ service ๋ฉ์๋์ ์ธ์๋ก ์ ๋ฌํ๋ค.
ServletRequest ๊ฐ์ฒด๋ ๋งค๊ฐ๋ณ์parameter์ ์ด๋ฆ๊ณผ ๊ฐ, ์์ฑattribute, ์
๋ ฅ ์คํธ๋ฆผ์ ํฌํจํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ค.
ServletRequest๋ฅผ ์์๋ฐ๋ ์ธํฐํ์ด์ค๋ ์ถ๊ฐ์ ์ธ ํ๋กํ ์ฝ๋ณ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ ์ ์๋ค(์๋ฅผ ๋ค์ด HttpServletRequest๋ HTTP๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ค).
Object getAttribute(String name)
ํด๋น ์ด๋ฆ์ ์์ฑ ๊ฐ์ ๊ฐ์ฒด๋ก ๋ฐํํ๋ค - ์์ผ๋ฉด null ๋ฐํ.
void SetAttribute(String name, Object o)
์ด ์์ฒญ์ ์์ฑ์ ์ ์ฅํ๋ค.
์๋ธ๋ฆฟ์ด ํด๋ผ์ด์ธํธ์ ์๋ต์ ๋ณด๋ผ ์ ์๊ฒ ๋๋ ๊ฐ์ฒด๋ฅผ ์ ์ํ๋ค. ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ์๋ธ๋ฆฟ์ service ๋ฉ์๋์ ์ธ์๋ก ์ ๋ฌํ๋ค.
์์ฒญRequest์ ํ์ผ์์ ํ์ผ๋ก ์ ๋ฌํ๋ ์ญํ . ๋ง ๊ทธ๋๋ก dispatcher.
ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ์ ๋ฐ๊ณ ๊ทธ ์์ฒญ์ ์๋ฒ์ ์ฌ๋ฌ ๋ฆฌ์์ค(resource - ์๋ธ๋ฆฟ, htmlํ์ผ, jspํ์ผ ๋ฑ)์ผ๋ก ๋ณด๋ด๋ ๊ฐ์ฒด๋ฅผ ์ ์ํ๋ค. ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ RequestDispatcher ๊ฐ์ฒด๋ฅผ ๋ง๋ค๋ฉด ์๋ฒ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ธ๋ wrapper๋ก ์ฌ์ฉ๋๋ค. ์๋ธ๋ฆฟ์ wrapper๋ก ์๋๋ ์ธํฐํ์ด์ค์ง๋ง ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ RequestDispatcher ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ์ด๋ค ๋ฆฌ์์ค๋ wrapํ ์ ์๋ค.
void forward(ServletRequest request, ServletResponse response)
์๋ธ๋ฆฟ์ผ๋ก๋ถํฐ ์๋ฒ์ ๋ค๋ฅธ ๋ฆฌ์์ค(์๋ธ๋ฆฟ, jspํ์ผ, htmlํ์ผ)๋ก ์์ฒญ์ ์ ๋ฌํ๋ค.
์ด๋ ์์ฒญ๊ณผ ํจ๊ป response์๋ต์ ๋ํ ์ฑ ์๋ ํจ๊ป ๋ค๋ฅธ ์๋ธ๋ฆฟ์ผ๋ก ์์ ๋๊ธด๋ค.
void include(ServletRequest request, ServletResponse response)
์๋ต์ ๋ฆฌ์์ค์ ๋ด์ฉ(์๋ธ๋ฆฟ, jspํ์ผ, htmlํ์ผ)์ ํฌํจํ๋ค.
์ด๋๋ ์์ฒญ์ ๋ค๋ฅธ ์๋ธ๋ฆฟ์ผ๋ก ๋๊ฒผ๋ค๊ฐ ๋ค์ ๋๋ ค๋ฐ๋๋ค. ๋ฐ๋ผ์ response์ ๋ํ ์ฑ ์(์ ์ด๊ถ)์ ์ฒ์ ๊ณ ๊ฐ์ด ์์ฒญํ ์๋ธ๋ฆฟ์ด ๋ค์ ๊ฐ์ ธ์ค๊ฒ ๋๋ค.
RequestDispatcher ๊ฐ์ฒด๋ ServletContext๋ ServletRequest์ getRequestDispatcher()๋ฉ์๋๋ฅผ ํตํด ์ป์ ์ ์๋ค.
์ฐธ๊ณ : https://dololak.tistory.com/502
JSPํ์ด์ง์๋ ServletRequest์ instance์ธ request ๋ด์ฅ ๊ฐ์ฒด๊ฐ ์์ผ๋ฏ๋ก request๋ก ์ฝ๊ฒ ์ป์ ์ ์๋ค.
HttpServletRequest์์๋ URL๊ฒฝ๋ก๋ฅผ ํตํด์๋ง ๋์์ ์ง์ ํ ์ ์๋ค. ํ์ง๋ง ServletContext์๋ ๋ค๋ฅด๊ฒ ์ ๋๊ฒฝ๋ก ๋ฐ ์๋๊ฒฝ๋ก ๋ชจ๋ ์ง์ ๊ฐ๋ฅํ๋ค.
RequestDispatcher dispatcher = request.getRequestDispatcher("/login.do");
web.xml์ ์ง์ ํ ์๋ธ๋ฆฟ ์ด๋ฆ ๋๋ URL๊ฒฝ๋ก(์ ๋ ๊ฒฝ๋ก๋ก๋ง ๊ฐ๋ฅ)๋ก ์ป์ ์ ์๋ค.
๋์์ ์ง์ ํ RequestDispatcher ๊ฐ์ฒด๋ก forward, include ๋ฉ์๋๋ฅผ ์คํํ๋ฉด ํด๋น ์์(resource)์ผ๋ก ์์ฒญ์ ๋๊ธฐ๊ฒ ๋๋ค.