过滤器执行流程
1. 执行过滤器
2. 执行放行后的资源
3. 回来执行过滤器放行代码下边的代码
过滤器生命周期方法
1. init:在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次。用于加载资源
2. doFilter:每一次请求被拦截资源时,会执行。执行多次
3. destroy:在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法。只执
<%--
Created by IntelliJ IDEA.
User: leon
Date: 2019/11/24
Time: 11:30
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
index.jsp....
<%
System.out.println("index.jsp....");
%>
</body>
</html>
package com.learn.web.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
//@WebFilter("/*")
public class FilterDemo2 implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {
// 对request对象请求消息增强
System.out.println("filterDemo2执行了....");
// 放行
filterChain.doFilter(servletRequest, servletResponse);
// 对response对象的响应对象增强
System.out.println("filterDemo2回来了....");
}
@Override
public void destroy() {
}
}
package com.learn.web.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter("/*")
public class FilterDemo3 implements Filter {
/**
* 在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次。用于加载资源。
* @param filterConfig
* @throws ServletException
*/
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("int....");
}
/**
* 每一次请求被拦截拦截资源时,会执行。执行多次。
* @param servletRequest
* @param servletResponse
* @param filterChain
* @throws IOException
* @throws ServletException
*/
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {
System.out.println("doFilter....");
filterChain.doFilter(servletRequest, servletResponse);
}
/**
* 在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法。用于释放资源。
*/
@Override
public void destroy() {
System.out.println("destroy....");
}
}