与session中的绑定的对象相关的监听器(对象感知监听器)

当用户很多的时候,怎么对服务器进行优化?

这里介绍session的钝化与活化!

钝化状态:是将session内存中的对象持久化(序列化)到磁盘

活化状态:就是将磁盘上的对象再次恢复到session内存中

 

Customer实体类

实现 HttpSessionActivationListener,Serializable

关于实现Serializable接口 :当对象被序列化到磁盘中的时候需要实现此接口

package domain;

import java.io.Serializable;

import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionEvent;

public class Customer implements HttpSessionActivationListener,Serializable{

	private int id;
	private String username;
	private String password;
	private String realname;
	private String birthday;
	private String email;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getRealname() {
		return realname;
	}
	public void setRealname(String realname) {
		this.realname = realname;
	}
	public String getBirthday() {
		return birthday;
	}
	public void setBirthday(String birthday) {
		this.birthday = birthday;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	@Override
	public String toString() {
		return "Customer [id=" + id + ", username=" + username + ", password=" + password + ", realname=" + realname
				+ ", birthday=" + birthday + ", email=" + email + "]";
	}
	@Override
	public void sessionDidActivate(HttpSessionEvent arg0) {
		System.out.println("活化。。。。");
	}
	@Override
	public void sessionWillPassivate(HttpSessionEvent arg0) {
		System.out.println("钝化....");
	}
	
	
	
}

 

servlet :Active1

HttpSession session = request.getSession();
Customer c =(Customer) session.getAttribute("customer");
System.out.println(c.toString());

 servlet :Active2

HttpSession session = request.getSession();
Customer customer = new Customer();
customer.setBirthday("2018-02-26");
customer.setEmail("[email protected]");
customer.setPassword("123");
customer.setRealname("jack");
customer.setUsername("jack123");
session.setAttribute("customer", customer);
System.out.println("set OK");

context.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context>
	<!-- maxIdleSwap:session中的对象多长时间不使用就钝化 -->
	<!-- directory:钝化后的对象的文件写到磁盘的哪个目录下 配置钝化的对象文件在 work/catalina/localhost/钝化文件 -->
	<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
		<Store className="org.apache.catalina.session.FileStore" directory="jack" />
	</Manager>
</Context>

1.启动tomcat   访问Avtive1  然后关闭tomcat


查看此文件夹,发现 设置的jack文件夹

 此时开启tomcat   访问Active2

猜你喜欢

转载自blog.csdn.net/qq_41566772/article/details/84992670
今日推荐