对于java servlet而言论坛敏感语言的过滤可以用自己的过滤器实现:
就是用别的字来替代敏感字就行了,实现方法如下,如果有更好的方法,希望各位路过的
大神能指点指点
首先继承HttpServletRequestWrapper类,重写父类方法,
对于其中的 public String getParameter和 public String getParameterValue进行重写
因为后台代码就是根据这两个的方法和前台的数据进行交互的。
自己还可以再写一个replace,进行敏感字的过滤。
方法如下:
public String replace(String str) {
StringBuffer sb = new StringBuffer(str);
Set<String> keys = this.getMap().keySet();
Iterator<String> it = keys.iterator();
String ss = null;
while (it.hasNext()) {
String key = it.next();
System.out.println("key=" + key);
int index = sb.indexOf(key);
System.out.println("index=" + index);
if (index != -1) {
if (key != null) {
ss = key;
}
sb.replace(index, index + key.length(), this.getMap().get(key));
}
}
System.out.println("ss=" + ss);
System.out.println("过滤后的content=" + sb.toString());
if (ss != null) {
if (sb.toString().indexOf(ss) == -1) {
return sb.toString();
} else {
System.out.println("进来了!");
return replace(sb.toString());
}
}
return sb.toString();
}
代码中的Map是敏感字:
可以把敏感字编辑在文件中
如图:
然后在自己的过滤器中重构request对象,这样就可以进行敏感字过滤了
具体代码如下:
web.xml配置如下:
<filter>
<filter-name>WordsFilter</filter-name>
<filter-class>com.fyz.****.WordsFilter</filter-class>
<init-param>
<param-name>filePath</param-name>
<param-value>/WEB-INF/word.txt</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>WordsFilter</filter-name>
<url-pattern>/checkLogin_Note</url-pattern>
</filter-mapping>
重构的request:
package com.fyz.***.wrapper;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
public class HttpReqWrapper extends HttpServletRequestWrapper {
private Map<String, String> map = null;
public HttpReqWrapper(HttpServletRequest request) {
super(request);
}
//过滤脏话
public String replace(String str) {
StringBuffer sb = new StringBuffer(str);
Set<String> keys = this.getMap().keySet();
Iterator<String> it = keys.iterator();
String ss = null;
while (it.hasNext()) {
String key = it.next();
System.out.println("key=" + key);
int index = sb.indexOf(key);
System.out.println("index=" + index);
if (index != -1) {
if (key != null) {
ss = key;
}
sb.replace(index, index + key.length(), this.getMap().get(key));
}
}
System.out.println("ss=" + ss);
System.out.println("过滤后的content=" + sb.toString());
if (ss != null) {
if (sb.toString().indexOf(ss) == -1) {
return sb.toString();
} else {
System.out.println("进来了!");
return replace(sb.toString());
}
}
return sb.toString();
}
// 重写getParameter()方法
public String getParameter(String str) {
String content = super.getParameter(str);
System.out.println("还没过滤的content=" + content);
return replace(content);
}
public Map<String, String> getMap() {
return map;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
}
自己的过滤器:
package com.fyz.***..filter;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import com.lovo.cq.shoppingbook.wrapper.HttpReqWrapper;
public class WordsFilter implements Filter {
private Map<String, String> map = new HashMap<String, String>();
//过滤器的初始化
public void init(FilterConfig config) throws ServletException {
String filePath = config.getInitParameter("filePath");//从配置文件中取得文件的相对路径
ServletContext context = config.getServletContext();
String realPath = context.getRealPath(filePath);//根据相对路径取得绝对路径
try {
FileReader freader = new FileReader(realPath);//根据绝对路径,通过文件流来读取文件
BufferedReader br = new BufferedReader(freader);
String line = null;
while ((line = br.readLine()) != null) {
String[] str = line.split("=");
map.put(str[0], str[1]);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//乱码处理
request.setCharacterEncoding("gb2312");
response.setContentType("text/html;charset=gb2312");
HttpServletRequest HttpReq = (HttpServletRequest) request;
HttpReqWrapper hrw = new HttpReqWrapper(HttpReq);
hrw.setMap(map);
chain.doFilter(hrw, response);
}
public void destroy() {
System.out.println("--过滤器的销毁--");
}
}
本文中的乱码处理的不够详细,具体的乱码处理,可以一并在request的重写方法中
public String getParameter和 public String getParameterValue进行重写
然后如果想进行压缩流处理(本人的压缩流理论没有问题,但是问题还是你看前面的博客吧),
请看前面的博客
- 大小: 6 KB
分享到:
相关推荐
在描述中提到的过滤关键字列表是一种常见的方法,用于限制或阻止这些潜在危险的字符或词汇。 在ASP.NET中实现敏感关键字过滤,开发者通常会创建一个包含一系列敏感词的数组或集合,然后在用户输入数据进行处理前,...
C#敏感字过滤源码,里面有两个敏感词过滤字典,源码是winform程序的,下载了就可以进行测试,也可以自己在敏感字字典内加入自己需要过滤的内容。
在Spring Boot应用中,开发人员经常需要处理文本内容,其中包括检查和过滤可能存在的敏感词语。这个"springBoot-java敏感词语过滤类"是一个实用的工具类,用于帮助开发者实现在Java环境中对用户输入或者系统文本进行...
一种基于语音识别的直播视频敏感内容过滤方法及装置 该发明主要关注于直播视频内容的安全性和合规性,尤其是在实时互动的直播环境中,如何有效监测并过滤掉潜在的敏感或不适宜的内容。直播视频已经成为现代互联网...
2. 过滤方法: - 黑名单过滤:创建一个包含敏感字符的黑名单列表,对输入文本进行遍历,一旦发现匹配的字符就进行替换或删除。 - 白名单过滤:只允许特定的字符或词汇通过,所有不在白名单中的字符都会被过滤掉,...
一个web过滤敏感字内容详解,方法和使用。非常不错。
"论坛需要过滤的不良词语大全"是一个针对这一需求的资源集合,它包含了广泛用于论坛过滤系统的词汇列表。 这个压缩包中的"论坛需要过滤的不良词语大全.txt"文件,很可能是列举了大量可能被视为不适宜、攻击性、诽谤...
3. **规避过滤**:用户可能会使用谐音字、错别字或特殊符号来规避过滤,因此系统需具备一定的智能分析能力。 4. **误判**:过滤系统应尽量减少误判,避免正常内容被误识别为敏感信息。 总结,"敏感词汇过滤"是Java...
本示例中的"文字过滤(ajax+jquery+servlet)"项目,就是利用Ajax、jQuery和Servlet来实现这样一个功能,它能在用户提交评论前自动检查并替换特定文字,例如将“人”字换成“我”。 **Ajax技术** Ajax...
在Oracle中,可以通过多种方法来过滤字符串中的数字。这些方法主要利用了Oracle提供的内置函数,如`TRANSLATE()`、`TRIM()`等。下面逐一介绍这些函数及其应用场景: 1. **`TRANSLATE()` 函数**: - **定义**:`...
标题 "Node.js-清理脏话敏感字的Node模块" 暗示了这是一个关于使用Node.js来处理文本,特别是过滤或替换不雅词汇和敏感字的解决方案。在Node.js环境中,我们可以利用JavaScript的灵活性和丰富的社区资源来创建这样的...
3. **安全过滤**:过滤敏感字符,防止SQL注入、跨站脚本攻击等。 4. **性能优化**:例如,开启GZIP压缩,减少网络传输的数据量。 5. **权限控制**:检查用户权限,决定是否允许访问特定资源。 ### 5. 扩展性与灵活...
标题中的“过滤敏感词汇1.0版——仅仅是最简单的过滤”指的是一个初步的文本过滤系统,主要用于检测和移除或替换文本中的敏感词汇。在互联网环境中,为了维护网络秩序,防止不良信息传播,这类系统通常被用于论坛、...
"Go-golang敏感词过滤"是一个与文本处理相关的项目,主要关注如何在Go语言中实现对敏感词汇的检测和过滤。在描述中提到的“golang 敏感词过滤”意味着我们需要构建一个服务或库,能够检查输入的文本,找出并替换或者...
首先,敏感词过滤的基本原理是建立一个敏感词库,这个库通常包含了一系列需要屏蔽或替换的词汇。当用户输入或展示内容时,程序会检查这些词汇是否出现在文本中,并进行相应的处理,如替换为星号、删除或提示用户修改...
### 敏感字分析系统Java知识点解析 #### 一、项目背景与意义 - **背景**: 在信息时代背景下,互联网的普及使得网络用语成为人们日常交流的重要组成部分。然而,网络环境中存在大量的不文明用语,这对网络环境造成...
在网站内容管理中,例如论坛、评论区等,有时需要防止用户发布含有违规或敏感信息的内容。这就需要一套有效的敏感词过滤机制,以便在内容发布前检查并阻止这些词汇。ThinkPHP5的敏感词过滤类就是为此目的设计的。 ...
敏感词过滤在许多应用程序中都是必要的,例如社交媒体、论坛或博客平台,以防止用户发布不当或有害的内容。以下是对DFA算法及其在Java敏感词过滤中的应用的详细解释。 ### 一、敏感词过滤的重要性 敏感词过滤的...
Java使用DFA算法实现过滤多家公司自定义敏感字功能详解主要介绍了Java使用DFA算法实现过滤多家公司自定义敏感字功能,结合实例形式分析了DFA算法的实现原理及过滤敏感字的相关操作技巧。 DFA算法简介 DFA...