gpt4 book ai didi

java - session 过期时重定向到登录页面时出现空指针异常?

转载 作者:行者123 更新时间:2023-11-29 05:50:01 24 4
gpt4 key购买 nike

我需要在 session 过期时重定向到登录页面。

我正在使用 HttpSessionListener,它正在调用 sessionDestroyed 方法,但我无法重定向到登录页面。

重定向时出现空指针异常

Java 类

import com.and.web.util.FacesUtils;
import java.io.IOException;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class MyHttpSessionListener implements HttpSessionListener {

public void sessionCreated(HttpSessionEvent se) {
HttpSession session = se.getSession();
System.out.print(getTime() + " (session) Created:");
System.out.println("ID=" + session.getId() + " MaxInactiveInterval="
+ session.getMaxInactiveInterval());
}

public void sessionDestroyed(HttpSessionEvent se) {
HttpSession session = se.getSession();
session.invalidate();
try {
FacesUtils.getExternalContext().redirect("/tnt-ui/");
} catch (IOException ex) {
Logger.getLogger(MyHttpSessionListener.class.getName()).log(Level.SEVERE, null, ex);
}
// session has been invalidated and all session data
//(except Id)is no longer available
System.out.println(getTime() + " (session) Destroyed:ID=" + session.getId());
}

private String getTime() {
return new Date(System.currentTimeMillis()).toString();
}
}

Web.xml

<listener>
<listener-class>`com.and.web.bean.MyHttpSessionListener`</listener-class>
</listener>

如何做到这一点?请给出解决方案。

最佳答案

public void sessionDestroyed(HttpSessionEvent se) {
HttpSession session = se.getSession();
session.invalidate();
try {
FacesUtils.getExternalContext().redirect("/tnt-ui/");

这是行不通的。重定向只能在请求处理期间发出。 sessionDestroyed一般是一个超时事件,不会被请求线程调用。

您可以使用(例如)过滤器来检测过期的 session 然后重定向。

关于java - session 过期时重定向到登录页面时出现空指针异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14278640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com