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

  • 相关阅读:
    XDOJ1156: 等待队列
    XDOJ 1009: Josephus环的复仇
    cookie浏览器编写测试无效???
    express框架中cookie的使用
    JS设置Cookie过期时间
    CSS 伪元素
    art-template手动编写时间过滤器
    mongoose设置默认值、模块化及性能测试
    Mongoose: `findOneAndUpdate()` and `findOneAndDelete()` without the `useFindAndModify
    mongoose 联表查询之populate使用及注意事项
  • 原文地址:https://www.cnblogs.com/Lanht/p/12789439.html
Copyright © 2011-2022 走看看