• 技术文章 >Java >java教程

    java过滤器怎么实现

    (*-*)浩(*-*)浩2020-09-17 18:27:51原创3367

    java过滤器的实现步骤:1、编写一个过滤器的类实现Filter接口;2、实现接口中尚未实现的方法(着重实现doFilter方法);3、在web.xml中进行配置(主要是配置要对哪些资源进行过滤)即可。

    Filter也称之为过滤器,它是Servlet技术中最激动人心的技术之一,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp,Servlet, 静态图片文件或静态html文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。

    那么它是如何实现的呢?

    编写一个过滤器的类实现Filter接口

    实现接口中尚未实现的方法(着重实现doFilter方法)

    在web.xml中进行配置(主要是配置要对哪些资源进行过滤)

    它的工作原理?

    Filter接口中有一个doFilter方法,当我们编写好Filter,并配置对哪个web资源进行拦截后,WEB服务器每次在调用web资源的service方法之前,都会先调用一下filter的doFilter方法,因此,

    在该方法内编写代码可达到如下目的:
    调用目标资源之前,让一段代码执行。
    是否调用目标资源(即是否让用户访问web资源)。
    调用目标资源之后,让一段代码执行。
    web服务器在调用doFilter方法时,会传递一个filterChain对象进来,filterChain对象是filter接口中最重要的一个对象,它也提供了一个
    doFilter方法,开发人员可以根据需求决定是否调用此方法,调用该方法,则web服务器就会调用web资源的service方法,即web资源就会被访问,否则web资源不会被访问。

    过滤器范例:

    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;
    /**
    * @author yangcq
    * @description 过滤器Filter的工作原理
    */
    public class FilterTest implements Filter{
        public void destroy() {
            System.out.println("----Filter销毁----");
        }
    public void doFilter(ServletRequest request, ServletResponse response,FilterChain filterChain) throws IOException, ServletException {
        // 对request、response进行一些预处理
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        System.out.println("----调用service之前执行一段代码----");
        filterChain.doFilter(request, response); // 执行目标资源,放行
        System.out.println("----调用service之后执行一段代码----");
    }
        public void init(FilterConfig arg0) throws ServletException {
            System.out.println("----Filter初始化----");
        }
    }

    在web. xml中配置过滤器:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" 
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
      <display-name></display-name>    
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      <!--配置过滤器-->
      <filter>
          <filter-name>FilterTest</filter-name>
          <filter-class>com.yangcq.filter.FilterTest</filter-class>
      </filter>
      <!--映射过滤器-->
      <filter-mapping>
          <filter-name>FilterTest</filter-name>
          <!--“/*”表示拦截所有的请求 -->
          <url-pattern>/*</url-pattern>
      </filter-mapping>
    </web-app>

    以上就是java过滤器怎么实现的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:java
    上一篇:java中包的作用是什么 下一篇:java异或什么意思?
    Web大前端开发直播班

    相关文章推荐

    • java8是什么?• java中args是什么意思?• java开发环境是什么• java怎么处理高并发?

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网