zoukankan      html  css  js  c++  java
  • Filter系列教材 (三)- 使用Filter进行登陆验证功能的开发

    步骤1:在Servlet中进行登陆验证的局限性
    步骤2:使用Filter处理
    步骤3:配置web.xml
    步骤4:练习-在login.jsp页面的js,css和图片文件
    步骤5:答案-在login.jsp页面的js,css和图片文件

    步骤 1 : 在Servlet中进行登陆验证的局限性

    用户是否登陆的验证中,我们可以通过在HeroListServlet中增加对session的判断代码来做到登陆验证。

    但是按照这样的做法,所有的Servlet都要加上一样的代码,就会显得比较累赘。

    与通过Filter处理中文问题一样,也可以通过Filter一次性解决所有的登陆验证问题

    步骤 2 : 使用Filter处理

    创建一个AuthFilter 类

    String uri = request.getRequestURI();

    if (uri.endsWith("login.html") || uri.endsWith("login")) {

        chain.doFilter(request, response);

        return;

    }


    首先判断是否是访问的login.html和loginHero,因为这两个页面就是在还没有登陆之前就需要访问的
     

    String userName = (String) request.getSession().getAttribute("userName");

    if (null == userName) {

            response.sendRedirect("login.html");

        return;

    }



    从Session中获取userName,如果没有,就表示不曾登陆过,跳转到登陆页面。

    package filter;

    import java.io.IOException;

    import java.text.SimpleDateFormat;

    import java.util.Date;

    import javax.servlet.Filter;

    import javax.servlet.FilterChain;

    import javax.servlet.FilterConfig;

    import javax.servlet.ServletException;

    import javax.servlet.ServletRequest;

    import javax.servlet.ServletResponse;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    public class AuthFilter implements Filter {

        @Override

        public void destroy() {

        }

        @Override

        public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)

                throws IOException, ServletException {

            HttpServletRequest request = (HttpServletRequest) req;

            HttpServletResponse response = (HttpServletResponse) res;

            String uri = request.getRequestURI();

            if (uri.endsWith("login.html") || uri.endsWith("login")) {

                chain.doFilter(request, response);

                return;

            }

            String userName = (String) request.getSession().getAttribute("userName");

            if (null == userName) {

                response.sendRedirect("login.html");

                return;

            }

            chain.doFilter(request, response);

        }

        @Override

        public void init(FilterConfig arg0) throws ServletException {

        }

    }

    步骤 3 : 配置web.xml

    配置AuthFilter

    <filter>

        <filter-name>AuthFilter</filter-name>

        <filter-class>filter.AuthFilter</filter-class>

    </filter>

    <filter-mapping>

        <filter-name>AuthFilter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

        


    更多内容,点击了解: https://how2j.cn/k/filter/filter-auth/590.html

  • 相关阅读:
    MongoDB 副本集搭建 & 副本集扩容
    MongoDB 部署 & 基础命令
    MyBatis常见面试题:#{}和${}的区别是什么?
    MyBatis常见面试题:说说MyBatis的工作原理
    Java四种引用类型回收时机介绍
    Java虚拟机之垃圾回收器
    Servlet中过滤器、监听器和拦截器的区别
    Java里一个线程两次调用start()方法会出现什么情况
    二叉树、二叉查找树、平衡树和红黑树概念及其性质
    转:基于Redis实现延时队列
  • 原文地址:https://www.cnblogs.com/Lanht/p/12789439.html
Copyright © 2011-2022 走看看