更新時(shí)間:2021-11-15 10:35:23 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1731次
SpringBoot自動(dòng)添加了OrderedCharacterEncodingFilter和HiddenHttpMethodFilter,當(dāng)然我們可以自定義Filter。
自定義Filter需要兩個(gè)步驟:
實(shí)現(xiàn)Filter【javax.servlet.Filter】接口,實(shí)現(xiàn)Filter方法
添加 @Configuration 注解,將自定義Filter加入過濾鏈
【過濾打印請(qǐng)求URL】實(shí)例代碼如下:
package xatu.zsl.Filter;
import org.apache.catalina.filters.RemoteIpFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
* Created by zsl on 2017/9/3.
*/
@Configuration
public class ConfigurationFilter {
@Bean
public RemoteIpFilter remoteIpFilter() {
return new RemoteIpFilter();
}
@Bean
public FilterRegistrationBean testFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new MyFilter());//添加過濾器
registration.addUrlPatterns("/*");//設(shè)置過濾路徑,/*所有路徑
registration.addInitParameter("name", "alue");//添加默認(rèn)參數(shù)
registration.setName("MyFilter");//設(shè)置優(yōu)先級(jí)
registration.setOrder(1);//設(shè)置優(yōu)先級(jí)
return registration;
}
public class MyFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain
filterChain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) srequest;
//打印請(qǐng)求Url
System.out.println("this is MyFilter,url :" + request.getRequestURI());
filterChain.doFilter(srequest, sresponse);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
}
在Controller中獲取剛才ConfigurationFilter中【registration.addInitParameter(“name”, “alue”);//添加默認(rèn)參數(shù)】這個(gè)設(shè)置的參數(shù)。
在Controller中加入如下代碼就能獲取(剛才【testFilterRegistration()】方法加了注解@Bean,所以Spring容器中會(huì)有一個(gè)實(shí)例, @Autowired就理所應(yīng)當(dāng)?shù)淖⑷脒M(jìn)來了。)
@Autowired
FilterRegistrationBean registration;
@GetMapping("/getname")
public Map<String, String> getName() {
Map<String, String> initParameters = registration.getInitParameters();
return initParameters;
}
以上就是關(guān)于“用SpringBoot自定義Filter的方法”的介紹,如果大家比較感興趣,想了解更多相關(guān)知識(shí),可以關(guān)注一下動(dòng)力節(jié)點(diǎn)的Filter教程,課程內(nèi)容詳細(xì),適合小白學(xué)習(xí),相信對(duì)大家的學(xué)習(xí)會(huì)有所幫助。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743