想在web.xml中加入个监听器,加载的类是实现HttpSessionListener借口。想实现当Session过期后,监听器会调用实现类中的Session 过期方法。
实现类:package org.cric.bboa.action.user;import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;import org.cric.bboa.dao.manpowerResource.EmployeeDao;
import org.cric.bboa.model.manpowerResource.Employee;public class SessionListener implements HttpSessionListener {
@Resource EmployeeDao employeeDaoImpl;
@Override
public void sessionCreated(HttpSessionEvent arg0) {
HttpSession session=arg0.getSession(); } @Override
public void sessionDestroyed(HttpSessionEvent arg0) {
HttpSession session= arg0.getSession();
Employee user=(Employee)session.getAttribute("user");
if(user!=null){
user.setMark(0);
this.employeeDaoImpl.update(user);
session.removeAttribute("user");
}
}}配置文件web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>bboa</display-name>
<welcome-file-list>
<welcome-file>HX_Login.jsp</welcome-file>
</welcome-file-list>
<listener>
<description>HttpSessionListener</description>
<listener-class>org.cric.bboa.action.user.SessionListener</listener-class>
</listener>   


<!-- 验证码 -->
<servlet>
<servlet-name>authimg</servlet-name>
<servlet-class>org.cric.bboa.web.AuthImg</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>authimg</servlet-name>
<url-pattern>/authImg</url-pattern>
</servlet-mapping> <!--session过期时间 -->
<session-config>
<session-timeout>5</session-timeout>
</session-config>
</web-app>运行服务器时候产生错误:
严重: Error configuring application listener of class org.cric.bboa.action.user.SessionListener
javax.naming.NameNotFoundException: Name org.cric.bboa.action.user.SessionListener is not bound in this Context请老鸟们指教!!!

解决方案 »

  1.   

    javax.naming.NameNotFoundException似乎是命名空间有问题,采用xmlns="http://java.sun.com/xml/ns/j2ee" 试试看,你那里是javaee
    不晓得是不是这个问题噢good luck
      

  2.   

    把这行去掉呢?
     <description>HttpSessionListener</description>
      

  3.   

    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        id="WebApp_ID" version="2.5">改为:<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">看看