0
繼在我的網頁過濾代碼:重定向不工作時是無效的會話
private final String sessionExpiredPage = "/exception/sessionexpired.xhtml";
private final String loginPage = "/login.xhtml";
@Override
public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain)
throws IOException, ServletException {
try {
final HttpServletRequest req = (HttpServletRequest) request;
final HttpServletResponse res = (HttpServletResponse) response;
final HttpSession session = req.getSession(false);
final String reqURI = req.getRequestURI();
if (isRequireSessionControl(req) && isSessionInvalid(req)) {
res.sendRedirect(req.getContextPath() + sessionExpiredPage);
} else {
if (reqURI.indexOf(sessionExpiredPage) >= 0 || reqURI.indexOf(loginPage) >= 0 || (session != null
&& session.getAttribute("username") != null) || reqURI.contains("javax.faces.resource")) {
chain.doFilter(request, response);
} else {
res.sendRedirect(req.getContextPath() + "/login.xhtml");
}
}
} catch (final Exception e) {
e.printStackTrace();
}
}
它背後的理念是: 第一次用戶調用的URL,他將被重定向到login.xhtml 。這很好。在web.xml中定義的一段時間之後,會話無效。
過濾器識別嘗試重定向到「sessionExpiredPage」的無效會話。但它不會重定向,而是會顯示當前頁面。
那麼,我的代碼有什麼問題,我在哪裏有我的錯誤? 。