HttpSessionListener接口監(jiān)聽Session的創(chuàng)建和失效
spring 使用 shiro 后育勺,由于shiro重新封裝了原有的session,所以不能再使用原來的session監(jiān)聽方法了
- 配置監(jiān)聽類
<!-- Shiro's main business-tier object for web-enabled applications -->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="shiroDbRealm" />
<property name="cacheManager" ref="shiroEhcacheManager" />
<property name="sessionManager" ref="sessionManager" /> <!-- 配置sessionListener -->
</bean>
<!-- 自定義session監(jiān)聽器 -->
<bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
<property name="sessionListeners" ref="sessionListener1" />
</bean>
<bean id="sessionListener1" class="org.springside.examples.quickstart.service.sessionservice.SessionListener1"></bean>
- 在shiro的配置文件中添加啟動監(jiān)聽類的入口
import org.apache.shiro.session.Session;
import org.apache.shiro.session.SessionListener;
public class SessionListener1 implements SessionListener {
@Override
public void onStart(Session session) {//會話創(chuàng)建觸發(fā) 已進入shiro的過濾連就觸發(fā)這個方法
// TODO Auto-generated method stub
System.out.println("會話創(chuàng)建:" + session.getId());
}
@Override
public void onStop(Session session) {//退出
// TODO Auto-generated method stub
System.out.println("退出會話:" + session.getId());
}
@Override
public void onExpiration(Session session) {//會話過期時觸發(fā)
// TODO Auto-generated method stub
System.out.println("會話過期:" + session.getId());
}
}
如果只想監(jiān)聽某一個事件植影,可以繼承SessionListenerAdapter實現(xiàn)
public class MySessionListener extends SessionListenerAdapter {
@Override
public void onStart(Session session) {
System.out.println("會話創(chuàng)建:" + session.getId());
}
}