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