Search

๋ฆฌ์Šค๋„ˆ (Listener)

๋ฆฌ์Šค๋„ˆ๋Š” ์ด๋ฒคํŠธ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ์‹œ์ž ์—ญํ• ์„ ํ•˜๋ฉฐ, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋‚˜ ์ƒํƒœ ๋ณ€ํ™”์— ์ž๋™์œผ๋กœ ๋ฐ˜์‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค.

Listener๋ž€?

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์—์„œ ๋ฐœ์ƒํ•˜๋Š” ํŠน์ • ์ด๋ฒคํŠธ ์— ๋Œ€ํ•ด ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.
โ€ข
์ด๋ฒคํŠธ (์˜ˆ: ์„ธ์…˜ ์ƒ์„ฑ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์ž‘ ๋“ฑ)
๋ฆฌ์Šค๋„ˆ๋Š” ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ(Tomcat ๋“ฑ)๊ฐ€ ์ž๋™์œผ๋กœ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ํ˜ธ์ถœํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

์ฃผ์š” Listener ์ข…๋ฅ˜

Listener ์ธํ„ฐํŽ˜์ด์Šค
๊ฐ์ง€ ๋Œ€์ƒ (์ด๋ฒคํŠธ)
์ฃผ ์‚ฌ์šฉ ๋ชฉ์ 
ServletContextListener
์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์ž‘/์ข…๋ฃŒ
์ดˆ๊ธฐ ์„ค์ •, ๋ฆฌ์†Œ์Šค ์ •๋ฆฌ ๋“ฑ
HttpSessionListener
์„ธ์…˜ ์ƒ์„ฑ/์ข…๋ฃŒ
๋กœ๊ทธ์ธ ์ถ”์ , ์„ธ์…˜ ์ˆ˜ ๊ด€๋ฆฌ
ServletRequestListener
์š”์ฒญ ์‹œ์ž‘/์ข…๋ฃŒ
์š”์ฒญ ์‹œ๊ฐ„ ์ธก์ •, ๋กœ๊น… ๋“ฑ
HttpSessionAttributeListener
์„ธ์…˜ ์†์„ฑ ๋ณ€๊ฒฝ
๋กœ๊ทธ์ธ ์ •๋ณด ์ถ”์  ๋“ฑ
ServletContextAttributeListener
์ปจํ…์ŠคํŠธ ์†์„ฑ ๋ณ€๊ฒฝ
์ „์—ญ ์„ค์ • ๋ณ€๊ฒฝ ๊ฐ์‹œ
ServletRequestAttributeListener
์š”์ฒญ ์†์„ฑ ๋ณ€๊ฒฝ
๋””๋ฒ„๊น…, ๋กœ๊น… ๋“ฑ

1. ServletContextListener

์—ญํ• :

โ€ข
์›น ์•ฑ ์‹œ์ž‘/์ข…๋ฃŒ ์‹œ์ ์— ๋™์ž‘

์ฝ”๋“œ ์˜ˆ์‹œ:

@WebListener public class AppStartListener implements ServletContextListener { public void contextInitialized(ServletContextEvent sce) { System.out.println("๐ŸŒ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์ž‘๋จ"); } public void contextDestroyed(ServletContextEvent sce) { System.out.println("๐Ÿ›‘ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ข…๋ฃŒ๋จ"); } }
Java
๋ณต์‚ฌ

2. HttpSessionListener

์—ญํ• :

โ€ข
์„ธ์…˜ ์ƒ์„ฑ/์ข…๋ฃŒ ๊ฐ์ง€ (๋กœ๊ทธ์ธ ์ƒํƒœ ๋“ฑ ์ถ”์ )

์ฝ”๋“œ ์˜ˆ์‹œ:

@WebListener public class SessionTracker implements HttpSessionListener { public void sessionCreated(HttpSessionEvent se) { System.out.println("๐ŸŸข ์„ธ์…˜ ์ƒ์„ฑ๋จ: " + se.getSession().getId()); } public void sessionDestroyed(HttpSessionEvent se) { System.out.println("๐Ÿ”ด ์„ธ์…˜ ์ข…๋ฃŒ๋จ: " + se.getSession().getId()); } }
Java
๋ณต์‚ฌ

3. ServletRequestListener

์—ญํ• :

โ€ข
HTTP ์š”์ฒญ์˜ ์‹œ์ž‘/์ข…๋ฃŒ ๊ฐ์ง€

์ฝ”๋“œ ์˜ˆ์‹œ:

@WebListener public class RequestLogger implements ServletRequestListener { public void requestInitialized(ServletRequestEvent sre) { System.out.println("โžก๏ธ ์š”์ฒญ ์‹œ์ž‘๋จ: " + ((HttpServletRequest) sre.getServletRequest()).getRequestURI()); } public void requestDestroyed(ServletRequestEvent sre) { System.out.println("โฌ…๏ธ ์š”์ฒญ ์ข…๋ฃŒ๋จ"); } }
Java
๋ณต์‚ฌ

๋ฆฌ์Šค๋„ˆ ๋“ฑ๋ก ๋ฐฉ๋ฒ•

1.
์–ด๋…ธํ…Œ์ด์…˜ ์‚ฌ์šฉ (@WebListener) โ†’ ์ตœ์‹  ๋ฐฉ์‹
2.
web.xml์— ๋“ฑ๋ก โ†’ ์ „ํ†ต ๋ฐฉ์‹
<!-- web.xml ๋ฐฉ์‹ ์˜ˆ์‹œ --> <listener> <listener-class>com.example.MyListener</listener-class> </listener>
XML
๋ณต์‚ฌ

์‚ฌ์šฉ ์˜ˆ

์‹œ๋‚˜๋ฆฌ์˜ค
ํ™œ์šฉํ•  ๋ฆฌ์Šค๋„ˆ
์›น ์•ฑ ์‹œ์ž‘ ์‹œ DB ์—ฐ๊ฒฐ ํ’€ ์ƒ์„ฑ
ServletContextListener
์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ ์ˆ˜ ์นด์šดํŒ…
HttpSessionListener
์š”์ฒญ ๋กœ๊ทธ ๊ธฐ๋ก
ServletRequestListener
๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž ์ •๋ณด ์ถ”์ 
HttpSessionAttributeListener
์ „์—ญ ์„ค์ • ๋ณ€๊ฒฝ ๊ฐ์‹œ
ServletContextAttributeListener

์ •๋ฆฌ

๋ฆฌ์Šค๋„ˆ ์ข…๋ฅ˜
๊ฐ์ง€ ์‹œ์ 
ServletContextListener
์›น ์•ฑ ์‹œ์ž‘/์ข…๋ฃŒ
HttpSessionListener
์„ธ์…˜ ์ƒ์„ฑ/์ข…๋ฃŒ
ServletRequestListener
์š”์ฒญ ์‹œ์ž‘/์ข…๋ฃŒ
์†์„ฑ ๊ด€๋ จ ๋ฆฌ์Šค๋„ˆ๋“ค
์†์„ฑ ์ถ”๊ฐ€/๋ณ€๊ฒฝ/์‚ญ์ œ ์‹œ์ 