2019独角兽企业重金招聘Python工程师标准>>>
问题:
session超时跳转后还在frame框架里面,得想办法跳出frame后转到登录页面去。
解决办法:
Filter处理
@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {//判断用户是否已经登录HttpServletRequest httpServletRequest = (HttpServletRequest)request;HttpServletResponse servletResponse = (HttpServletResponse)response;//需要登录的东西不能被浏览器缓存servletResponse.setHeader("Pragma","No-cache");servletResponse.setHeader("Cache-Control","no-cache"); servletResponse.setDateHeader("Expires", -10);String appPath= httpServletRequest.getServletPath();if(!appPath.equalsIgnoreCase(loginUrl)&&!appPath.equalsIgnoreCase(loginActionUrl)&&!SessionUtil.exist(httpServletRequest, SessionUtil.USER_SESSION_NAME)){ servletResponse.sendRedirect(httpServletRequest.getContextPath()+loginUrl);return ;} chain.doFilter(request, response);
}
或者:
if(session == null || userDTO == null)//判断session是否失效。{ /*session失效后用户再次操作时页面将会跳回登录页面。*/ PrintWriter out = response.getWriter(); String url = request.getContextPath() + "/index.jsp"; out.println("<script language=\"javascript\">");//利用js跳出iframe。out.println("top.location=\"" + url + "\";"); out.println("</script>");}
注:在Filter中无论是forward还是redirct,之后最好return,不需要走 chain.doFilter(request, response); 在某些特殊的情况下可能就会存在问题。