session的活化与钝化 (转)

session的活化与钝化就是当用户访问时网站异常,不能丢掉session,所有也必须采用文件存储;和之前那个统计网站访问量一样的原理。

class Person implements必须实现这两个接口,实现session活化和钝化的要求

活化:从硬盘上读取到内存中

纯化:从内存中写到硬盘上

HttpSessionActivationListener 
实现此接口的JavaBean,可以感知自己被活化(从硬盘到内存)和钝化(从内存到硬盘)的过程。

如果需要同时保存Session中的JavaBean则JavaBean也要实现Serializable序列化接口。

实现此接口的JavaBean与HttpSessionBindingListener一样,不必配置到web.xml中。

import java.io.Serializable;
    import javax.servlet.http.HttpSessionActivationListener;
    import javax.servlet.http.HttpSessionEvent;
    public class Person implements HttpSessionActivationListener,Serializable{
        private static final long serialVersionUID = 1L;
        private String name;
        public Person(String name) {
            this.name = name;
        }
        @Override
        public void sessionWillPassivate(HttpSessionEvent se) {
            System.out.println("一个Person对象保存到硬盘了...");
        }  

        @Override
        public void sessionDidActivate(HttpSessionEvent se) {
            System.out.println("一个Person对象从硬盘读取出来了...");
        }  

        @Override
        public String toString() {
            return "Person [name=" + name + "]";
        }
    }  

这个实现之后都不算什么,还需要配置文件。

配置文件可以写在tomcat的目录里面conf---》server.xml里面配置,但是里面配置会修改平台,

所以不建议使用。另一种方法:我们在conf----》Catalina------》localhost------》自定义一个xml文件,里面内容:

<Context path="/sessionActivation" docBase="E:/MyEclipse10_workspace/sessionActivation/WebRoot">  

  <Manager className="org.apache.catalina.session.PersistentManager"
    saveOnRestart="true" maxActiveSessions="1">
     <Store className="org.apache.catalina.session.FileStore" directory="d:/a">
     </Store>
  </Manager>  

</Context>  

<!--  以下是对上面的解释    -->
<!-- path为项目的目录   docbase 为myeclipse目录
    className   不能变
    saveOnRestart ="true"  能够进行存储
    maxActiveSessions="n"  n为最大的session数量  

--> 

这样就可以实现session的活化了。

自己总结:

服务器重启用户session信息保存和恢复(服务器维护需要)

httpsessionActivationlistener

活化(sessiondidactivate)和钝化sessionWillpassivate

public class person implements  httpsessionactivationlistener,serviliziable(可序列化,永久存储){

活化和钝化方法《主要的还是xml文件的配置》

}

WEB中监听者的类型:ServletContextListener(最大的)

HttpSessionListener(session创建能访问,销毁)(onlineweb)

活化和钝化需要配置tomcat服务器 (1,servce.xml---2,work catalina   自定义.xml文件)

配置路径---D:\javaSoft\apache-tomcat-7.0.30\conf\Catalina\localhost 需要写一个xml文件,

让服务器启动的时候读取或者配置server.xml(   <Host name="localhost"  appBase="webapps")改平台

自定义xml文件:(不用发布)sess.xml 老师写的

<context path="/项目名" docbase=" webroot右键+location《 E:\javaEcilpose\onlineWeb\WebRoot》">

<manager classname="org.apache.catalina.session.PersistentManager"   saveOnRestart="true"《是否保存》 maxActiveSessions="1" 《最大的session 》>

<Store className="org.apache.catalina.session.FileStore"《不能变化的》 directory="d:/a"《存储的路径》>

自定义xml文件结束

直接访问 8080/sess.xml直接访问

session需要活化或者钝化,主要是配置一下 sess.xml文件

时间: 2024-10-12 14:29:55

session的活化与钝化 (转)的相关文章

Session的序列化和反序列化 &amp;&amp; Session的活化和钝化

应用场景: 1.一般来说,服务器启动后,就不会再关闭了,但是如果逼不得已需要重启,而用户会话还在进行相应的操作,这时就需要使用序列化将session信息保存起来放在硬盘,服务器重启后,又重新加载.这样就保证了用户信息不会丢失,实现永久化保存 2.淘宝每年都会有定时抢购的活动,很多用户会提前登录等待,长时间不进行操作,一致保存在内存中,而到达指定时刻,几十万用户并发访问,就可能会有几十万个session,内存可能吃不消,这时就需要进行对象的活化.钝化,让其在闲置的时候离开内存,将信息保存至硬盘,等

