春ブートフィルターを達成するには、3つの方法

コメント@WebFilter使用

クラスに書かれ@WebFilter

共通の属性@WebFilterここに画像を挿入説明

フィルターの実装

  1. javax.servlet.Filter書き込みフィルタクラスが実装インタフェース、プラス@WebFilterノートには、フィルタの実行順序を設定することはできません
package com.jsong.wiki.blog.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@WebFilter(filterName = "testfilter",urlPatterns ={"/blog/*"})
public class AnnotatedRequestFitler implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.printf("filter");
        filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {

    }
}

  1. コンフィギュレーション・クラスに追加@ServletComponentScan @Configurationも直接起動クラスに追加されました

自動的に現在のクラス・パラメータは、パケットをスキャン指定できるデフォルトのパケットをスキャンしない@ServletComponentScan

package com.jsong.wiki.blog.filter;

import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.annotation.Configuration;

@ServletComponentScan(value = "com.jsong.wiki.blog.filter")
@Configuration
public class TestConfig {
}

  1. フィルタ設定され、ときアクセスにhttp:// localhost:8080 /ブログ/テスト、コンソールが印刷されますフィルタ

2つの構成ビーン

  1. フィルタクラスを書くことが実装インタフェースは、javax.servlet.Filter
package com.jsong.wiki.blog.filter;

import org.springframework.stereotype.Component;

import javax.servlet.*;
import java.io.IOException;

public class RequestFilter implements Filter {


    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.printf("hello");
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {

    }
}

  1. 豆の構成では、このクラスのフィルターをインスタンス化
package com.jsong.wiki.blog.config;

import com.jsong.wiki.blog.filter.RequestFilter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.servlet.Filter;

@Configuration
public class FilterConfig {

    @Bean
    public Filter registerRequestFilter() {
        return new RequestFilter();
    }
}

三FilterRegistrationBean(推奨)、あなたは、フィルタの順序を設定することができます

  1. そして、同じようにについて、最初の実装インタフェースは、javax.servlet.Filterというフィルタクラスの作成
    コンテナ管理に注意が@Componentクラスにコメントを書き込むには、このクラスを
package com.jsong.wiki.blog.filter;

import org.springframework.stereotype.Component;

import javax.servlet.*;
import java.io.IOException;

@Component
public class RequestFilter implements Filter {


    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.printf("hello");
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {

    }
}

  1. フィルタ管理によってコンフィギュレーションクラスでFilterRegistrationBean
package com.jsong.wiki.blog.config;

import com.jsong.wiki.blog.filter.RequestFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.servlet.Filter;

@Configuration
public class FilterConfig {

//    @Bean
//    public Filter registerRequestFilter() {
//        return new RequestFilter();
//    }

    @Bean
    public FilterRegistrationBean registration(RequestFilter filter) {
        FilterRegistrationBean bean = new FilterRegistrationBean(filter);
        bean.addUrlPatterns("/blog/*");
        // 排序
        bean.setOrder(1);
        return bean;
    }
}

  1. bean.setOrder(1)最初の実行フィルタ配置された実行順序、小さいです

注意事項

これらのフィルタは、誤ったアドレスは、フィルタを介して要求されます2回以上行くかどうか、フィルタurlPartenを設定してください。

ときurlPartenオフノート

でリクエストのメソッド内のdoFilterブレークポイント、
にhttp:// localhost:8080 /ブログ /テスト

  • 最初のブレークポイントのURL /ブログ/テスト
    ここに画像を挿入説明
  • 2番目の要求URL /favicon.icoブレークポイントアイコンを通じてフィルタリングします
    ここに画像を挿入説明
公開された83元の記事 ウォン称賛21 ビュー50000 +

おすすめ

転載: blog.csdn.net/JsongNeu/article/details/103503971