过滤器与监听器

创建过滤器

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 过滤器的创建步骤
 * 1、创建一个普通的Java类,实现接口javax.servlet.Filter
 * 2、重写方法doFilter:在该方法中处理过滤内容,完成过滤器的业务
 * 3、添加@WebFilter(filterName = "myFilter", urlPatterns = "/*")注解
 * 4、在启动类中添加注解,扫描到过滤器类:@ServletComponentScan(basePackages = "com.filter.filter")
 */
@WebFilter(filterName = "myFilter", urlPatterns = "/*")
public class MyFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("到达过滤器");

        //这里可以直接将req,resp转换成httpReq,httpResp,方便操作
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;

        //将拦截的请求放行,通往controller处理
        filterChain.doFilter(servletRequest, servletResponse);

        //controller处理完,返回时又经过了过滤器
        System.out.println("返回时,又经过了过滤器");
    }
}

创建监听器

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

/**
 * 创建监听器的步骤
 *  1、创建一个普通的Java类,实现监听接口
 *      监听什么域对象,就实现该域对象对应的监听接口
 *      比如要监听上下文对象的创建和销毁,就需要实现ServletContextListener接口
 *  2、方法的参数,可以取得要监听的对象
 *  3、通过@Component注解,将监听器对象创建对spring容器中
 */
@Component
public class Listener implements ServletContextListener {

    //监听上下文对象的创建,如果上下文对象创建了,马上执行该方法
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        //获取要监听的对象
        ServletContext servletContext = sce.getServletContext();
        System.out.println("上下文对象创建了");
    }

    //监听上下文对象的销毁,如果上下文对象销毁了,马上执行该方法
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("上下文对象销毁了");
    }
}


//监听ServletRequest域对象的创建和销毁
@Component
public class Listener2 implements ServletRequestListener {
    @Override
    public void requestInitialized(ServletRequestEvent sre) {
        System.out.println("ServletRequest创建了");
    }

    @Override
    public void requestDestroyed(ServletRequestEvent sre) {
        System.out.println("ServletRequest销毁了");
    }
}

//监听HttpSession域对象的创建和销毁
@Component
public class Listener3 implements HttpSessionListener {
    @Override
    public void sessionCreated(HttpSessionEvent se) {
        System.out.println("HttpSession域对象创建了");
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        System.out.println("HttpSession域对象销毁了");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值