web.xml里设置session失效时间:
<!-- session 失效时间 -->
<session-config>
<session-timeout>1</session-timeout> <!-- in minutes -->
</session-config>
监听session:
package com.fileupdown;
import java.util.ArrayList;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import com.common.webdatagrid.SystemDatagridCheckDaoImpl;
import com.common.webdatagrid.WebDataGridJson;
import com.importAndExport.Export.DeleteFile;
public class SessionListener implements HttpSessionListener,
HttpSessionAttributeListener {
// 参数
ServletContext sc;
ArrayList list = new ArrayList();
// 新建一个session时触发此操作
@Override
public void sessionCreated(HttpSessionEvent se) {
sc = se.getSession().getServletContext();
System.out.println("新建一个session" + se.getSession().getId());
}
// 销毁一个session时触发此操作
@Override
public void sessionDestroyed(HttpSessionEvent se) {
SystemDatagridCheckDaoImpl imp = new SystemDatagridCheckDaoImpl();
String sessionId = se.getSession().getId();
new WebDataGridJson().clearTemTabe(sessionId);
DeleteFile deleteFile = new DeleteFile();
deleteFile.deleteFile(sessionId);//在DeleteFile里调用traverseFolderAndDelete();
}
@Override
public void attributeAdded(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void attributeRemoved(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void attributeReplaced(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
}
}
// 递归获取指定文件夹下的所有文件并删除指定的文件
public void traverseFolderAndDelete(String path, String sessionId) {
File file = new File(path);
if (file.exists()) {
File[] files = file.listFiles();
if (files.length == 0) {
// System.out.println("文件夹是空的!");
} else {
for (File file2 : files) {
if (file2.isDirectory()) {
// System.out.println("文件夹:" + file2.getAbsolutePath());
traverseFolderAndDelete(file2.getAbsolutePath(),
sessionId);
} else {
String fileName = file2.getName();
String filePath = file2.getPath();
if (fileName.startsWith(sessionId)) {
this.delete(file2);
}
// System.out.println("文件:" + file2.getAbsolutePath());
}
}
}
} else {
// System.out.println("文件不存在!");
}
}
本文介绍如何在web.xml中配置Session失效时间,并实现Session监听器,以便在创建和销毁Session时执行特定操作,如清理临时数据和文件。
2152

被折叠的 条评论
为什么被折叠?



