【Filter】- 过滤器的基本使用 以及细节

Filter : 过滤器

1.基本概念

    web 中的过滤器 , 当访问服务器的资源时, 过滤器可以将请求拦截下来, 完成一些特殊的功能. 过滤器的作用 : 一般用于完成通用的操作,比如: 登陆验证,同一编码处理,敏感字符过滤…

2.快速入门

    步骤 : 定义一个类 , 实现 Filter 接口 重写对应的方法 配置拦截路径 (当访问这个路径的时候,拦截器会生效) 代码示例
package com.zyg.filter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;

/**
 * Servlet Filter implementation class EncodingFilter
 */
@WebFilter("/*")
public class EncodingFilter implements Filter {
          
   


	public void destroy() {
          
   
		// TODO Auto-generated method stub
	}
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
          
   
		System.out.println("过滤器...");
		// 注意 : 这里要放行
		chain.doFilter(request, response);
	}

	public void init(FilterConfig fConfig) throws ServletException {
          
   
		// TODO Auto-generated method stub
	}

}
    配置web.xml文件 (如果使用注解的方式配置就不需要再配置web.xml)
<!-- 配置过滤器 -->
  <filter>
  	<filter-name>EncodingFilter</filter-name>
  	<filter-class>com.zyg.filter.EncodingFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>EncodingFilter</filter-name>
  	<!-- 拦截的路径 -->
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
    过滤器执行流程分析 执行过滤器 执行放行后的资源 回来执行过滤器放行代码下边的代码 流程描述 当用户访问某一文件的时候 , 假设是 test.jsp 页面 访问流程是 访问 -> 拦截器 -> 放行 -> 访问到test.jsp -> 返回 -> 经过拦截器 -> 返回请求 代码测试 test.jsp <% System.out.println("test.jsp 被访问...."); %> Filter - doFilter 方法 // System.out.println("在访问到指定资源之前执行的代码"); // 注意 : 这里要放行 chain.doFilter(request, response); // 访问到指定页面之后 返回时执行的代码 // code System.out.println("返回..."); 过滤器的生命周期
服务启动 -> 调用 init 方法初始化 -> 创建Filter对象 -> 每次访问浏览器拦截的路径时,都会调用 doFilter 方法 -> 服务器关闭 销毁Filter对象 -> 如果服务器是正常关闭的 调用destroy 方法
经验分享 程序员 微信小程序 职场和发展