Session的活化和钝化,表单重复提交,验证码使用流程

钝化 指将HttpSession对象序列化到硬盘中,一般钝化发生在服务器停止,服务器停止时会自动将HttpSession对象序列化到硬盘,这个事我们称为钝化. 活化 将硬盘中HttpSession对象加载进内存中,一般在服务器启动时,会自动将硬盘中HttpSession对象重新加载进内存,这一过程我们成为活化. 钝化指将内存中的对象写到硬盘中, 一个类要想可以序列化到硬盘中必须要实现java.io.Serializable接口 这个类中的所有属性也需要实现java.io.Serializable

黑马day14 监听器之javaBean对象的活化和钝化

javaBean对象的活化和钝化: 如果将一个属性如String类型的字符串放到session域中,或者一个Person类放到session域中,要想实现session的钝化和活化,则这个javaBean必须实现Serializable接口... 1.javaBean Person package cn.itheima.domain; import java.io.Serializable; import javax.servlet.http.HttpSessionActivationListe

会话控制cookie和session

Cookie Cookie简介 HTTP是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分中两次请求是否由一个客户端发出.这样的设计严重阻碍的Web程序的设计.如:在我们进行网购时,买了一条裤子,又买了一个手机.由于http协议是无状态的,如果不通过其他手段,服务器是不能知道用户到底买了什么.而Cookie就是解决方案之一. Cookie实际上就是服务器保存在浏览器上的一段信息.浏览器有了Cookie之后,每次向服务器发送请求时都会同时将该信息发送给服务器,服务器收到请求后,就

Session的引入以及Cookie的不足

一.为什么引入session > Cookie实际上就是一个头. > 服务器会创建Cookie,并且将Cookie以一个响应头的形式发送给浏览器        > 浏览器收到Cookie以后,会保存Cookie,并且每次访问服务器时都会以请求头的形式带着Cookie        > 服务器就可以根据浏览器带着的Cookie来识别不同的用户. > Cookie的不足:        - Cookie是纯文本的,使用起来不安全.       - 浏览器每次访问服务器都需要带着C

会话控制——Cookie和Session

Cookie简介 l  HTTP是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分中两次请求是否由一个客户端发出.这样的设计严重阻碍的Web程序的设计.如:在我们进行网购时,买了一条裤子,又买了一个手机.由于http协议是无状态的,如果不通过其他手段,服务器是不能知道用户到底买了什么.而Cookie就是解决方案之一. l  Cookie实际上就是服务器保存在浏览器上的一段信息.浏览器有了Cookie之后,每次向服务器发送请求时都会同时将该信息发送给服务器,服务器收到请求后,就可

Listener随笔

[1]监听器简介   > Listener是JavaWeb中三大组件之一.Servlet.Filter.Listener   > 三大组件都有的共同特点,都需要实现一个接口,并在web.xml文件配置.    监听器:朝阳群众    监听对象:明星    监听的事件:干坏事    调用方法:报警     > JavaWeb中的监听器的监听对象是谁?    ServletContext    HttpSession    ServletRequest [2]监听器分类    > Ja

Listener监听器与Filter过滤器

1.Listener [1]监听器简介 > Listener是JavaWeb的三大组件之一,Servlet.Filter.Listener > Listener翻译过来就是监听器 > 现实生活中的监听器: - 监听谁:明星 - 监听器:朝阳群众 - 监听事件:干坏事 - 回调函数:报警 > JavaWeb中的监听器: - 监听谁:ServletContext.HttpSession.ServletRequest - 监听器:自己写 - 监听的事件:生命周期.属性的变化 - 回调函数

servlet-显示器

1.什么是监听器 监听器是实现一个特定的接口java规划,该计划的目的是还调用类方法监听器.java的awt大量使用该模式,如的能力button点击事件.当鼠标点击时,就会调用事件处理程序.又如:在javascript事件中也运用到了此种模式.当用户点击鼠标时.会触发一个鼠标点击事件去调用程序猿定义的事件处理程序.以下就以GUI编程来说明监听器.监听器都使用到了观察者模式,观察者模式所定义的对象间一对多的依赖关系,当一个对象的状态发生改变时,全部依赖他的对象都会得到通知自己主动更新. packa