读取: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();
分享到:
相关推荐
这个"JAVA过滤敏感词"项目提供了一个自我实现的解决方案,帮助开发者实现在文本中检测并替换或移除敏感词汇。下面我们将深入探讨这个话题。 首先,我们需要了解什么是敏感词过滤。敏感词过滤是指在文本数据处理中,...
在Java开发中,敏感词过滤是一项重要的功能,尤其在处理用户输入、评论或者社交媒体内容时,需要确保不包含任何可能引发争议或不适当的内容。本项目适用于基于SSM(Spring、SpringMVC、MyBatis)和SpringBoot框架的...
1. **初始化敏感词库**:首先,需要读取敏感词列表,如从配置文件、数据库或内存中加载。这些敏感词会被转换为DFA的状态图。 2. **构建DFA**:将敏感词转化为DFA的过程,通常涉及状态的创建、边的连接。这个过程可能...
### Java敏感词过滤技术解析 #### 一、概述 在互联网时代,为了维护网络环境的健康与安全,很多平台都需要对用户输入的信息进行敏感词过滤处理。敏感词过滤技术主要应用于论坛、博客、社交媒体等场景,用以检测并...
该项目是一款基于Java语言的敏感词过滤服务设计源码,包含22个文件,主要由16个Java源文件、2个Markdown文档、1个Git忽略规则文件、1个开源协议文件、1个XML配置文件、1个YAML配置文件组成。该服务旨在提供高效的...
在IT行业中,尤其是在文本处理和数据安全领域,敏感词过滤是一项重要的任务。"WordFilterUtil_java_敏感词_" 指...在使用时,需结合实际业务需求进行定制和优化,确保既能有效过滤敏感词,又能兼顾用户体验和隐私保护。
在IT行业中,尤其是在文本处理和数据安全领域,敏感词过滤是一项重要的技术。在这个实例中,我们关注的是一个基于DFA(Deterministic Finite Automaton,确定有限状态自动机)的敏感词过滤系统,它用于检查并移除或...
- 属性配置文件:2个 - IntelliJ IDEA项目文件:2个 - 列表文件:2个 - Maven命令脚本:1个(SensitiveWords/mvnw) 系统特色功能: - 敏感词组合匹配机制,确保高效过滤; - 独立后台管理,实现敏感词的增删查功能...
这个"springBoot-java敏感词语过滤类"是一个实用的工具类,用于帮助开发者实现在Java环境中对用户输入或者系统文本进行安全审查,防止不适当、非法或者有害的信息传播。这个工具类通常会包含一系列的方法,用于匹配...
在过滤敏感词或广告词时,DFA会根据输入的字符序列在状态之间移动,如果序列与敏感词完全匹配,则认为检测到了敏感内容。 在这个Java实现中,`sensitivewd-filter`可能是项目的核心库,包含实现DFA的关键类和方法。...
2. **配置Filter**:在web.xml文件中,我们需要定义这个过滤器,指定其类名以及需要应用的URL模式。例如,如果所有的HTTP请求都需要经过SQL注入过滤,可以配置如下: ```xml <filter-name>SqlInjectionFilter</...
- 违禁词库应该易于更新和扩展,可能通过配置文件(如.properties或.xml)来加载,使得在运行时能够动态修改。 - 可能提供接口,允许用户自定义过滤规则或添加自己的违禁词。 8. **应用范围**: - 这种工具广泛...
【标题】"敏感词抽取Java,直接可运行" 涉及的核心技术是Java编程语言...通过理解和实践这个项目,开发者可以学习到Java编程、数据结构、算法以及文本处理等相关知识,并且能掌握如何在实际应用场景中实施敏感词过滤。
同时,通过配置`web.xml`文件,可以方便地开启或关闭过滤功能,或者调整过滤策略。然而,这种方法可能会影响请求处理的效率,因为多了一层拦截和处理。 无论是哪种方案,都需要对敏感词列表进行管理,确保其时效性...
该项目是一款基于Java语言构建的敏感词检测工具源码,包含39个文件,其中包括15个Java源文件、11个GIF图片文件、5个JSP页面文件、3个XML配置文件、2个Markdown文件、1个Git忽略文件、1个YAML文件、1个数据库文件和1...
使用过滤器技术,将敏感词以配置文件形式作为过滤器参数,在用户提交数据时进行检测,发现问题内容及时丢弃,可以从源头上避免敏感词等脏数据进入系统。 * 系统权限控制:Web 应用用户角色复杂,页面非常多,在每个...
本实时敏感词识别系统项目基于树莓派和Java开发,包含98个文件,其中36个Java文件,31个XML文件,以及其他相关配置和资源文件。系统利用Python脚本辅助,实现对敏感词的实时识别,并立即提供反馈。用户可通过配套的...
本项目为基于HTML语言的敏感词处理与过滤系统设计源码,包含118个文件,涵盖55个Java源文件、22个HTML文件、11个XML文件、5个JavaScript文件、5个CSS样式文件及少量图片、配置、脚本和文档文件。该系统利用Java、...
- 文件构成:43个Java源文件,6个XML配置文件,2个Markdown文档,2个properties配置文件,以及其他辅助文件 - 敏感词处理:采用DFA(确定性有限自动机)算法高效处理 - 学习算法:计划使用贝叶斯思想进行机器学习...
- **准确性**:确保正确识别和过滤敏感词,减少误报和漏报。 - **安全性**:处理敏感信息时要确保数据安全,避免信息泄露。 - **扩展性**:应能适应不同的应用场景和需求,如支持多种类型的敏感信息。 6. **使用...