当session过期后可以用过滤器来设置重定向页面。
public class ActionFilter extends HttpServlet implements Filter {
private FilterConfig filterConfig;
public void init(FilterConfig config) {
this.filterConfig = config;
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws ServletException, IOException {
HttpServletRequest req = (HttpServletRequest) servletRequest;
servletRequest.setCharacterEncoding("UTF-8");
HttpServletResponse res = (HttpServletResponse) servletResponse;
String url = req.getRequestURI();
SysUserVOImpl user = (SysUserVOImpl) req.getSession().getAttribute("SysUser");
if (null == user) {
if (!COMMON.isEmpty(url) && (url.endsWith("newestlogin.jsp") || url.endsWith("UserLoginAction.jsp") || url.endsWith("login.jsp") || url.endsWith("loginAction.do"))) {
filterChain.doFilter(servletRequest, servletResponse);
} else {
req.getRequestDispatcher("/newestlogin.jsp").forward(req, res);
}
} else {
filterChain.doFilter(servletRequest, servletResponse);
}
}
但是这样不能不能跳出iframe等框架。
可以用javaScript解决
在你想控制跳转的页面,比如login.jsp中的<head>与</head>之间加入以下代码:
<script language="JavaScript">
if (window != top)
top.location.href = location.href;
</script>
特点,简单易实现
缺点,可能需要跳转两次,如果第二次跳转较慢还会在ifream中显示第一次的界面内容
本文介绍了一种通过过滤器实现的session过期处理方法,并提供了解决方案以防止过期后的页面停留在iframe中。同时给出了JavaScript代码示例确保页面能够正确地跳转到登录页。

394

被折叠的 条评论
为什么被折叠?



