ÃֽŠ°Ô½Ã±Û(JAVA)
2017.06.03 / 15:44

[spring] ÀÎÅͼÁÅÍ ¿Í ÇÊÅÍ

±Ý±Ý±Ý
Ãßõ ¼ö 276
½ºÇÁ¸µ¿¡¼­ ÀüÈÄ󸮱â(?)¸¦ ´ã´çÇÏ´Â
ÀÎÅͼÁÅÍ¿Í ÇÊÅͶó´Â°Ô ÀÖ´Ù. 

µÑ´Ù ¾Ë°í °è½Å ÈǸ¢ÇÑ °³¹ßÀÚ ºÐµéµµ ¸¹À¸½Ã°ÚÁö¸¸ ¤» 

º»ÀÎó·³ ÀÎÅͼÁÅ͸¸ ¾Ë°í ÀÖ´Â °æ¿ì¿¡´Â 
°¡º±°Ô¶óµµ ÇÊÅÍ¿¡ ´ëÇؼ­ ¾Ë¾ÆµÎ½Ã¶ó°í ¸îÀÚ Àû¾î º»´Ù. ¤¾ 


»ç½Ç ±â´É¸¸ º¸¸é ÀÎÅͼÁÅÍ¿Í ÇÊÅʹ 
¹«Ã´ ºñ½ÁÇØ º¸ÀδÙ. 

°Ô´Ù°¡ filter·Î ÇØ¾ß µÇ´Â ÀϵéÀº 
»ç½Ç interceptor·Î ÇØ°áÇÒ ¼ö ÀÖ´Â µí ÇÏ´Ù. 
(Àû¾îµµ º»ÀÎÀÌ ÇÏ°í ÀÖ´Â ÇÁ·ÎÁ§Æ®¿¡¼­´Â.. ¤»)


±¸±Û â¿¡´Ù°¡ 
'difference interceptor and filter'
ÀÇ °Ë»ö°á°ú°¡ ¿©·¯ÆäÀÌÁö ³ª¿À´Â °É º¸¸é
¸¹Àº »ç¶÷µéÀÌ ±Ã±ÝÇØ Çϴ°Ԡ
´Ù ÀÌ·¯ÇÑ ÀÌÀ¯ÀÎ°Í °°´Ù. 



º»·ÐÀ¸·Î µé¾î°¡¼­ 

¿ì¼± ÀÎÅͼÁÅÍ ¼³Á¤ÆÄÀÏÀ» º¸¸é 

     <mvc:interceptors>
        <mvc:interceptor>
           <mvc:mapping path="/api1/*" />  
           <mvc:mapping path="/api2/*" />  
           <mvc:mapping path="/api3/*" />  
           <bean class="com.changpd.test.interceptor.ÀÎÅͼÁÅÍŬ·¡½º" />
         </mvc:interceptor>
    </mvc:interceptors>


º¸Åë ÀÌ·±½ÄÀ¸·Î ¼±¾ð µÇ¾îÀÖÀ»µí ÇÏ´Ù. 
Çؼ®Àº api1,2,3 È£ÃâµÇ±âÀü¿¡ ÀÎÅͼÁÅÍŬ·¡½º¸¦ ¸ÕÀú È£ÃâÇÏ°Ú´Ù. 
¹¹ ÀÌ·±¶æÀÌ´Ù. 


À̹ø¿£ ÇÊÅÍ ºÎºÐ ¼³Á¤ ÆÄÀÏÀ» º¸¸é

    <filter>
        <filter-name>ÇÊÅÍÀ̸§</filter-name>
        <filter-class>com.changpd.test.filter.ÇÊÅÍŬ·¡½º</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>ÇÊÅÍÀ̸§</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


