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

原文地址:https://www.cnblogs.com/Lanht/p/12789439.html