欢迎来到天天文库
浏览记录
ID:46949467
大小:359.50 KB
页数:31页
时间:2019-12-01
《《ession管理器》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Session管理器贝毅君浙江大学软件学院Session管理Session对象StandardSessionSession管理器Manager接口存储器示例应用程序Session管理Catalina通过一个称为Session管理器的组件来管理建立的Session对象。Session管理器必须与一个Context容器相关联。Session管理器负责创建、更新、销毁Session对象Servlet编程方面中,Session对象由javax.servlet.http.HttpSession接口表示。在Catal
2、ina中,Session接口的标准实现是org.apache.catalina.session.StandardSession类,该类同时实现了HttpSession接口以及Tomcat自定义Session接口。StandardSessionFacade是StandardSession的外观类,Servlet实例使用外观类替代标准实现。Session对象Session对象StandardSessionStandardSession是session接口的标准实现。Session接口详情请参照书本p127页S
3、tandardSession除了实现HttpSession接口以及Session接口以外,还实现了Serializable接口。StandardSession的构造函数需要接受Manager实例PublicStandardSession(Managermanager);StandardSession的getSession()方法通过传入自身实例来构造并返回外观类PublicHttpSessiongetSession(){if(facade==null)facade=newStandardSessionFa
4、ccde(this);returnfacade;}StandardSession–expire()Session管理器中的某个Session对象在maxInactiveInterval时间长度内都没有被访问的话,会被设置为过期。通过调用expire()方法来过期Sessionpublicvoidexpire(booleannotify){//过期操作标示位,代表正在执行过期操作if(expiring)return;expiring=true;setValid(false);//从session管理器中移除
5、要过期的sessionif(manager!=null)manager.remove(this);//移除session绑定的所有属性值Stringkeys[]=keys();for(inti=0;i6、AssumeswecalllistenersinreverseorderContextcontext=(Context)manager.getContainer();Objectlisteners[]=context.getApplicationListeners();if(notify&&(listeners!=null)){HttpSessionEventevent=newHttpSessionEvent(getSession());for(inti=0;i7、{intj=(listeners.length-1)-i;if(!(listeners[j]instanceofHttpSessionListener))continue;HttpSessionListenerlistener=(HttpSessionListener)listeners[j];区分servlet中session监听器的作用1.HttpSessionListener2.HttpSessionBindingListener3.HttpSessionAttributeListenertry{f8、ireContainerEvent(context,"beforeSessionDestroyed",listener);listener.sessionDestroyed(event);fireContainerEvent(context,"afterSessionDestroyed",listener);}catch(Throwablet){try{fireContainerEvent(context,"afterSess
6、AssumeswecalllistenersinreverseorderContextcontext=(Context)manager.getContainer();Objectlisteners[]=context.getApplicationListeners();if(notify&&(listeners!=null)){HttpSessionEventevent=newHttpSessionEvent(getSession());for(inti=0;i7、{intj=(listeners.length-1)-i;if(!(listeners[j]instanceofHttpSessionListener))continue;HttpSessionListenerlistener=(HttpSessionListener)listeners[j];区分servlet中session监听器的作用1.HttpSessionListener2.HttpSessionBindingListener3.HttpSessionAttributeListenertry{f8、ireContainerEvent(context,"beforeSessionDestroyed",listener);listener.sessionDestroyed(event);fireContainerEvent(context,"afterSessionDestroyed",listener);}catch(Throwablet){try{fireContainerEvent(context,"afterSess
7、{intj=(listeners.length-1)-i;if(!(listeners[j]instanceofHttpSessionListener))continue;HttpSessionListenerlistener=(HttpSessionListener)listeners[j];区分servlet中session监听器的作用1.HttpSessionListener2.HttpSessionBindingListener3.HttpSessionAttributeListenertry{f
8、ireContainerEvent(context,"beforeSessionDestroyed",listener);listener.sessionDestroyed(event);fireContainerEvent(context,"afterSessionDestroyed",listener);}catch(Throwablet){try{fireContainerEvent(context,"afterSess
此文档下载收益归作者所有