import com.sun.net.httpserver.HttpExchange;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter(value="/*", dispatcherTypes = {
DispatcherType.FORWARD, DispatcherType.REQUEST, DispatcherType.ERROR})
public class FilterDemo implements Filter {
/*在服务器启动时, 会创建Filter对象并执行init方法, 只有这么执行一次*/
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
/*在浏览器每一次请求被拦截的资源是, 执行doFilter方法, 一次请求就访问一次*/
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("访问1");
System.out.println("访问2");
/*放行代码*/
filterChain.doFilter(servletRequest, servletResponse);
System.out.println("回应2");
System.out.println("回应1");
/*访问1
访问2
回应2
回应1
由实验可以看出
放行之后的代码也是由上到下顺序执行的*/
}
/*在服务器正常关闭时才会执行, 也就这么一次*/
@Override
public void destroy() {
}
/*Filter细节
* web.xml配置
* 过滤器执行流程
*
* 3.过滤器的拦截配置
* 也就是拦截的方式(资源被访问的方式)
* 使用注解
* 设置dispatcherTypes属性
* FORWARD
* ASYNC
* REQUEST
* INCLUDE: 包含访问资源
* ERROR: 错误跳转资源
*
*
*
* 过滤器的生命周期
* 过滤器链
* */
}
过滤器入门
猜你喜欢
转载自blog.csdn.net/weixin_45032905/article/details/121856176
今日推荐
周排行