当前位置: 代码网 > it编程>编程语言>Java > SpringBoot实现敏感词过滤功能示例

SpringBoot实现敏感词过滤功能示例

2025年11月28日 Java 我要评论
要在spring boot中实现敏感词过滤功能,可以使用一些现有的java库来处理敏感词过滤,例如,可以使用 ansj 中文分词库或者使用一些其他开源的敏感词过滤库。以下是一个使用 ansj 实现敏感

要在spring boot中实现敏感词过滤功能,可以使用一些现有的java库来处理敏感词过滤,例如,可以使用 ansj 中文分词库或者使用一些其他开源的敏感词过滤库。以下是一个使用 ansj 实现敏感词过滤的简单示例。

1. 首先,在 pom.xml 文件中添加依赖:

<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/pom/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
         xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelversion>4.0.0</modelversion>

    <groupid>cn.cjc.demo</groupid>
    <artifactid>testdemo</artifactid>
    <version>1.0-snapshot</version>

    <parent>
        <groupid>org.springframework.boot</groupid>
        <artifactid>spring-boot-starter-parent</artifactid>
        <version>2.6.6</version>
        <relativepath />
    </parent>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceencoding>utf-8</project.build.sourceencoding>
    </properties>

    <dependencies>
        <dependency>
            <groupid>org.ansj</groupid>
            <artifactid>ansj_seg</artifactid>
            <version>5.1.2</version>
        </dependency>

    </dependencies>
    <repositories>
        <repository>
            <id>public</id>
            <name>aliyun nexus</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>
</project>

2. 在 application.yaml 文件中添加配置:

sensitive:
  word:
    file-path: classpath:sensitive-words.txt

spring:
  main:
    allow-bean-definition-overriding: true

3. 在类路径下创建一个名为 sensitive-words.txt 的文件,其中包含敏感词列表,每个词占一行。

4. 配置 sensitivewordfilter 过滤器的 bean。在 spring boot 应用配置类中添加以下配置:

package cn.cjc.config;

import org.springframework.context.annotation.bean;
import org.springframework.context.annotation.configuration;

@configuration
public class sensitiveconfig {

    @bean
    public sensitivewordfilter sensitivewordfilter() {
        return new sensitivewordfilter();
    }
}

这样,spring 容器会自动创建 sensitivewordfilter 的实例,并且注入所需的敏感词文件路径。在服务类或控制器中,可以通过 @autowired 注解来注入 sensitivewordfilter。

然后,创建一个敏感词过滤的工具类,例如 sensitivewordfilter.java:

package cn.cjc.config;

import org.ansj.domain.term;
import org.ansj.splitword.analysis.toanalysis;
import org.springframework.beans.factory.annotation.value;
import org.springframework.core.io.resource;
import org.springframework.stereotype.component;
import org.springframework.util.filecopyutils;

import javax.annotation.postconstruct;
import java.io.ioexception;
import java.util.hashset;
import java.util.list;
import java.util.set;

@component
public class sensitivewordfilter {

    @value("${sensitive.word.file-path}")
    private resource sensitivewordfile;

    private set<string> sensitivewords;

    @postconstruct
    public void init() {
        this.sensitivewords = loadsensitivewords();
    }

    private set<string> loadsensitivewords() {
        set<string> words = new hashset<>();
        try {
            // 从敏感词文件中加载敏感词
            string content = new string(filecopyutils.copytobytearray(sensitivewordfile.getinputstream()), "utf-8");
            string[] wordarray = content.split("\n");
            for (string word : wordarray) {
                words.add(word.trim());
            }
        } catch (ioexception e) {
            e.printstacktrace();
        }
        return words;
    }

    public string filtersensitivewords(string input) {
        list<term> terms = toanalysis.parse(input).getterms();
        stringbuilder filteredtext = new stringbuilder(input);
        for (term term : terms) {
            if (sensitivewords.contains(term.getname())) {
                // 将敏感词替换为*
                replacesensitiveword(filteredtext, term.getname());
            }
        }
        return filteredtext.tostring();
    }

    private void replacesensitiveword(stringbuilder text, string sensitiveword) {
        int index = text.indexof(sensitiveword);
        while (index != -1) {
            text.replace(index, index + sensitiveword.length(), "*");
            index = text.indexof(sensitiveword, index + 1);
        }
    }
}

5. 在服务类或控制器中使用 sensitivewordfilter 进行敏感词过滤:

package cn.cjc.controller;

import cn.cjc.config.sensitivewordfilter;
import org.springframework.web.bind.annotation.postmapping;
import org.springframework.web.bind.annotation.requestparam;
import org.springframework.web.bind.annotation.restcontroller;

import javax.annotation.resource;

@restcontroller
public class testcontroller {

    @resource
    private sensitivewordfilter sensitivewordfilter;

    @postmapping("/filter")
    public string filtersensitivewords(@requestparam string input) {
        return sensitivewordfilter.filtersensitivewords(input);
    }
}

这只是一个简单的敏感词过滤的实现示例。在实际应用中,可能需要更复杂的算法或结合其他库来进行更全面的敏感词过滤。

到此这篇关于springboot实现敏感词过滤功能示例的文章就介绍到这了,更多相关springboot 敏感词过滤内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com