Filter

1. 概念

JavaWeb中的三大组件:

  • Servlet
  • Filter(过滤器)
  • Listener(监听器)

Filter不是静态资源,或者是不产生请求和响应,它的作用是对请求和响应做预处理。

Java中的过滤器使用场景:

验证信息的登录、处理字符的问题、过滤敏感词汇等。
1.2 快速入门

步骤:

1.实现一个接口  Filter    包   javax.servlet

2.重写三个方法      核心方法是  doFilter()
    package com.filter;
    
    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import java.io.IOException;
    
    @WebFilter("/*")
    //只要服务器启动,任何一个servlet启动(每一个servlet对应一个注解),都会过滤
    
    //@WebFilter("/TestServlet")//精准拦截
    public class FilterDemo1 implements Filter {
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            System.out.println("init...");
        }
    
        /**
         * 核心过滤方法
         * ServletRequest servletRequest  请求对象
         * ServletResponse servletResponse   响应对象
         * FilterChain filterChain   过滤链
         * 重点  核心
         * */
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            //
            System.out.println("过滤...");
            //放行代码
            chain.doFilter(request,response);
        }
    
        @Override
        public void destroy() {
            System.out.println("销毁...");
        }
    }
1.3 配置Filter
1.3.1 XML配置
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
             version="3.1">
    
        <!--  注册  -->
        <filter>
            <filter-name>FilterDemo1</filter-name>
            <filter-class>com.filter.FilterDemo1</filter-class>
        </filter>
        <!--  配置过滤器:配置过滤拦截规则  -->
        <filter-mapping>
            <filter-name>FilterDemo1</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    </web-app>
1.3.2 注解配置
    @WebFilter("/*")
    //只要服务器启动,任何一个servlet启动(每一个servlet对应一个注解),都会过滤
    
    @WebFilter("/TestServlet")
    //精准拦截
1.4 Filter的执行流程

浏览器在访问服务器的时候,要发送一个http的请求,这个请求的资源,先匹配过滤器中的注解写法的路径,能匹配到的话,就进行拦截,过滤器中有放行代码。

  • 1.执行过滤器
  • 2.是否满足过滤条件,
    • 如果满足,过滤掉,哪里来回哪里去
    • 如果不满足,放行
  • 3.放行之后,执行资源,
  • 4.再次回到过滤器,
  • 5.最后给客户端一个响应。
1.5 Filter生命周期
  • 1.构造方法
  • 2.init方法
  • 3.doFilter方法
  • 4.destroy方法
1.6 Filter的路径问题
@WebFilter()
	拦截路径:
	1.具体的拦截路径	/TestServlet
	2.拦截目录	  /user/*
	3.拦截指定后缀    *.do   *.action
	4.拦截所有的资源   /*
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值