当系统空闲一段时间时使用java自动注销

当系统空闲一段时间时使用java自动注销,java,Java,我尝试了此代码的注销选项,但是,当系统空闲1或2分钟时,我需要自动注销。有人能帮我解决此问题吗?…对于web应用程序,如果您想要会话超时,那么您可以在此处查看 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.getSession().invalidate(); response.sen

我尝试了此代码的注销选项,但是,当系统空闲1或2分钟时,我需要自动注销。有人能帮我解决此问题吗?…

对于web应用程序,如果您想要会话超时,那么您可以在此处查看
protected void doGet(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {

request.getSession().invalidate();
response.sendRedirect(request.getContextPath() + "/login.jsp");
}
. 这可以通过在部署描述符中使用简单的配置轻松完成
i、 e.你的
web.xml
。希望这有帮助。

配置会话超时的最佳方法是在web应用程序的web.xml文件中进行配置

    import java.awt.*;
    import java.awt.event.*;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.*;
 class InactivityListener implements ActionListener, AWTEventListener {
int cnt = 0;
public final static long KEY_EVENTS = AWTEvent.KEY_EVENT_MASK;
public final static long MOUSE_EVENTS
        = AWTEvent.MOUSE_MOTION_EVENT_MASK + AWTEvent.MOUSE_EVENT_MASK;
public final static long USER_EVENTS = KEY_EVENTS + MOUSE_EVENTS;
private Window window;
private Action action;
private int interval;
private long eventMask;
private Timer timer = new Timer(0, this);
public InactivityListener() throws ClassNotFoundException{
    Admin frame = new Admin();
    frame.setVisible(true);
    Action logout = new AbstractAction() {
        public void actionPerformed(ActionEvent e) {
            JFrame frame = (JFrame) e.getSource();
            LoginForm lf = null;
            try {
                lf = new LoginForm();
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(InactivityListener.class.getName()).log(Level.SEVERE, null, ex);
            }
            lf.setVisible(true);
            frame.dispose();
        }
    };
    InactivityListener listener = new InactivityListener(frame, logout, 1);
    listener.start();
}
public InactivityListener(Window window, Action action) {
    this(window, action, 1);
}
public InactivityListener(Window window, Action action, int interval) {
    this(window, action, interval, USER_EVENTS);
}
public InactivityListener(Window window, Action action, int minutes, long eventMask) {
    this.window = window;
    setAction(action);
    setInterval(minutes);
    setEventMask(eventMask);
}
public void setAction(Action action) {
    this.action = action;
}
public void setInterval(int minutes) {
    setIntervalInMillis(minutes * 60000);
}
public void setIntervalInMillis(int interval) {
    this.interval = interval;
    timer.setInitialDelay(interval);
}
public void setEventMask(long eventMask) {
    this.eventMask = eventMask;
}
public void start() {
    timer.setInitialDelay(interval);
    timer.setRepeats(false);
    timer.start();
    Toolkit.getDefaultToolkit().addAWTEventListener(this, eventMask);
}
public void stop() {
    Toolkit.getDefaultToolkit().removeAWTEventListener(this);
    timer.stop();
}
public void actionPerformed(ActionEvent e) {
    ActionEvent ae = new ActionEvent(window, ActionEvent.ACTION_PERFORMED, "");
    action.actionPerformed(ae);
}
public void eventDispatched(AWTEvent e) {
    if (timer.isRunning()) {
        timer.restart();
    }
}
 }

看起来像是一个web应用程序,系统是客户端的系统,您应该在客户端代码上寻找一种方法,在客户端代码上设置一个计时器,触发注销到服务器的请求并通知用户。
<web-app ...>
  <session-config>
    <session-timeout>20</session-timeout>
  </session-config>
</web-app>
HttpSession session = request.getSession();
session.setMaxInactiveInterval(20*60);