ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ์„œ๋ธ”๋ฆฟ(Servlet)์ด๋ž€, ์„œ๋ธ”๋ฆฟ(Servlet)์˜ ์ƒ๋ช…์ฃผ๊ธฐ
    ๊ฐœ๋ฐœ/JSP 2022. 5. 10. 00:32

     

     

     

    ๋‹ค์–‘ํ•œ ์›น ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ถœํ˜„์œผ๋กœ ์„œ๋ธ”๋ฆฟ์„ ์ง์ ‘ ๊ฐœ๋ฐœํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ํ”์น˜ ์•Š์ง€๋งŒ, ์ž๋ฐ” ์›น ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ์„œ๋ธ”๋ฆฟ์ด ๋ฌด์—‡์ด๊ณ  ์„œ๋ธ”๋ฆฟ์˜ ๋™์ž‘ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ํ•„์ˆ˜๋‹ค. 

     

    ์˜ค๋Š˜์€ ์„œ๋ธ”๋ฆฟ์ด ๋ฌด์—‡์ธ์ง€, ์„œ๋ธ”๋ฆฟ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋Š” ์–ด๋–ป๊ฒŒ ๋˜๋Š” ์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

     

     

    ๐Ÿ’ก์„œ๋ธ”๋ฆฟ(Servlet)์ด๋ž€?

    JSP ํ‘œ์ค€์ด ๋‚˜์˜ค๊ธฐ ์ „์— ๋งŒ๋“ค์–ด์ง„ ํ‘œ์ค€์ด๋‹ค. ์ž๋ฐ”๋กœ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ๋‹ค. ์„œ๋ธ”๋ฆฟ์„ ์ด์šฉํ•˜๋ฉด ์ž๋ฐ” ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•ด์„œ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋œ๋‹ค.

     

     

     

    ์„œ๋ธ”๋ฆฟ์˜ ๊ฐœ๋ฐœ ๊ณผ์ •

    : ์„œ๋ธ”๋ฆฟ ๊ฐœ๋ฐœ ๊ณผ์ •์€ JSP์™€ ๋น„๊ตํ•˜๋ฉด ๋ช‡ ๊ฐ€์ง€ ๊ณผ์ •์ด ๋” ๋“ค์–ด๊ฐ€ ๋ณต์žกํ•œ๋ฐ, ์ด๋Ÿฐ ์ด์œ ๋กœ ์„œ๋ธ”๋ฆฟ๋ณด๋‹ค๋Š” JSP๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ, MVCํŒจํ„ด์„ ์ง€์›ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๊ธฐ๋ฐ˜ ์ฝ”๋“œ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์—, ์„œ๋ธ”๋ฆฟ ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜์ง€๋Š” ์•Š๋”๋ผ๋„ ์›น ๊ฐœ๋ฐœ์„ ๋ฐฐ์šธ ๋–„ ์„œ๋ธ”๋ฆฟ ์ž์ฒด์— ๋Œ€ํ•ด์„œ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•˜๋‹ค.

    โ‘  ์„œ๋ธ”๋ฆฟ ๊ทœ์•ฝ์— ๋”ฐ๋ผ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.
    โ‘ก ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•ด์„œ ํด๋ž˜์Šค ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค.
    โ‘ข ํด๋ž˜์Šค ํŒŒ์ผ์„ /WEB-INF/classes ํด๋”์— ํŒจํ‚ค์ง€์— ์•Œ๋งž๊ฒŒ ์œ„์น˜์‹œํ‚จ๋‹ค.
    โ‘ฃ web.xml ํŒŒ์ผ์— ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค๋ฅผ ์„ค์ •ํ•œ๋‹ค.
    โ‘ค ํ†ฐ์บฃ ๋“ฑ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
    โ‘ฅ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ™•์ธํ•œ๋‹ค.

     

     

     

    ๐Ÿ™‹๐Ÿป‍โ™€๏ธ ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค์˜ ๊ตฌํ˜„

    ์„œ๋ธ”๋ฆฟ ์ƒ์†๋„ [์ถœ์ฒ˜ : https://dololak.tistory.com/47]

     

     

    ์›น์„ ์œ„ํ•œ 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
     

    [์„œ๋ธ”๋ฆฟ/JSP] ์„œ๋ธ”๋ฆฟ์˜ ์ดˆ๊ธฐํ™” ๊ณผ์ • ๋ฐ ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•

    ์„œ๋ธ”๋ฆฟ์˜ ์ดˆ๊ธฐํ™” ์„œ๋ธ”๋ฆฟ์€ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์ตœ์ดˆ ์š”์ฒญ์‹œ ๋‹จ ํ•œ๋ฒˆ ์ดˆ๊ธฐํ™”๋˜๋ฉฐ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. WAS ๋‚ด๋ถ€์˜ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด ์ƒ์„ฑ ํ›„ ์ดˆ๊ธฐํ™”์‹œ์— init()๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š”๋ฐ ์ด ๊ณผ์ •

    dololak.tistory.com

     

     

     

    ๐Ÿ’ก์„œ๋ธ”๋ฆฟ์˜ ์ƒ๋ช…์ฃผ๊ธฐ(Servlet Life Cycle)

    ์„œ๋ธ”๋ฆฟ์˜ ์ƒ๋ช…์ฃผ๊ธฐ [์ถœ์ฒ˜ : https://myblog.opendocs.co.kr/archives/438]

     

     

    โ‘  ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ํŠน์ • ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์ปจํ…Œ์ด๋„ˆ๋กœ ์š”์ฒญ ์ •๋ณด๊ฐ€ ์ „ํ•ด์ง„๋‹ค
    โ‘ก ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ฐฐํฌ์„œ์ˆ ์ž(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

    ๋Œ“๊ธ€

Designed by Tistory.