过滤器

作者: 骏龙ll | 来源:发表于2019-06-18 04:20 被阅读0次

    什么是过滤器

    Filter 的基本功能是对 Servlet 容器调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应处理的前后实现一些特殊的功能。
    Filter 程序是一个实现了 Filter 接口的 Java 类,与 Servlet 程序相似,它由 Servlet 容器进行调用和执行
    Filter 程序需要在 web.xml 文件中进行注册和设置它所能拦截的资源

      <filter>
        <filter-name>hello</filter-name>
        <filter-class>com.neuedu.filter.HelloFilter</filter-class>
      </filter>
      <filter-mapping>
        <filter-name>hello</filter-name>
        <url-pattern>/filter</url-pattern>
      </filter-mapping>
    

    注解方式:与servlet几乎完全一致,但是过滤器

    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;
    
    
    @WebFilter("/*")
    public class Filter1_Encoding implements Filter {
        public Filter1_Encoding() {
            // TODO Auto-generated constructor stub
        }
        public void destroy() {
            // TODO Auto-generated method stub
        }
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf-8");
            // 放行
            chain.doFilter(request, response);
        }
        public void init(FilterConfig fConfig) throws ServletException {
            // TODO Auto-generated method stub
        }
    }
    

    注意:Filter存在链式操作的,不同的过滤器可以拥有相同的映射路径,表示拦截同一个请求,先后顺序,如果是注解方式的方式是类名决定的,例如: AFilter,BFilter,AFilter会先进行拦截,再如Filter1_xxx,Filter2_xxx,Filter1_xxx会先拦截
    如果是配置的方式,先配置<filter-mapping></filter-mapping>的过滤器先拦截

    典型应用

    统一编码字符集

    相关文章

      网友评论

          本文标题:过滤器

          本文链接:https://www.haomeiwen.com/subject/utmkaqtx.html