登陆过滤 Session失效,跳转回login页面

来源:互联网 发布:骑砍战团 for mac下载 编辑:程序博客网 时间:2024/04/30 07:06

登陆过滤类;

public class LoginFilter implements Filter {

    private FilterConfig config;
    private String logon_page;
    private String home_page;
   
    public void destroy() {
       config = null;
    }
   
    public void init(FilterConfig filterconfig) throws ServletException {
        // 从部署描述符中获取登录页面和首页的URI
        config = filterconfig;
        logon_page = filterconfig.getInitParameter("LOGON_URI");
        home_page = filterconfig.getInitParameter("HOME_URI");
       
        if(null == logon_page || null == home_page) {
            throw new ServletException("没有找到登录页面或主页");
        }
    }
   
    @Override
 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse rsp = (HttpServletResponse) response;
       
       
        Login login =(Login) req.getSession().getAttribute("login");
        String request_uri = req.getRequestURI().toUpperCase();    //得到用户请求的URI
        System.out.println(request_uri);
        String ctxPath = req.getContextPath();    //得到web应用程序的上下文路径
        String uri = request_uri.substring(ctxPath.length());    //去除上下文路径,得到剩余部分的路径   
        try {
         
            if(!request_uri.equals("/LEAMEDCALL/LOGIN") && login == null) {
                System.out.println("***********************************");
               rsp.sendRedirect(home_page+logon_page);
//                PrintWriter out = rsp.getWriter();
//                out.println("<script type='text/javascript'>window.parent.location='"+home_page+logon_page+"'</script>");
               System.out.println(home_page+logon_page);
               return;
            }
            else {
                chain.doFilter(request, response);
            }
        } catch (IOException e) {

        } catch (ServletException e1) {
        }
    }


}

 

 

web.xml配置

 

 <filter>
    <filter-name>loginfilter</filter-name>
    <filter-class>filter.LoginFilter</filter-class>
    <init-param>
      <param-name>LOGON_URI</param-name>
      <param-value>/login.jsp</param-value>
    </init-param>
    <init-param>
      <param-name>HOME_URI</param-name>
      <param-value>/LeamedCall</param-value>
    </init-param>
  </filter>
 
  <filter-mapping>
    <filter-name>loginfilter</filter-name>
    <url-pattern>/admin/*</url-pattern>
  </filter-mapping>

 

 

 

如果使用frame框架,跳到单独的页面login.jsp

在login.jsp页面加上

 <script type="text/javascript">
     if(top!=self){
          if(top.location != self.location)
               top.location=self.location;
     }
</script>

原创粉丝点击