春ブートフィルターを達成するには、3つの方法
- コメント@WebFilter使用
- @WebFilter共通の属性![ここに挿入した画像](https://img-blog.csdnimg.cn/20191212101153388.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0pzb25nTmV1,size_16,color_FFFFFF,t_70 )
- フィルターの実装
- 2つの構成ビーン
- 三FilterRegistrationBean(推奨)、あなたは、フィルタの順序を設定することができます
- 注意事項
コメント@WebFilter使用
クラスに書かれ@WebFilter
共通の属性@WebFilter
フィルターの実装
- 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() {
}
}
- コンフィギュレーション・クラスに追加@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 {
}
- フィルタ設定され、ときアクセスにhttp:// localhost:8080 /ブログ/テスト、コンソールが印刷されますフィルタ
2つの構成ビーン
- フィルタクラスを書くことが実装インタフェースは、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() {
}
}
- 豆の構成では、このクラスのフィルターをインスタンス化
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(推奨)、あなたは、フィルタの順序を設定することができます
- そして、同じようにについて、最初の実装インタフェースは、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() {
}
}
- フィルタ管理によってコンフィギュレーションクラスで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;
}
}
- bean.setOrder(1)最初の実行フィルタ配置された実行順序、小さいです
注意事項
これらのフィルタは、誤ったアドレスは、フィルタを介して要求されます2回以上行くかどうか、フィルタurlPartenを設定してください。
栗
ときurlPartenオフノート
でリクエストのメソッド内のdoFilterブレークポイント、
にhttp:// localhost:8080 /ブログ /テスト
- 最初のブレークポイントのURL /ブログ/テスト
- 2番目の要求URL /favicon.icoブレークポイントアイコンを通じてフィルタリングします