À̰͵µ Çؼ®Çغ¸¸é
¾î¶²°Ô È£ÃâµÇµçÁö°£¿¡ (/*) 'ÇÊÅÍÀ̸§' ºÎÅÍ ¸ÕÀú È£ÃâÇÏ°Ú´Ù. 


¿ª½Ã³ª ºñ½ÁÇØ º¸ÀδÙ. 
ÀÎÅͼÁÅͳª ÇÊÅͳª, 
api1,2,3ÀÌ È£ÃâµÇ¸é 
°¢°¢ ÀÚ½ÅÀÌ 
ÀüÈÄ󸮱⿪ÇÒÀ» ¼öÇàÇÏ·Á´Â ÀǵµÀÌ´Ù. 




Â÷ÀÌÁ¡ 

±×·³ ´ëü ¹¹°¡ ´Ù¸£³Ä¸é
½ºÇÁ¸µ¿¡¼­ reqeust°¡ ¾î¶»°Ô Èê·¯´Ù´Ï´ÂÁö°¡ ³ª¿ÍÀִ ¾Æ·¡ ±×¸²À» º¸¸é Á» ÀÌÇØ°¡ ÇÑ°á ¼ö¿ùÇØÁø´Ù. 





ÀÏ´Ü È£ÃâµÇ´Â ½ÃÁ¡ÀÌ ´Ù¸£´Ù. 

º¸Åë ÀÎÅͼÁÅͳª ÇÊÅͳª 
ÄÁÆ®·Ñ·¯ µé¾î°¡±âÀü¿¡ ÀÛ¾÷À» ó¸® Çϱâ À§ÇØ »ç¿ëÇϹǷΠ
º°¹Ý Â÷ÀÌ ¾ø¾î º¸ÀÏ ¼ö ÀÖÀ¸³ª 
À§ÀÇ ¶óÀÌÇÁ»çÀÌŬ ±×¸²À» º¸¸é 
È£ÃâµÇ´Â ½ÃÁ¡ÀÌ ´Ù¸£´Ù´Â°É ¾Ë ¼ö ÀÖ´Ù.  


»ç¼ÒÇÏÁö¸¸,
ÇÊÅÍÀÇ °æ¿ì´Â ÀÎÅͼÁÅÍ¿Í ´Ù¸£°Ô ¼³Á¤ Á¤º¸¸¦ web.xml¿¡ ÀÛ¼ºÇÑ´Ù.


±×¸®°í ¸¶Áö¸·À¸·Î´Â 
¸â¹öÇÔ¼öÀÇ ¿ëµµ°¡ ´Ù¸£´Ù. 

ÀÎÅͼÁÅÍ.

preHandle() : ÄÁÆ®·Ñ·¯ µé¾î°¡±â Àü
postHanle() : ÄÁÆ®·Ñ·¯ µé¾î°¬´Ù ³ª¿ÂÈÄ ºä·Î º¸³»±âÀü
afterCompletion() : ºä±îÁö ³¡³ª°í ³ª¼­


ÇÊÅÍ.
 - init() : ÇÊÅÍ ÀνºÅϽº ÃʱâÈ­
 - doFilter() : Àü/ÈÄ Ã³¸®
 - destroy() : ÇÊÅÍ ÀνºÅϽº Á¾·á


doFilter ÇÔ¼ö´Â º¸Åë ¾Æ·¡Ã³·³ ÀÛ¼ºµÈ´Ù. 

 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        // Àü ó¸®   
        chain.doFilter(request, response);
        // ÈÄ Ã³¸®
    }

ÇÊÅÍ´Â doFilter ÇÔ¼ö¿¡¼­ ÀüÈÄ󸮸¦ ¸ðµÎ ´ã´çÇϴµ¥
doFilter°¡ ¿äûÀü°ú ÈÄ, 
µÎ¹ø È£ÃâµÇ´Â ¹æ½ÄÀÌ´Ù. 


°³ÀÎÀûÀ¸·Î Á¤¸®ÇØ º¸¸é 
ÀÎÅͼÁÅÍ¿Í ÇÊÅÍÀÇ ±â´ÉÀº ºñ½ÁÇÏÁö¸¸,

ÇÊÅÍÀÇ °æ¿ì 
È£Ãâ½ÃÁ¡ÀÌ ÀÚÀ¯·ÓÁö ¸øÇÏ´Ù º¸´Ï 
»ç¿ë¼º¿¡¼­´Â ºÐ¸í ÀÎÅͼÁÅͺ¸´Ù ¶³¾îÁö´Â ºÎºÐÀÌ ÀÖÀ» µíÇÏ´Ù.