`
daichangfu
  • 浏览: 264714 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java过滤敏感词,读配置文件/动态数据

    博客分类:
  • java
阅读更多
读取: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过滤敏感词"项目提供了一个自我实现的解决方案,帮助开发者实现在文本中检测并替换或移除敏感词汇。下面我们将深入探讨这个话题。 首先,我们需要了解什么是敏感词过滤。敏感词过滤是指在文本数据处理中,...

    java敏感词过滤(支持指定字段过滤)

    在Java开发中,敏感词过滤是一项重要的功能,尤其在处理用户输入、评论或者社交媒体内容时,需要确保不包含任何可能引发争议或不适当的内容。本项目适用于基于SSM(Spring、SpringMVC、MyBatis)和SpringBoot框架的...

    java。dfa算法实现敏感词过滤

    1. **初始化敏感词库**:首先,需要读取敏感词列表,如从配置文件、数据库或内存中加载。这些敏感词会被转换为DFA的状态图。 2. **构建DFA**:将敏感词转化为DFA的过程,通常涉及状态的创建、边的连接。这个过程可能...

    Java敏感词过滤Java敏感词过滤

    ### Java敏感词过滤技术解析 #### 一、概述 在互联网时代,为了维护网络环境的健康与安全,很多平台都需要对用户输入的信息进行敏感词过滤处理。敏感词过滤技术主要应用于论坛、博客、社交媒体等场景,用以检测并...

    基于Java语言的敏感词过滤服务设计源码

    该项目是一款基于Java语言的敏感词过滤服务设计源码,包含22个文件,主要由16个Java源文件、2个Markdown文档、1个Git忽略规则文件、1个开源协议文件、1个XML配置文件、1个YAML配置文件组成。该服务旨在提供高效的...

    WordFilterUtil_java_敏感词_

    在IT行业中,尤其是在文本处理和数据安全领域,敏感词过滤是一项重要的任务。"WordFilterUtil_java_敏感词_" 指...在使用时,需结合实际业务需求进行定制和优化,确保既能有效过滤敏感词,又能兼顾用户体验和隐私保护。

    DFA实例敏感词过滤实例,附带关键词文件

    在IT行业中,尤其是在文本处理和数据安全领域,敏感词过滤是一项重要的技术。在这个实例中,我们关注的是一个基于DFA(Deterministic Finite Automaton,确定有限状态自动机)的敏感词过滤系统,它用于检查并移除或...

    高效Java敏感词过滤系统AC自动机算法源码,支持独立部署与集成注册中心

    - 属性配置文件:2个 - IntelliJ IDEA项目文件:2个 - 列表文件:2个 - Maven命令脚本:1个(SensitiveWords/mvnw) 系统特色功能: - 敏感词组合匹配机制,确保高效过滤; - 独立后台管理,实现敏感词的增删查功能...

    springBoot-java敏感词语过滤类

    这个"springBoot-java敏感词语过滤类"是一个实用的工具类,用于帮助开发者实现在Java环境中对用户输入或者系统文本进行安全审查,防止不适当、非法或者有害的信息传播。这个工具类通常会包含一系列的方法,用于匹配...

    Java DFA算法实现敏感词、广告词过滤源码(导入即可用)

    在过滤敏感词或广告词时,DFA会根据输入的字符序列在状态之间移动,如果序列与敏感词完全匹配,则认为检测到了敏感内容。 在这个Java实现中,`sensitivewd-filter`可能是项目的核心库,包含实现DFA的关键类和方法。...

    java防sql注入攻击过滤器

    2. **配置Filter**:在web.xml文件中,我们需要定义这个过滤器,指定其类名以及需要应用的URL模式。例如,如果所有的HTTP请求都需要经过SQL注入过滤,可以配置如下: ```xml &lt;filter-name&gt;SqlInjectionFilter&lt;/...

    java违禁词过滤 .rar

    - 违禁词库应该易于更新和扩展,可能通过配置文件(如.properties或.xml)来加载,使得在运行时能够动态修改。 - 可能提供接口,允许用户自定义过滤规则或添加自己的违禁词。 8. **应用范围**: - 这种工具广泛...

    敏感词抽取Java,直接可运行

    【标题】"敏感词抽取Java,直接可运行" 涉及的核心技术是Java编程语言...通过理解和实践这个项目,开发者可以学习到Java编程、数据结构、算法以及文本处理等相关知识,并且能掌握如何在实际应用场景中实施敏感词过滤。

    替换敏感词的留言板加filter 和不加filter两种方案

    同时,通过配置`web.xml`文件,可以方便地开启或关闭过滤功能,或者调整过滤策略。然而,这种方法可能会影响请求处理的效率,因为多了一层拦截和处理。 无论是哪种方案,都需要对敏感词列表进行管理,确保其时效性...

    基于Java语言开发的敏感词检测工具设计源码

    该项目是一款基于Java语言构建的敏感词检测工具源码,包含39个文件,其中包括15个Java源文件、11个GIF图片文件、5个JSP页面文件、3个XML配置文件、2个Markdown文件、1个Git忽略文件、1个YAML文件、1个数据库文件和1...

    基于Java过滤器实现的系统权限控制方法研究.pdf

    使用过滤器技术,将敏感词以配置文件形式作为过滤器参数,在用户提交数据时进行检测,发现问题内容及时丢弃,可以从源头上避免敏感词等脏数据进入系统。 * 系统权限控制:Web 应用用户角色复杂,页面非常多,在每个...

    基于树莓派和Java的实时敏感词识别系统设计源码

    本实时敏感词识别系统项目基于树莓派和Java开发,包含98个文件,其中36个Java文件,31个XML文件,以及其他相关配置和资源文件。系统利用Python脚本辅助,实现对敏感词的实时识别,并立即提供反馈。用户可通过配套的...

    基于HTML语言的敏感词处理与过滤设计源码

    本项目为基于HTML语言的敏感词处理与过滤系统设计源码,包含118个文件,涵盖55个Java源文件、22个HTML文件、11个XML文件、5个JavaScript文件、5个CSS样式文件及少量图片、配置、脚本和文档文件。该系统利用Java、...

    基于Java的UGC内容过滤架构源码:DFA与贝叶斯学习

    - 文件构成:43个Java源文件,6个XML配置文件,2个Markdown文档,2个properties配置文件,以及其他辅助文件 - 敏感词处理:采用DFA(确定性有限自动机)算法高效处理 - 学习算法:计划使用贝叶斯思想进行机器学习...

    TestFliter.zip

    - **准确性**:确保正确识别和过滤敏感词,减少误报和漏报。 - **安全性**:处理敏感信息时要确保数据安全,避免信息泄露。 - **扩展性**:应能适应不同的应用场景和需求,如支持多种类型的敏感信息。 6. **使用...

Global site tag (gtag.js) - Google Analytics