Três maneiras de conseguir o filtro Primavera Bota
- Use @WebFilter um comentário
- @WebFilter atributos comuns! [A inserir imagem aqui descrito] (https://img-blog.csdnimg.cn/20191212101153388.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0pzb25nTmV1,size_16,color_FFFFFF,t_70 )
- filtro de Implementação
- Duas configurações de feijão
- Três FilterRegistrationBean (recomendado), você pode configurar a ordem do filtro
- precauções
Use @WebFilter um comentário
@WebFilter escrito na classe
@WebFilter atributos comuns
filtro de Implementação
- Javax.servlet.Filter classe implementa filtro de gravação de uma interface, além de notas @WebFilter, não é possível definir a ordem de execução do filtro
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 adicionado na classe de configuração tem @Configuration também ser adicionado directamente à classe de partida
não @ServletComponentScan verificar automaticamente o pacote padrão onde o parâmetro de classe atual, o pacote pode ser designado de digitalização
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 {
}
- Filtro configurado, ao acessar http: // localhost: filtro Quando 8080 / blog / teste, o console será impresso
Duas configurações de feijão
- Escrever uma classe de filtro que implementa a interface 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() {
}
}
- Na configuração de feijão instanciar este filtro de classe
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();
}
}
Três FilterRegistrationBean (recomendado), você pode configurar a ordem do filtro
- E sobre o mesmo caminho, primeiro criar uma classe de filtro que implementa a interface javax.servlet.Filter
Nota Para escrever um comentário sobre classe @Component, esta classe para gerenciada por contêiner
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() {
}
}
- Na classe de configuração pela administração filtro 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); uma ordem de execução dispostas filtro, quanto menor for a primeira execução
precauções
Certifique-se de definir o filtro urlParten, se esses filtros vão duas ou mais vezes um endereço incorreto serão solicitados através do filtro.
castanhas
Quando a nota off urlParten
DoFilter break point no método, no pedido de
http: // localhost: 8080 / blog / test
- O primeiro ponto de interrupção url / blog / teste
- O segundo pedido url /favicon.ico breakpoint ícone, irá filtrar