读取:properties 配置文件
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Properties;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class KeyWordFilter {
private static Pattern pattern = null;
static {
StringBuffer patternBuf = new StringBuffer();
try {
InputStream in = KeyWordFilter.class.getClassLoader().getResourceAsStream("words.properties");
Properties properties = new Properties();
properties.load(in);
Enumeration<?> enu = properties.propertyNames();
while (enu.hasMoreElements()) {
patternBuf.append((String) enu.nextElement() + "|"); //读取所有properties里的词,以 | 分隔
}
patternBuf.deleteCharAt(patternBuf.length() - 1);
//默认下,properties文件读取编码: ISO8859-1
pattern = Pattern.compile(new String(patternBuf.toString().getBytes("ISO8859-1"), "UTF-8"));
} catch (IOException e) {
e.printStackTrace();
}
}
public static String doFilter(String str) {
System.out.println("str:" + str);
try {
Matcher m = pattern.matcher(str);
str = m.replaceAll("**");
} catch (Exception e) {
e.printStackTrace();
}
return str;
}
}
读取数据库
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.shangde.edu.dis.domain.DisWord;
import com.shangde.edu.dis.service.IDisWord;
/**
* 过滤敏感词
* @author changfu.dai
*
*/
public class KeyWordFilter {
private IDisWord disWordService;
private static KeyWordFilter instance = null ;
private StringBuffer patternBuf = null;
private Pattern pattern = null;
public static KeyWordFilter getInstance(IDisWord disWordService) {
if (instance == null) {
instance = new KeyWordFilter(disWordService);
}
return instance;
}
/**
* 更新数据时重新new敏感词过滤对象
*/
public void init(){
creatKeyWords();
}
/**
* 从数据库初始化正则表达式字符串
* @param disWordService 敏感词实现对象
*/
public KeyWordFilter(IDisWord disWordService){
this.disWordService = disWordService;
init();
}
/**
* 创建和更新关键词正则表达式
*/
private void creatKeyWords(){
patternBuf = new StringBuffer("");
List<DisWord> dwList = disWordService.getAllDisWord();
if(dwList.size()>0){
patternBuf.append("(");
for (DisWord word : dwList) {
patternBuf.append(word.getWord()+"|");
}
patternBuf.deleteCharAt(patternBuf.length() - 1);
patternBuf.append(")");
pattern = Pattern.compile(new String(patternBuf.toString().getBytes()));
}else{
pattern = null;
}
}
/**
* 过滤敏感词
* @param str 要过滤的字符串
* @return 过滤后的字符串
*/
public String doFilter(String str) {
if(pattern!=null&&str!=null){
Matcher m = pattern.matcher(str);
str = m.replaceAll("**");
}
return str;
}
}
/*读取数据库的使用方法,使用了 spring 注入*/
//敏感词service action注入
private IDisWord disWordService;
public void setDisWordService(IDisWord disWordService) {
this.disWordService = disWordService;
}
//方法中调用
//参数:敏感词service对象
KeyWordFilter kw = KeyWordFilter.getInstance(disWordService);
//str过滤后的内容;content要过滤的内容
String str = kw.doFilter(content);
//对敏感词增加或删除时调用 创建最新的单例对象
KeyWordFilter.getInstance(disWordService).init();
分享到:
相关推荐
- 属性配置文件:2个 - IntelliJ IDEA项目文件:2个 - 列表文件:2个 - Maven命令脚本:1个(SensitiveWords/mvnw) 系统特色功能: - 敏感词组合匹配机制,确保高效过滤; - 独立后台管理,实现敏感词的增删查功能...
本实时敏感词识别系统项目基于树莓派和Java开发,包含98个文件,其中36个Java文件,31个XML文件,以及其他相关配置和资源文件。系统利用Python脚本辅助,实现对敏感词的实时识别,并立即提供反馈。用户可通过配套的...
- 文件构成:43个Java源文件,6个XML配置文件,2个Markdown文档,2个properties配置文件,以及其他辅助文件 - 敏感词处理:采用DFA(确定性有限自动机)算法高效处理 - 学习算法:计划使用贝叶斯思想进行机器学习...
Schedule 3 -新增发表问题功能,并防止xss注入以及敏感词过滤 Schedule 4 -新增评论和站内信功能 Schedule 5 -新增点赞和点踩功能,使用Redis实现 Schedule 6 -新增异步消息功能 新增邮件发送组件 Schedule 7 -...
Schedule 3 -新增发表问题功能,并防止xss注入以及敏感词过滤 Schedule 4 -新增评论和站内信功能 Schedule 5 -新增点赞和点踩功能,使用Redis实现 Schedule 6 -新增异步消息功能 新增邮件发送组件 Schedule 7 -...
敏感词过滤 代码生成 文件系统 在线预览文件 邮件服务 爬虫 代码生成插件 ##代码即文档## 使用 swagger <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> ${swagger.version}</...
* 敏感词的过滤 * 在线编辑html页面 * 邮件回复 # 覆盖的知识点 * SpringBoot * Mybatis * Netty * dropzone * aplayer音乐播放器 * DFA算法 * Pjax * Thymleaf * Spring mail * Redis * Spring 拦截器 ## 项目备注 ...
- 违禁关键词、敏感词过滤设置 - 增加定时任务管理,通过后台设置启动、关闭,执行任务日志 #### 二次开发准备 1. 开发环境要在IDE里装上lombok插件,否则编译器会报错 2. 程序部署建议使用Maven的assembly插件...
站内搜索、栏目管理、视频播放(完全模仿优酷视频页面)、焦点图、静态页面生成(新浪、搜狐等大型网站普遍采用的技术)、文章管理、无刷新评论、评论的无刷新分页、敏感词过滤、用户管理、友情链接管理、缓存管理、...
Kotlin是高效、安全的开发语言,100%兼容Java,编译后依旧是class文件,依旧运行在JDK中,无需依赖任何其它环境。Kotlin和Java可以相互调用,开发时可以Java、Kotlin混搭,并不需要全部都用Kotlin。在Android中...