• 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

  • 相关阅读:
    SQL所有者更改问题
    人生路上对我影响最大的三位老师
    自我介绍
    Ural_1146. Maximum Sum (DP)
    Ural_1654. Cipher Message(栈)
    Ural_1333. Genie Bomber 2
    POJ_2112 Optimal Milking(网络流)
    Ural_1031.Railway Ticket (DP)
    Ural_1030. Titanic
    Ural_1207. Median on the Plane(计算几何)
  • 原文地址:https://www.cnblogs.com/Lanht/p/12789439.html
Copyright © 2020-2023  润新知