本文共 2658 字,大约阅读时间需要 8 分钟。
package cn.et;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;/** * 拦截器的实现类 实现Filter * 拦截器只能在容器启动时创建实例 * * 拦截器链 * 如果某些资源被多个过滤器拦截形成了链。 * 如果资源被访问时 这个链中的所有过滤器都会被依次执行。 * 如果如何一个过滤器没有通过 链条被中断,链条后的所有过滤器都不会执行。 * @author Administrator * */public class FilterDemo implements Filter { /** * 生命周期的销毁方法 */ public void init(FilterConfig filterConfig) throws ServletException { } /** * 配置了拦截某些资源 这些资源都被进入doFilter方法 * 该方法决定了资源是否能够通过过滤器。 */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //调用了该方法过滤器通过验证,不调用直接打回 Object attribute = request.getParameter("name"); System.out.println(attribute); if(attribute!=null && attribute.equals("1")){ chain.doFilter(request, response); return; } request.getRequestDispatcher("/index.jsp").forward(request, response); } /** * 生命周期的消费方法 */ public void destroy() { }}该拦截器拦截file目录下的文件
在创建一个类,拦截imag下的文件filterDemo cn.et.FilterDemo filterDemo /file/*
package cn.et;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;public class ImagFiter implements Filter{ public void init(FilterConfig filterConfig) throws ServletException { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { Object attribute = request.getParameter("id"); if(attribute!=null && attribute.equals("1")){ chain.doFilter(request, response); return; } request.getRequestDispatcher("/index.jsp").forward(request, response); } public void destroy() { }}
imagFiter cn.et.ImagFiter imagFiter /file/imag/*