springboot实现脏话屏蔽功能
SpringBoot 实现 功能 屏蔽
2023-09-11 14:22:31 时间
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 info) {
// 获取传来的参数值
String value = super.getParameter(info);
// 判断
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+mybatis-plus实例demo
- springboot集成mybatis依赖,并且使用PageHelper实现分页效果
- SpringBoot中使用Easyexcel实现Excel导入导出功能(一)
- SpringBoot中使用Easyexcel实现Excel导入导出功能(二)
- SpringBoot中使用Easyexcel实现Excel导入导出功能(三)
- Springboot怎么实现restfult风格Api接口
- Springboot项目快速实现Aop功能
- 【项目实战】Springboot整合SCP,实现远程文件拷贝与传输功能
- 面试官:SpringBoot 中怎么样实现分布式锁
- 【SpringBoot14】SpringBoot中使用Session共享实现分布式部署
- 【springboot系列】Spring Boot 实现接口幂等性的 4 种方案
- SpringBoot + ShardingSphere 实现分库分表
- springBoot 简单优雅是实现文件上传和下载
- springboot中service层注入的是实现类,但Controller层接收的是接口
- springboot配置shiro多项目实现session共享的详细步骤
- 基于Java+SpringBoot+Thymeleaf点餐系统设计与实现
- 基于Java+SpringBoot+Vue前后端分离书店购书系统设计与实现(有视频教程)
- Springboot项目如何实现mybatis的流式查询
- Springboot怎么快速集成Redis?
- Springboot怎么实现WebSocket通信(一)
- Springboot怎么实现restfult风格Api接口
- SpringBoot中使用Easyexcel实现Excel导入导出功能(一)
- SpringBoot中使用Easyexcel实现Excel导入导出功能(二)
- SpringBoot中使用Easyexcel实现Excel导入导出功能(三)
- Springboot内置的工具类之StringUtils
- 【Spring Boot】SpringBoot 如何保证接口安全?老鸟们都是这么玩的!