filter敏感词替换
1.properties文件的应用
在<filter>写入配置
<filter>
<filter-name>myFilter</filter-name>
<filter-class>filter.MyFilter</filter-class>
<init-param>
<param-name>file</param-name>
<param-value>/WEB-INF/sensitive.properties</param-value>
</init-param>
</filter>
在filter中提出
private Properties pp = new Properties();
String file = filterConfig.getInitParameter("file");
String realPath = filterConfig.getServletContext().getRealPath(file);// 获取真实路径
try { pp.load(new FileInputStream(realPath));
for (Object j : pp.keySet()) {
String key = (String) j;
// String newKey = new String((oldKey.getBytes("ISO8859-1")),
// "UTF8");
output = output.replace(key, pp.getProperty(key));
2.HttpCharacterResponseWrapper extends HttpServletResponseWrapper
通过继承HttpServletResponseWrapper
在里面定义一个private CharArrayWriter charArrayWriter = new CharArrayWriter();来缓冲数据
重写getWriter()
写个一个getCharArrayWriter()来获得缓冲内容
HttpCharacterResponseWrapper
package filter; import java.io.CharArrayWriter;
import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper; public class HttpCharacterResponseWrapper extends HttpServletResponseWrapper {
private CharArrayWriter charArrayWriter = new CharArrayWriter(); public HttpCharacterResponseWrapper(HttpServletResponse response) {
super(response);
// TODO Auto-generated constructor stub
} public PrintWriter getWriter() throws IOException {
return new PrintWriter(charArrayWriter);
} public CharArrayWriter getCharArrayWriter() {
return charArrayWriter;
}
}
Filter
package filter; import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Properties; import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse; public class MyFilter implements Filter { private Properties pp = new Properties(); @Override
public void destroy() {
// TODO Auto-generated method stub } @Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletResponse HttpResponse = (HttpServletResponse) response;
HttpCharacterResponseWrapper MyResponse = new HttpCharacterResponseWrapper(
HttpResponse);
chain.doFilter(request, MyResponse);
String output = MyResponse.getCharArrayWriter().toString();
for (Object j : pp.keySet()) {
String key = (String) j;
// String newKey = new String((oldKey.getBytes("ISO8859-1")),
// "UTF8");
output = output.replace(key, pp.getProperty(key));
// output = output.replaceAll(newKey, pp.getProperty(oldKey));
}
// System.out.println(output);
PrintWriter out = response.getWriter();
out.write(output);
} @Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
String file = filterConfig.getInitParameter("file");
String realPath = filterConfig.getServletContext().getRealPath(file);// 获取真实路径
try { pp.load(new FileInputStream(realPath)); /*
* BufferedReader br = null; br = new BufferedReader(new
* InputStreamReader(new FileInputStream( new File(realPath)),
* "utf-8")); pp.load(br);
*/
} catch (IOException e) {
}
} }
filter敏感词替换的更多相关文章
- Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类
Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类 =========================== ©Copyright 蕃薯耀 2017年9月25日 http://www ...
- Java如何将字符串中的敏感词替换为相等数量的星号*
Java如何将字符串中的敏感词替换为相等数量的星号* Java如何将字符串中的敏感词替换为相等数量的星号*,这也是我工作中遇到的问题,尝试了很多种方式最后采用这一种,在这里分享一下我的解决方式,代码效 ...
- PHP敏感词替换
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8& ...
- Java基础:String类详解,案例用户登录实现,案例手机号截取实现,案例敏感词替换实现;StringBuilder类详解,StringBuilder和String相互转换,附练习案例.
1.API 1.1 API概述-帮助文档的使用 什么是API API (Application Programming Interface) :应用程序编程接口 java中的API 指的就是 JDK ...
- (转)两种高效过滤敏感词算法--DFA算法和AC自动机算法
原文:https://blog.csdn.net/u013421629/article/details/83178970 一道bat面试题:快速替换10亿条标题中的5万个敏感词,有哪些解决思路? 有十 ...
- 萌新笔记——用KMP算法与Trie字典树实现屏蔽敏感词(UTF-8编码)
前几天写好了字典,又刚好重温了KMP算法,恰逢遇到朋友吐槽最近被和谐的词越来越多了,于是突发奇想,想要自己实现一下敏感词屏蔽. 基本敏感词的屏蔽说起来很简单,只要把字符串中的敏感词替换成"* ...
- Android敏感词过滤主要类
package com.tradeaider.app.utils; import com.tradeaider.app.activity.MyApplication;import java.util. ...
- php的trie_filter扩展安装敏感词查找
#编译libiconv ./configure make make install #编译libdatrie-0.2.11 ./configure LDFLAGS=-L/usr/local/lib L ...
- 用KMP算法与Trie字典树实现屏蔽敏感词(UTF-8编码)
前几天写好了字典,又刚好重温了KMP算法,恰逢遇到朋友吐槽最近被和谐的词越来越多了,于是突发奇想,想要自己实现一下敏感词屏蔽. 基本敏感词的屏蔽说起来很简单,只要把字符串中的敏感词替换成“***”就可 ...
随机推荐
- 12.详解Condition的await和signal等待通知机制
1.Condition简介 任何一个java对象都天然继承于Object类,在线程间实现通信的往往会应用到Object的几个方法,比如wait(),wait(long timeout),wait(lo ...
- Python之如何删除pandas DataFrame的某一/几列
删除pandas DataFrame的某一/几列: 方法一:直接del DF['column-name'] 方法二:采用drop方法,有下面三种等价的表达式: 1. DF= DF.drop('co ...
- Exact Change
设计一个收银程序 checkCashRegister() ,其把购买价格(price)作为第一个参数 , 付款金额 (cash)作为第二个参数, 和收银机中零钱 (cid) 作为第三个参数. cid ...
- 小练习:补数 (Number Complement)
1.eamples Input: Output: Explanation: The binary representation of (no leading zero bits), and its c ...
- 019——VUE中v-for与computer结合功能实例讲解
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- SqlServer 转 Oracle 的几点注意
(转自:http://www.2cto.com/database/201208/146740.html) 1.字符型的字段相加需要用“||”,如果用“+”的话,会报“无效的数字”的错误. 2.类似 ...
- Personal Introduction
专业:计算机科学与技术 我是博客园的新人,虽然接触编程世界只有一年,基础知识比较差,编程能力差,但对于这个专业,我还是充满兴趣,希望有一天能独当一面,从今天起,我将分享一些在学习web前端和其他方面的 ...
- Github上的iOS App源码 (中文)
Github版英文App地址 中文 : TeamTalk 蘑菇街. 开源IM. 电商强烈推荐. MyOne-iOS 用OC写的<一个> iOS 客户端 zhihuDaily 高仿知乎日报 ...
- 关于命名空间namespace
虽然任意合法的PHP代码都可以包含在命名空间中,但只有以下类型的代码受命名空间的影响,它们是:类(包括抽象类和traits).接口.函数和常量. 在声明命名空间之前唯一合法的代码是用于定义源文件编码方 ...
- 【Spring实战】Spring容器初始化完成后执行初始化数据方法
一.背景知识及需求 在做WEB项目时,经常在项目第一次启动时利用WEB容器的监听.Servlet加载初始化等切入点为数据库准备数据,这些初始化数据是系统开始运行前必须的数据,例如权限组.系统选项.默认 ...