本文共 1240 字,大约阅读时间需要 4 分钟。
可以使用cookie在服务器和客户之间交换名/值String对
服务器把cookie发送给客户,客户再在以后的每个请求中把cookie发回。客户的浏览器退出时,会话cookie就会消失,但是你可以告诉cookie在客户端上待得更久一些,甚至在 浏览器关闭之后 还持久保存。
要知道 cookie构造函数- getMaxAge()及setMaxAge()方法。对于首部既有setHeader()方法,又有addHeader()方法(如果已经有这个首部,addHeader会向这个现有的首部增加一个值, 而setHeader会替换现有的值) 但是不存在setCookie()方法。 只有一个addCookie()方法
看看 具体的会话迁移
实现Serializable的类还可以实现一个wrtieObject()方法,逆串行化对象时就由VM调用这个方法,另外还有可以实现一个readObject()方法,这个方法在对象串行化时调用Serializalbe对象可以使用这个方法来做一些事情,比如,在串行化期间把非Serializable的字段设置为null(writeObject()),然后在逆串行化期间再恢复这些字段(readObject())。
但是 在会话迁移中 一定会调用这些方法 所以,如果你想保存和恢复属性中的实例变量状态,可以使用HttpSessionActivationListener,并使用两个事件回调方法(sessionDidActivate()和sessionWillPassivate()),就像使用redadObject()和writeObject()一样
import javax.servlet.http.*;
public class SessionCounter implements HttpSessionListener{
static priate int activeSessions;
public static int getActiveSessions() { // 这个类回想所有其他WEB-app类一样 部署在 WEB-INF/classes中, 这样所有 servlet和其他辅助类都能访问这个方法。
return activeSeesions;
}public void sessionCtreated(HttpSessionEvent event){ // 取一个HttpSessionEvent参数
activeSeesions++;
}
public void seesionDestroyed(httpSessionEvent event){ // 取一个HttpSessionEvent参数
activeSeesions--;
}
}
——————————————————————————————————————————
HttpSession.getAttribute(String)的返回类型是Object
转载地址:http://wsesi.baihongyu.com/