Filter概述及快速入门 [JavaWeb][Servlet]

Filter概述及快速入门

Filter概述:

概念: Filter表示过滤器, 是JavaWeb三大组件之一
  • JavaWeb三大组件: Servlet, Filter, Listener
过滤器可以把对资源的请求拦截下来, 从而实现一些特殊的功能
过滤器一般完成一些通用的操作:
  • 比如: 权限控制, 统一编码处理, 敏感字符处理等
    • 还有就是在访问某个网站的时候要先判断是否登录, 不能直接就通过导航栏直接进入到网站登录之后的页面中, 只要是尝试登录到网站内部的时候我们都应该先进行一个判断, 判断是否已经登录, 如果没有登录的时候就跳转到登录页面, 让其进行登录操作, 这样的操作也应该是在过滤器(Filter)中实现的

快速入门:

  1. 定义类, 实现Filter接口, 并重写其中所有的抽象方法
    • Filter接口全类名: javax.Servlet.Filter
package com.ffyc.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

//配置拦截路径
@WebFilter("/main5")
public class FilterDemo implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    }

    @Override
    public void destroy() {
    }
}
  1. 配置Filter拦截的资源的路径
    • 就是在类上定义@WebFilter注解
    • 这里并不是配置过滤器的访问路径, 而是配置拦截路径, 就是当我们访问的资源的路径满足我们的拦截路径的匹配的时候就会执行对应的过滤器
      • 当将Filter拦截路径的值设置为"/*"之后就表示所有的资源都会拦截
//配置拦截路径
@WebFilter("/main5")
public class FilterDemo implements Filter {
  • 这里就表示拦截访问路径为**“http://ip:port/工程路径/main5”**的资源的请求
    • 这里的/mian5中的/显然是由服务器解析, 如果是服务器解析, 那么"/"就是表示http://ip:port/工程路径
  1. 在doFilter方法中输出一句话,并放行(这里只是做一个测试, 所以我们选择输出一句话)
package com.ffyc.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

//配置拦截路径
@WebFilter("/main5")
public class FilterDemo implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        //不具体实现
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("filter被执行了");

        //放行 --- > 放行之后会立即去执行Servlet中的service()方法
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {
        //不具体实现
    }
}

单词积累:

chain : 链 , 约束

补充:

FilterChain表示过滤器链, FilterChain接口中有doFilter()方法, 但是FilterChain接口中的doFilter()方法并不是Filter接口中的doFilter()方法, FilterChain接口中的doFilter()方法是进行放行的, 而Filter接口中的doFilter()方法是进行过滤操作的

Filter接口有很多, 我们此时的过滤器指的是javax.servlet包下的Filter接口

补充二:

我们后期会在Spring框架中讲到拦截器, 拦截器和此时的过滤器的功能以及实现等都是不一样, 后期我们会专门来将过滤器和拦截器的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值