簡體   English   中英

會話到期時重定向到登錄頁面時是否為空指針異常?

[英]Null pointer exception while redirecting to the login page when the session expires?

我需要在會話到期時重定向到登錄頁面。

我正在使用HttpSessionListener,它正在調用sessionDestroyed方法,但我無法重定向到登錄頁面。

重定向時我得到Null指針異常

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通常是一個超時事件,不會被請求線程調用。

您可以使用(例如)過濾器來檢測過期的會話,然后重定向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM