Filter&Listener 学习笔记

Filter

  • javaweb三大组件(servlet,Filter,Listener)之一。用于拦截对web资源的访问,以进行特殊的功能处理,例如:权限控制,数据脱敏,统一编码等。

  • 运行流程

    1. 执行放行前逻辑
    2. 放行后访问资源
    3. 执行放行后逻辑
  • 一个web程序中可以设置多个过滤器,而多个过滤器组合在一起形成过滤器链
    在这里插入图片描述

  • 拦截路劲设置@WebFilter("")

    1. /*:拦截所有请求
    2. /hello.html: 拦截具体资源
    3. /img/*:目录拦截
    4. /*.jsp:后缀名拦截
  • 实例代码

注意:拦截只存在浏览器和web资源间,request的请求重发不会受影响

@WebFilter("/*")
public class FilterDemo implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        Filter.super.init(filterConfig);
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("过滤·······");
        HttpServletRequest req = (HttpServletRequest) servletRequest;
        String[] urls = {"/login.html","/css/"};
        String url = req.getRequestURL().toString();
        for(String s:urls){
            if(url.contains(s)){
                System.out.println("放行");
                filterChain.doFilter(servletRequest,servletResponse);
                return;
            }
        }

        req.getRequestDispatcher("/login.html").forward(servletRequest,servletResponse);
        System.out.println("请求转发");
        System.out.println("过滤后");

    }

    @Override
    public void destroy() {
        Filter.super.destroy();
    }
}

Listener

监听器可以监听application,session,request三个对象的创建、销毁和修改动作时自动执行代码的功能组件。主要类型分为:
1. ServletContext监听
2. Session 监听
3. Request 监听

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值