springboot專案結合filter,jdk代理實現敏感詞過濾(簡單版)
我們對getParameter()這個方法得到的引數進行敏感詞過濾。
實現思路:利用過濾器攔截所有的路徑請求同時在在過濾器執行的時候對getParameter得到的value值進行過濾。最後呢,到我們自己的實現的邏輯中呢?這個value值就被我們做過處理了。
1:自定義的過濾配置檔案
把檔案位置放在resource下的static目錄下,內容如下
2:編寫我們的過濾器
遇到的問題:拿取不到resource/static/sensitive.txt檔案。好在解決了哈哈哈哈哈哈看程式碼吧!!!!
jdk代理的知識
@WebFilter("/*")
public class filtersensitive implements Filter {
ArrayList<String> list = new ArrayList<String>();
// 這種寫法會報錯,我也是醉了
// @Value("classpath:static/sensitive.txt")
// private Resource resource;
/**
* @param
* @method 初始化我們的過濾詞的配置
*/
@Override
public void init(FilterConfig filterConfig) throws ServletException {
try {
String line;
//讀取我們的過濾配置檔案
File resource = ResourceUtils.getFile("classpath:static/sensitive.txt");
BufferedReader sensitivewords = new BufferedReader(new FileReader(resource));
//把讀取到的資訊,存放到list中
while ((line = sensitivewords.readLine()) != null) {
list.add(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @param
* @method 這裡只針對request中的getParameter方法進行敏感詞過濾
*/
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) servletRequest;
HttpServletResponse resp = (HttpServletResponse) servletResponse;
//jdk動態代理的使用,我寫過這個的文章哦
HttpServletRequest request = (HttpServletRequest) Proxy.newProxyInstance(
req.getClass().getClassLoader(),
req.getClass().getInterfaces(),
new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//攔截getParameter方法
if ("getParameter".equals(method.getName())) {
//呼叫getParameter方法的到value
String values = (String) method.invoke(req, args);
//如果有getParameter的呼叫,則會進行過濾並且返回經過處理的返回值,其他的直接放行
if (values != null) {
//與我們初始化的list比較是否要過濾
for (String s : list) {
if (values.contains(s)) {
values = values.replaceAll(s, "*");
System.out.println("過濾成功");
}
}
}
return values;
} else {
return method.invoke(req, args);
}
}
});
//放行
filterChain.doFilter(request, resp);
}
@Override
public void destroy() {
}
}
3:註冊過濾器
emmmm以前就是老是忘記註冊了,哈哈哈哈哈哈最後氣的半死
@Configuration
public class filterConfig {
/**
* @param
* @method 註冊攔截器
*/
@Bean
public FilterRegistrationBean addMyFilter() {
filtersensitive filterSensitive = new filtersensitive();
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(filterSensitive);
filterRegistrationBean.addUrlPatterns("/*");
return filterRegistrationBean;
}
}
4:測試
emmm我們在這裡寫個爸爸哈哈哈哈
完了爸爸被遮蔽了,包括兒子,媽媽都是這樣了,一家子整整齊齊的哈哈哈哈哈哈
相關文章
- JavaWeb - 【Filter】敏感詞過濾JavaWebFilter
- 教你如何實現Python 過濾敏感詞Python
- js實現敏感詞過濾演算法JS演算法
- 用laravel框架實現敏感詞彙過濾功能Laravel框架
- DFA在C#中的實現:過濾敏感詞C#
- 基於PHP + TRIE樹實現敏感詞過濾演算法PHP演算法
- 開源了一個 JavaScript 版敏感詞過濾庫JavaScript
- JavaScript評論敏感詞過濾程式碼JavaScript
- java中listFiles(Filefilter filter)檔案過濾器的實現過程JavaFilter過濾器
- Safari網頁敏感文字過濾外掛:Profanity Filter for Mac網頁FilterMac
- JAVA使用DFA演算法過濾敏感詞Java演算法
- 使用filter_var()過濾表單,實現laravel登入介面FilterLaravel
- 高效的關鍵詞替換和敏感詞過濾工具
- 在 SpringBoot 專案中簡單實現 JWT 驗證Spring BootJWT
- 過濾或者查詢敏感詞(DFA 演算法)演算法
- DFA演算法之內容敏感詞過濾演算法
- filter過濾Filter
- 【面試被虐】說說遊戲中的敏感詞過濾是如何實現的?面試遊戲
- springboot簡單的專案Spring Boot
- 敏感詞庫專案 Sensitive-lexicon
- Filter過濾器Filter過濾器
- SpringBoot+Shiro學習(七):Filter過濾器管理Spring BootFilter過濾器
- Spring Cloud Gateway 實現簡單自定義過濾器SpringCloudGateway過濾器
- Idea intellij jdk 1.7通過maven建立Springboot專案IdeaIntelliJJDKMavenSpring Boot
- PHP 過濾器(Filter)PHP過濾器Filter
- 讀寫分離很難嗎?springboot結合aop簡單就實現了Spring Boot
- PbootCMS設定當前站點模板,模板子目錄,黑白名單,敏感詞過濾等boot
- 從零手寫實現 tomcat-11-filter 過濾器TomcatFilter過濾器
- Nginx透過https方式反向代理的簡單實現NginxHTTP
- vue入門 vue基礎之簡單使用4--過濾器(Filter)Vue過濾器Filter
- 利用 Redis 的 bitmap 實現簡單的布隆過濾器Redis過濾器
- JavaWeb 中 Filter過濾器JavaWebFilter過濾器
- Elasticsearch——filter過濾查詢ElasticsearchFilter
- Filter過濾器的使用Filter過濾器
- SpringBoot實現過濾器、攔截器與切片Spring Boot過濾器
- python實現簡單猜單詞遊戲Python遊戲
- springboot結合Redis實現工具類Spring BootRedis
- 【SpringBoot】結合Redis實現快取Spring BootRedis快取