Java过滤器

过滤器介绍

过滤器是一个用于拦截在数据源和数据目的地之间消息的一个对象

过滤器功能

  • 分析请求,将请求发送给指定的资源或自己创建一个响应返回
  • 在请求到达服务器端前处理请求,设置请求信息,将请求封装成符合规则的对象
  • 在响应到达客户端前处理响应,将响应封装成符合规则的对象

过滤器执行

  • 过滤器处理请求采取以下3种行动之一
    ----.过滤器自身产生一个响应,返回给客户端
    ----.把请求转发给过滤器链中的下一个过滤器,如果是最后一个过滤器则将请求转发给请求指定资源
    ----.把请求转发到另一资源

Filter接口

  • init()方法: 初始化
    Servlet容器最先调用过滤器的init()方法,初始化过滤器,生命周期中只调用一次
  • doFilter()方法: 执行
    Servlet容器调用doFilter()方法处理请求
  • destroy()方法: 销毁
    Servlet容器最后调用destroy()方法,释放过滤器所占的资源

过滤器API

  • 过滤器相关接口、类:
    Java过滤器_第1张图片

简单过滤器代码:

package com.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.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.websocket.Session;
public class DemoFilter implements Filter{
     
	@Override
	public void destroy() {
     
		System.out.println("销毁方法");
	}
	@Override
	public void doFilter(ServletRequest requset, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
     
		System.out.println("执行过滤器");
		//业务逻辑
		chain.doFilter(requset,response);
	}
	@Override
	public void init(FilterConfig arg0) throws ServletException {
     
		//获取web.xml文件中元素初始化
		System.out.println("初始化方法");
	}
}

配置过滤器web.xml

  <filter>
    <filter-name>DemoFilter</filter-name>
    <filter-class> com.Filter.DemoFilter </filter-class>
  </filter>
  <filter-mapping>
    <filter-name>DemoFilter</filter-name>
    <url-pattern>/*
  

Filter过滤器链

  • Web容器加载的顺序:web.xml文件中配置的Filter的倒序
  • 拦截执行顺序:web.xml文件中配置的Filter的正序
  • 销毁顺序:web.xml文件中配置的Filter的倒序

你可能感兴趣的:(Java过滤器)