Filter 过滤器 创建,配置和简单的使用

创建Filter过滤器


话不多说直接上代码

//配置Filter这里跟servlet配置是一样的配置的哪个servlet地址就会拦截对哪个servlet的请求 配置方法 固定地址(就是这里用的就是)  通配符  指定目录
//这里可以配置多个servlet也就是对多个servlet的请求和响应做相同的操作
//当然一个servlet也可以配置多个过滤器如果配置了多个过滤器 请求和响应会经过多个过滤器
//请求:从用户访问-->第一个过滤器-->第二个过滤器-->servlet
//响应:servlet-->第二个过滤器-->第一个过滤器-->返回给用户
//我的理解是说是配置不如说是绑定也就是说一个servlet可以绑定多个过滤器一个过滤器也可以绑定多个servlet
//servlet和过滤器是相互绑定的
//绑定以后想要访问过滤器绑定的servlet就必须先要访问这个过滤器
//下面的代码测试了过滤器的的生命周期和设置了response编码集和设置一个简单的防盗链
@WebFilter(filterName = "DemoFilter",urlPatterns = {"/访问第一个servlet地址","/访问第二个servlet地址"})
public class DemoFilter implements Filter {
    //Filter销毁时调用
    public void destroy() {
        System.out.println("过滤器销毁");//销毁时控制台打印
    }

    //这个函数是拦截请求和响应的是创建过滤器的时候自动创建的
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        //这里的request是ServletRequest类型只有拿到HttpServletRequest类型的request才能拿到请求头所以强转
        HttpServletRequest request = (HttpServletRequest)req;//防盗链代码
        //拿到request请求头里的一个参数referer这个参数就是谁发送的请求也就是发送请求的网页的地址
        String referer = request.getHeader("referer");//防盗链代码
        if (referer.startsWith("主页地址") && referer!=null){//防盗链代码
            System.out.println("过滤器执行");//Filter执行时调用
            resp.setContentType("text/html;charset=UFT-8");//设置response编码集
            chain.doFilter(req, resp);//这个方法是放行请求和响应的
        }
    }

    //Filter创建时调用
    public void init(FilterConfig config) throws ServletException {
        System.out.println("过滤器创建");//创建时控制台打印
    }
}

Java面向对象编程(oop),抽象,封装,继承,多态  

过滤器 AOP 面向切面编程

过滤器的作用就是过滤和修改请求和响应

生命周期:随着项目的启动而创建, 当访问了地址后调用doFilter方法,这个会多次执行。随着项目的关闭而销毁

调用doFilter方法

req(servletRequestàHTTPServletRequest注意强转(在使用httpservletrequest这个独有的方法的时候要强转)

response同上

chainfilter 链可以指向下一个地址(如果有过滤器则下一个过滤器,没有则指向资源servlet)

我也是刚入门的小白一个,就是闲来无事随心所欲想起来了就写一篇自己学到的东西,万一能够遇上贵人指点一二呢,如有独特见解评论区讨论,





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值