file : counterservice.java
package com.h3.common; public class counterservice{ public void printcounter(int count){ system.out.println("total session created : " + count); } }
file : counter.xml – bean配置文件
<?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="counterservice" class="com.h3.common.counterservice" /> </beans>
file : sessioncounterlistener.java
package com.h3.common; import javax.servlet.http.httpsession; import javax.servlet.http.httpsessionevent; import javax.servlet.http.httpsessionlistener; import org.springframework.context.applicationcontext; import org.springframework.web.context.support.webapplicationcontextutils; public class sessioncounterlistener implements httpsessionlistener { private static int totalactivesessions; public static int gettotalactivesession(){ return totalactivesessions; } @override public void sessioncreated(httpsessionevent arg0) { totalactivesessions++; system.out.println("sessioncreated - add one session into counter"); printcounter(arg0); } @override public void sessiondestroyed(httpsessionevent arg0) { totalactivesessions--; system.out.println("sessiondestroyed - deduct one session from counter"); printcounter(arg0); } private void printcounter(httpsessionevent sessionevent){ httpsession session = sessionevent.getsession(); applicationcontext ctx = webapplicationcontextutils. getwebapplicationcontext(session.getservletcontext()); counterservice counterservice = (counterservice) ctx.getbean("counterservice"); counterservice.printcounter(totalactivesessions); } }
file : web.xml
<!doctype web-app public "-//sun microsystems, inc.//dtd web application 2.3//en" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>archetype created web application</display-name> <context-param> <param-name>contextconfiglocation</param-name> <param-value>/web-inf/spring/counter.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.contextloaderlistener </listener-class> </listener> <listener> <listener-class> com.h3.common.sessioncounterlistener </listener-class> </listener> <servlet> <servlet-name>spring di servlet listener</servlet-name> <servlet-class>com.h3.common.app</servlet-class> </servlet> <servlet-mapping> <servlet-name>spring di servlet listener</servlet-name> <url-pattern>/demo</url-pattern> </servlet-mapping> </web-app>
file : app.java
package com.h3.common; import java.io.ioexception; import java.io.printwriter; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import javax.servlet.http.httpsession; public class app extends httpservlet{ public void doget(httpservletrequest request, httpservletresponse response) throws ioexception{ httpsession session = request.getsession(); //sessioncreated() is executed session.setattribute("url", "h3.com"); session.invalidate(); //sessiondestroyed() is executed printwriter out = response.getwriter(); out.println("<html>"); out.println("<body>"); out.println("<h1>spring dependency injection into servlet listenner</h1>"); out.println("</body>"); out.println("</html>"); } }
启动tomcat,并访问 url “http://localhost:8080/7.2-springdemo/"
输出结果
sessioncreated - add one session into counter total session created : 1 sessiondestroyed - deduct one session from counter total session created : 0