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敏感词替换的更多相关文章

  1. Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类

    Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类   =========================== ©Copyright 蕃薯耀 2017年9月25日 http://www ...

  2. Java如何将字符串中的敏感词替换为相等数量的星号*

    Java如何将字符串中的敏感词替换为相等数量的星号* Java如何将字符串中的敏感词替换为相等数量的星号*,这也是我工作中遇到的问题,尝试了很多种方式最后采用这一种,在这里分享一下我的解决方式,代码效 ...

  3. PHP敏感词替换

    <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8& ...

  4. Java基础:String类详解,案例用户登录实现,案例手机号截取实现,案例敏感词替换实现;StringBuilder类详解,StringBuilder和String相互转换,附练习案例.

    1.API 1.1 API概述-帮助文档的使用 什么是API API (Application Programming Interface) :应用程序编程接口 java中的API 指的就是 JDK ...

  5. (转)两种高效过滤敏感词算法--DFA算法和AC自动机算法

    原文:https://blog.csdn.net/u013421629/article/details/83178970 一道bat面试题:快速替换10亿条标题中的5万个敏感词,有哪些解决思路? 有十 ...

  6. 萌新笔记——用KMP算法与Trie字典树实现屏蔽敏感词(UTF-8编码)

    前几天写好了字典,又刚好重温了KMP算法,恰逢遇到朋友吐槽最近被和谐的词越来越多了,于是突发奇想,想要自己实现一下敏感词屏蔽. 基本敏感词的屏蔽说起来很简单,只要把字符串中的敏感词替换成"* ...

  7. Android敏感词过滤主要类

    package com.tradeaider.app.utils; import com.tradeaider.app.activity.MyApplication;import java.util. ...

  8. php的trie_filter扩展安装敏感词查找

    #编译libiconv ./configure make make install #编译libdatrie-0.2.11 ./configure LDFLAGS=-L/usr/local/lib L ...

  9. 用KMP算法与Trie字典树实现屏蔽敏感词(UTF-8编码)

    前几天写好了字典,又刚好重温了KMP算法,恰逢遇到朋友吐槽最近被和谐的词越来越多了,于是突发奇想,想要自己实现一下敏感词屏蔽. 基本敏感词的屏蔽说起来很简单,只要把字符串中的敏感词替换成“***”就可 ...

随机推荐

  1. 【Error】SSL InsecurePlatform error when using Requests package

    使用requests时会出席SSL InsecurePlatform error when using Requests package的错误,一般情况下python2.7.10以下的环境会出现此错误 ...

  2. 上下行分流下行负载方式和能ping通但不能打开

    1 下行线路负载方式选择  目的端口+协议  否则有可能出现微信443端口图片打不开的情况. 2.彭ping通但是打不开的情况下将上行线路mtu值改小 由1500改为1450

  3. 【河南省第十一届ACM程序设计大赛-A】计划日

    已知李明在YYYY年MM月DD日星期W订了学习计划,现在想看看李明N天后的完成情况和个人总结,你能告诉我那天的日期和星期几吗? 输入 第一行: T        表示以下有T组测试数据         ...

  4. json 解析double类型多出几位小数,利用NSDecimalNumber修复 , 服务器返回的数据,用数据类型接收(int,NSNumber)?

     后台返回float类型数据8.2,实际用AFN的json解析后得到8.1999999999,该怎么处理呢? 开发中处理处理价格金额问题, 后台经常返回float.double类型, 打印或转成NSS ...

  5. SpringInAction--自动化装配Bean(隐式装配)

    关于Bean的介绍就具体不多介绍了,,, Spring在配置时候有三种方案可选 1.在xml中进行显示配置 2.在java中进行显示配置 3.隐式的Bean发现机制和自动装配 今天学习的就是自动化装配 ...

  6. PostgreSQL日志号LSN和wal日志文件简记

    弄明白日志号的原理之后,一段时间又有点忘记了,干脆整理一遍: (一)wal文件命名规则 1)在$PGDATA目录下面的pg_xlog目录中存放着xlog日志文件(10.1之后变为了pg_wal): t ...

  7. ETL学习整理 PostgreSQL

    ETL分别是“Extract”.“ Transform” .“Load”三个单词的首字母缩写也就是“抽取”.“转换”.“装载”,但我们日常往往简称其为数据抽取. ETL是BI/DW(商务智能/数据仓库 ...

  8. Shell 命令行统计 apache 网站日志访问IP以及IP归属地

    Shell 命令行统计 apache 网站日志访问IP以及IP归属地 我的一个站点用 apache 服务跑着,积攒了很多的日志.我想用 shell 看看有哪些人访问过我的站点,并且他来自哪里. 因为日 ...

  9. async eachSeries如何按序列执行下去

    async callback要执行完才会进到一下个序列 async.mapSeries(files, function(file, outerCB) { var all = fs.readdirsyn ...

  10. 在FP与DDD的道路上越走越远

    托辞 最近一口气读了若干本FP方面的书,可人是越来越懒了,要整理个什么东西却也没有那个精力,所以简单扔几张图,算是给自己一个提醒吧. 在此期间,我用并不纯熟的Scala和Groovy练了一把手.虽然只 ...