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

  • 相关阅读:
    memcache清理缓存
    JqGrid常见使用方法
    SQLyog 最新版本12.5-64bit 完美破解,亲测可用!
    Navicat Premium 最新版本12.1.16-64bit 完美破解,亲测可用!
    【JAVA基础】一:聊聊笔试常见到的 “==、equal” 比较是否相等的内在差别
    scrapy 爬虫返回json格式内容unicode编码转换为中文的问题解决
    Python3的桌面程序开发利器:Eric6的环境搭建、使用
    通过Redis、Memcache的 incr 原子操作防刷机制的使用差别
    从零开始搭建一个从Win7环境备份至CentOS7的SVN双机备份环境
    通过Quartz 配置定时调度任务:使用cron表达式配置时间点
  • 原文地址:https://www.cnblogs.com/Lanht/p/12789439.html
Copyright © 2011-2022 走看看