與session中的繫結的物件相關的監聽器(物件感知監聽器)
阿新 • • 發佈:2018-12-17
當用戶很多的時候,怎麼對伺服器進行優化?
這裡介紹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