• Filter过滤器实现登录检查


     

    主要利用filter过滤掉未经登录而直接跳转到非登录访问页面。代码而言的话并不难,只是有几点问题需要注意一下。
    1.使用filter需要配置web.xml,如果是/*那么在拦截后的页面会连带jsp页面里的js和css一并拦截住。
    解决办法是jsp放在jsppage这个文件下,其他css、js并列。配置的时候就/jsppage/*。
    还有个办法是在dofilter里面判断在request域拿到url,进行比对,然后过滤。
     
    2.需要设置哪些页面是你不想拦截的【假设所有的页面都放在jsppage内】。
     
    代码见下:
    LoginFilert.java
    public class LoginFilter extends HttpServlet implements Filter {
     
    public void doFilter(ServletRequest sRequest, ServletResponse sResponse,
    FilterChain filterChain) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) sRequest;
    HttpServletResponse response = (HttpServletResponse) sResponse;
    HttpSession session = request.getSession();
    String url = request.getServletPath();
    String contextPath = request.getContextPath();
    if (url.equals("")){
    url += "/";
    }
    if ((url.startsWith("/") && !url.startsWith("/jspPage/login"))) {// 若访问后台资源
    // 设置不需要过滤的页面
    if (url.endsWith("about.jsp")) {
    filterChain.doFilter(sRequest, sResponse);
    return;
    }
    // 过滤到login
    String admin = (String) session.getAttribute("admin_name");
    if (admin == null) {// 转入管理员登陆页面
    response.sendRedirect(contextPath + "/jspPage/login.jsp");
    return;
    }
    }
    filterChain.doFilter(sRequest, sResponse);
    }
     
    public void init(FilterConfig arg0) throws ServletException {
    // TODO Auto-generated method stub
    }
    }
     
    web.xml  
     
        
             loginFilter
               
             util.LoginFilter     
            
           
             loginFilter  
             /jspPage/*  
  • 相关阅读:
    oracle笔记
    log4j配置
    前段页面性能标准
    递归多叉树遍历
    // 获取元素拒顶部高度
    window.parent
    webpack打包
    vue源码解析推荐文章
    在vue项目中。artTemplate引入失败问题,修改源码
    webpack打包css前缀自动取消,以及样式冲突问题
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/4346419.html
Copyright © 2020-2023  润新知