-
์๋ธ๋ฆฟ(Servlet)์ด๋, ์๋ธ๋ฆฟ(Servlet)์ ์๋ช ์ฃผ๊ธฐ๊ฐ๋ฐ/JSP 2022. 5. 10. 00:32
๋ค์ํ ์น ํ๋ ์์ํฌ์ ์ถํ์ผ๋ก ์๋ธ๋ฆฟ์ ์ง์ ๊ฐ๋ฐํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ํ์น ์์ง๋ง, ์๋ฐ ์น ๊ฐ๋ฐ์๋ผ๋ฉด ์๋ธ๋ฆฟ์ด ๋ฌด์์ด๊ณ ์๋ธ๋ฆฟ์ ๋์ ๋ฐฉ์์ ์ดํดํ๋ ๊ฒ์ ํ์๋ค.
์ค๋์ ์๋ธ๋ฆฟ์ด ๋ฌด์์ธ์ง, ์๋ธ๋ฆฟ์ ์๋ช ์ฃผ๊ธฐ๋ ์ด๋ป๊ฒ ๋๋ ์ง์ ๋ํด ์์๋ณด์.
๐ก์๋ธ๋ฆฟ(Servlet)์ด๋?
JSP ํ์ค์ด ๋์ค๊ธฐ ์ ์ ๋ง๋ค์ด์ง ํ์ค์ด๋ค. ์๋ฐ๋ก ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์๋๋ก ํ๊ธฐ ์ํด ๋ง๋ค์ด์ก๋ค. ์๋ธ๋ฆฟ์ ์ด์ฉํ๋ฉด ์๋ฐ ํด๋์ค๋ฅผ ์ด์ฉํด์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๊ฒ ๋๋ค.
์๋ธ๋ฆฟ์ ๊ฐ๋ฐ ๊ณผ์
: ์๋ธ๋ฆฟ ๊ฐ๋ฐ ๊ณผ์ ์ JSP์ ๋น๊ตํ๋ฉด ๋ช ๊ฐ์ง ๊ณผ์ ์ด ๋ ๋ค์ด๊ฐ ๋ณต์กํ๋ฐ, ์ด๋ฐ ์ด์ ๋ก ์๋ธ๋ฆฟ๋ณด๋ค๋ JSP๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค. ํ์ง๋ง, MVCํจํด์ ์ง์ํ๋ ํ๋ ์์ํฌ๋ฅผ ๋ง๋ค์ด์ผ ํ๋ ๊ฒฝ์ฐ, ์๋ธ๋ฆฟ์ผ๋ก ๊ธฐ๋ฐ ์ฝ๋๋ฅผ ๊ฐ๋ฐํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์, ์๋ธ๋ฆฟ ์ฝ๋๋ฅผ ์ง์ ๊ตฌํํ์ง๋ ์๋๋ผ๋ ์น ๊ฐ๋ฐ์ ๋ฐฐ์ธ ๋ ์๋ธ๋ฆฟ ์์ฒด์ ๋ํด์ ์ดํดํ๋ ๊ฒ์ ์ค์ํ๋ค.
โ ์๋ธ๋ฆฟ ๊ท์ฝ์ ๋ฐ๋ผ ์๋ฐ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
โก ์๋ฐ ์ฝ๋๋ฅผ ์ปดํ์ผํด์ ํด๋์ค ํ์ผ์ ์์ฑํ๋ค.
โข ํด๋์ค ํ์ผ์ /WEB-INF/classes ํด๋์ ํจํค์ง์ ์๋ง๊ฒ ์์น์ํจ๋ค.
โฃ web.xml ํ์ผ์ ์๋ธ๋ฆฟ ํด๋์ค๋ฅผ ์ค์ ํ๋ค.
โค ํฐ์บฃ ๋ฑ์ ์ปจํ ์ด๋๋ฅผ ์คํํ๋ค.
โฅ ์น ๋ธ๋ผ์ฐ์ ์์ ํ์ธํ๋ค.๐๐ปโ๏ธ ์๋ธ๋ฆฟ ํด๋์ค์ ๊ตฌํ
์น์ ์ํ HTTP ์๋ธ๋ฆฟ์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด HttpServlet์ ์ฌ์ฉํ๋ฉด ๋๋ค. HttpServlet์ GenericServlet ํด๋์ค๋ฅผ ์์ํ๊ณ ์๋ค. GenericServlet์ Servlet์ ์์ํ๊ณ ์์ผ๋ฉฐ, ํ๋กํ ์ฝ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ฌ์ฉ๋ ์ ์๋ Servlet๊ตฌํ์ฒด๋ค. Oracle์์ ์ ๊ณตํ๋ docs์์๋ ๋ฐ๋ณตํด์ GenericServlet๋ณด๋ค HttpServlet์ ๋ ์ถ์ฒํ๋ ๊ฒ ๋๋์ธ๋ฐ, ๊ทธ๋งํผ HTTP Protocol์ ์ฌ์ฉํ๋ ์๋น์ค๊ฐ ๋๋ค์์ด๊ธฐ ๋๋ฌธ์ด๋ผ ์๊ฐํ๋ค.
GenericServlet์ ๊ธฐ์กด์ Servlet์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํ๋ ๊ฒ๋ณด๋ค ๋ ์ฝ๊ฒ ์์ฑํ์ฌ ์ฌ์ฉํ ์ ์๋๋ฐ, ๊ฐ๋จํ ๋ฒ์ ์ผ๋ก Lifecycle์ ๊ด๋ จ๋ init()๊ณผ destory() ๋ฉ์๋์ ServletConfig๋ฅผ ์ ๊ณตํ๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ํ ServletContext ๋ด๋ถ ๋ฉ์๋์ธ log ๋ํ ์ ๊ณตํ๊ณ ์๋ค.
๊ฒฐ๊ตญ GenericServlet๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ service() ๋ฉ์๋๋ง ๊ตฌํํ๋ฉด ๋๋ค.
package javax.servlet; ... public abstract class GenericServlet implements Servlet, ServletConfig, Serializable { ... private transient ServletConfig config; public GenericServlet() {} // ์์ฑ์๋ ์๋ฌด๊ฒ๋ ํ์ง ์๋๋ค public void destroy() {} // empty ... public void init(ServletConfig config) throws ServletException { this.config = config; this.init(); } public void init() throws ServletException { } public void log(String msg) { this.getServletContext().log(this.getServletName() + ": " + msg); } // ๊ธฐ์กด์ Servlet interface๋ฅผ ์์๋ฐ์๋ค๋ฉด ์ง์ ๊ตฌํํด์ผํ ๋ฉ์๋ init(), destroy() ๋ฑ์ ์ด๋ฏธ ๊ตฌํ๋์ด์๋ค public abstract void service(ServletRequest response, ServletResponse reqest) throws ServletException, IOException; // ์ฌ์ฉ์๋ serviceํจ์๋ง ๊ตฌํํ๋ฉด Servlet์ ์์ฑํ์ฌ ์ฌ์ฉํ ์ ์๋ค. // ๊ธฐ๋ฅ์ Servlet interface์ service() ์ ๊ฐ๋ค. ... }
[์ถ์ฒ : https://ckddn9496.tistory.com/48]
๐๐ปโ๏ธ ServletConfig ๊ฐ์ฒด๋ฅผ ์ด์ฉํ ์๋ธ๋ฆฟ ์ด๊ธฐํ ๋ฐฉ๋ฒ๊ณผ @WebServlet ๋ฅผ ์ด์ฉํ์ฌ ๊ฐ ๋๊ธฐ๋ ๋ฒ
ํ์ฌ ๊ธ์ ๊ฐ๋ ์ง๋ฌธ ์์ฃผ๋ก ์์ฑํ ๊ธ์ด๋ผ, ๊ธฐ์ด์ ์ธ ์ฌ์ฉ๋ฒ์ ์ ์ ๋ฆฌํ ๊ธ์ด ํ์ํ๋ค๋ฉด ์ด ๊ธ์ ์ฐธ๊ณ :)
https://dololak.tistory.com/47
๐ก์๋ธ๋ฆฟ์ ์๋ช ์ฃผ๊ธฐ(Servlet Life Cycle)
โ ์ฌ์ฉ์๋ก๋ถํฐ ํน์ ํ์ด์ง์ ๋ํ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์ปจํ ์ด๋๋ก ์์ฒญ ์ ๋ณด๊ฐ ์ ํด์ง๋ค
โก ์ปจํ ์ด๋๋ ๋ฐฐํฌ์์ ์(DD:Deployment Descriptor)์ ์๋ธ๋ฆฟ ๋งตํ ์ ๋ณด๋ฅผ ์ฐธ์กฐํ์ฌ ํด๋น ์๋ธ๋ฆฟ์ ํธ์ถํ๋ค.
โข ํธ์ถ๋ MyServlet์ด ๋ก๋ฉ > ์์ฑ ๋๋ค.
โฃ ์๋ธ๋ฆฟ์ด ์ด๊ธฐํ ๋๋ค.(์ต์ด ์์ฒญ์์๋ง ์คํ)
โค ์์ฒญ์ ๋ํ ๋ด์ฉ์ ์ฒ๋ฆฌํ๊ณ ์๋ตํด์ค๋ค.
โฅ ์๋ธ๋ฆฟ์ด ์๋ฉธ๋๋ค.(์๋น์ค ์ข ๋ฃ์ ์คํ)๐๐ปโ๏ธ ์๋ธ๋ฆฟ์ ์์ฑ ๋ฐ ์ฌ์ฌ์ฉ
: ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์ฒ์ ์๋ธ๋ฆฟ์ ์คํํ ๋ ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค. ์ดํ ์์ฒญ์ด ์ค๋ฉด ์์ ์์ฑํ ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ค. ๋ฐ๋ผ์ โก์์ ํด๋น ์๋ธ๋ฆฟ์ด ์กด์ฌํ๋์ง ์๋์ง (๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ด ์๋์ง ์๋์ง) ์ฌ๋ถ๋ฅผ ๋จผ์ ์ฒดํฌํ๊ณ , ์กด์ฌํ์ง ์๋๋ค๋ฉด โข์ผ๋ก ๋์ด๊ฐ๊ณ , ์กด์ฌํ๋ค๋ฉด ๋ฐ๋ก โค์ผ๋ก ๋์ด๊ฐ๊ฒ ๋๋ ๊ฒ์ด๋ค.
๐๐ปโ๏ธ ์๋ธ๋ฆฟ ๋ก๋ฉ ๊ณผ์ ์ด๋?
: ์น ์ปจํ ์ด๋๊ฐ ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , init() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ณผ์ ์ด๋ค. ์ด init() ๋ฉ์๋๋ฅผ ์ด์ฉํด์ ํ์ํ ์ด๊ธฐํ ์์ ์ ์ํํ๋ค.
//GenericServlet ๊ตฌํ public void init(ServletConfig config) throws ServletException { this.config = config; this.init(); } public void init() thjrows SeervletException { }
์์ ์ฝ๋๋ฅผ ๋ณด์. ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์๋ธ๋ฆฟ์ ์ด๊ธฐํํ๊ธฐ ์ํด ServletConfig ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ๋ init() ๋ฉ์๋๋ฅผ ์คํํ๋ค. ์ ์ฝ๋์์ ๋ณด๋ ๊ฒ์ฒ๋ผ init(ServletConfig) ๋ฉ์๋๋ ๋ค์ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ init() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค. ๋ฐ๋ผ์, ์ด๊ธฐํ๊ฐ ํ์ํ ์๋ธ๋ฆฟ์ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ init() ๋ฉ์๋๋ฅผ ์ฌ์ ์ ํ๋ฉด๋๋ค. (๋ฌผ๋ก , ServletConfig๊ฐ ํ์ํ๋ฉด ServletConfig๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๊ฐ๋ init() ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ๋ฉด ๋๋ค.)
๐๐ปโ๏ธ ์๋ธ๋ฆฟ์ service(request, response)
ํด๋น ์๋ธ๋ฆฟ์ด ์ฌ์ฉ์์๊ฒ ์๋น์คํ๊ธฐ ์ํด ์ ์, ํด๋ผ์ด์ธํธ ์์ฒญ์๋ง๋ค ํธ์ถ
: doGet() / doPost()์ ์ฐ๊ฒฐ
๐๐ปโ๏ธ ์๋ธ๋ฆฟ์ ์๋ฉธ
์๋ธ๋ฆฟ์ ์๋ฉธ์ ์๋น์ค๊ฐ ์ข ๋ฃ๋๋ ์์ ์ ์๋ธ๋ฆฟ ์ธ์คํด์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋๊ธฐ ์ ์ destroy() ๋ฉ์๋๊ฐ ์คํ๋๊ณ ์ข ๋ฃ๋๋ค.
'๊ฐ๋ฐ > JSP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JDBC ํต์ฌ ๊ฐ๋ ์ ๋ฆฌ (0) 2022.05.13