1. 程式人生 > >與session中的繫結的物件相關的監聽器(物件感知監聽器)

與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