springBoot实现脏话屏蔽功能
Posted 蜜桃婷婷酱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springBoot实现脏话屏蔽功能相关的知识,希望对你有一定的参考价值。
springBoot实现脏话屏蔽功能(简易版)
有的时候在项目开发中,遇到用到对聊天,留言等文字进行扫描判断是否可以正常显示,也就是脏话屏蔽,举个例子:我打LOL的时候喷人的时候系统就不让我输出或者替换成星号,今天我们也做一个简易版的脏话屏蔽功能
1.写一个脏话屏蔽工具类
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Component
// 过滤路径,过滤器名称
@WebFilter(urlPatterns = "/*", filterName = "testFilter")
public class TestFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
// 过滤
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
// 获取request
HttpServletRequest request = (HttpServletRequest) servletRequest;
// 获取response
HttpServletResponse response = (HttpServletResponse) servletResponse;
// 创建脏话过滤规则
DirtyWordsHttpServletRequest dirtyWordsHttpServletRequest = new DirtyWordsHttpServletRequest(request);
// 执行
filterChain.doFilter(dirtyWordsHttpServletRequest, response);
}
@Override
public void destroy() {
}
// 内部类脏话过滤规则
class DirtyWordsHttpServletRequest extends HttpServletRequestWrapper {
// 脏话字典、可以直接搜索脏话字典,然后通过io流进行读取和过滤
private String[] words = {"傻", "滚", "死"};
// 构造方法
public DirtyWordsHttpServletRequest(HttpServletRequest request) {
super(request);
}
// 重写getParameter方法
@Override
public String getParameter(String name) {
// 获取传来的参数值
String value = super.getParameter(name);
// 判断
if (value == null) return "没有值";
// 执行脏话转换
for (String dword : words) {
if (value.contains(dword)) value = value.replace(dword, "**");
}
// 返回过滤有的值
return value;
}
}
}
2.在启动类开启注解注入bean全盘扫描脏话
@ServletComponentScan("com.wyh.unit.TestFilter")//开启脏话过滤
@org.springframework.boot.autoconfigure.SpringBootApplication
public class SpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootApplication.class, args);
}
}
3.写一个方法进行测试
@RequestMapping("/zanghua")
@ResponseBody
public String test(HttpServletRequest request) {
return request.getParameter("info");
}
4.查看效果
总结:其实还是比较简单的,不过我们这个就是简易版的,复杂一些的设计大量繁琐的算法推理,大家有什么补充的欢迎下面留言,晚安!
以上是关于springBoot实现脏话屏蔽功能的主要内容,如果未能解决你的问题,请参考以下文章
《Python实例》震惊了,用Python这么简单实现了聊天系统的脏话,广告检测