过滤器filter学习进度一

过滤器filter他的理解是:

filter是对客户端访问资源的过滤,符合条件放行,不符合条件的不放行,并且可以对目标资源访问的前后进行逻辑处理。

快速入门:

1、编写一个过滤器的类实现filter接口。

2、实现接口中尚未实现的方法(着重实现dofilter方法)

3、在web.xml进行配置(主要是配置要对的那些资源进行过滤)

(实际就是放过哪一个,不放过哪一个的判断操作)。

进行拦截的先关fliter的操作:

public class FilterDemo1 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }
 // doFilter业务处理的核心代码区,相当于Servlet的service方法
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("FilterDemo1----------------------");
    }

    @Override
    public void destroy() {

对于其中的方法:

  1. init:服务器启动后创建Filter对象,调用init方法,init方法只执行一次,一般用来加载资源
  2. doFilter:每次请求被拦截的资源时都会执行,可以执行多次
  3. destroy:服务器关闭后Filter对象被销毁,如果服务器是正常关闭,就会执行destroy方法

主要是重写dofilter

之后就是对其进行放行:

public class FilterDemo1 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }
 // doFilter业务处理的核心代码区,相当于Servlet的service方法
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("FilterDemo1----------------------");

        Chain.doFilter(servletRequest, servletResponse);// 过滤器放行请求,可以访问到index.jsp
    }

    @Override
    public void destroy() {

   

主要是通过chain进行对其放行。

然后就是对于web的相应的配置:

    <filter>
        <filter-name>demo1</filter-name>
        <filter-class>cn.zhuobo.web.filter.FilterDemo1</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>demo1</filter-name>
        <url-pattern>/*</url-pattern> <!-- 这里配置的是拦截路径 -->
    </filter-mapping>

哪里的/*是对所有的进行拦截操作。

  1. 拦截具体资源:index.jsp,表示只有访问该资源时对应的过滤器才会被执行
  2. 拦截目录:/dir/*,表示访问dir目录下的所有资源过滤器都会被执行
  3. 拦截后缀名:*.jsp,表示访问jsp资源时过滤器会被执行
  4. 拦截全部资源:/*,表示访问所有资源都会执行过滤器

原文地址:https://www.cnblogs.com/dazhi151/p/12398218.html