2 qq 30084891 qq_30084891 于 2016.05.07 23:59 提问

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);
}

[color=#FF0000]@Override
public PrintWriter getWriter() throws IOException {
return new PrintWriter(charArrayWriter);
}为什么要重写getwriter(),哪里会用到这个方法[/color]

public CharArrayWriter getCharArrayWriter() {
return charArrayWriter;
}
}

public class OutputReplaceFilter implements Filter {

private Properties pp = new Properties();

public void init(FilterConfig config) throws ServletException {
String file = config.getInitParameter("file");
String realPath = config.getServletContext().getRealPath(file);
try {
pp.load(new FileInputStream(realPath));
} catch (IOException e) {
}
}

public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {

// 自定义的 response
HttpCharacterResponseWrapper response = new HttpCharacterResponseWrapper(
(HttpServletResponse) res);

// 提交给 Servlet 或者下一个 Filter
chain.doFilter(req, response);

// 得到缓存在自定义 response 中的输出内容
String output = response.getCharArrayWriter().toString();

// 修改,替换
for (Object obj : pp.keySet()) {
String key = (String) obj;
output = output.replace(key, pp.getProperty(key));
}
// 输出
PrintWriter out = res.getWriter();为什么用原来的response,不用自定义的response
out.write(output);
out.println("<!-- Generated at " + new java.util.Date() + " -->");
}

public void destroy() {
}

以上2个问题困扰小弟许久了,还请各位大虾不吝赐教,小弟感激不尽

2个回答

CSDNXIAON
CSDNXIAON   2016.05.08 00:12

Filter过滤不了Action的问题
一个Filter编码过滤的白痴问题
miniUI tree 过滤(filter)的问题
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

jhfsdfs
jhfsdfs   2016.05.08 08:04

我觉得你吧chain.dofilter放到最后

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Filter 登录 编码 过滤源代码
Filter 登录 编码 过滤Filter 登录 编码 过滤Filter 登录 编码 过滤Filter 登录 编码 过滤Filter 登录 编码 过滤Filter 登录 编码 过滤Filter 登录 编码 过滤Filter 登录 编码 过滤Filter 登录 编码 过滤
使用filter解决xss攻击
使用filter解决xss攻击的实现思路,其实是通过正则的方式对请求的参数做脚本的过滤,但是这需要对所要过滤的脚本做很多的枚举。下面这个demo是我在工作中用到的,希望对大家有所帮助。 public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { HttpServletRequest org
Filter过滤
Filter过滤Filter过滤
angularjs开发常见问题-2(angularjs内置过滤器)
在angular中内置了几个常用的filter,可以简化我们的操作。过滤器使用 ‘|’ 符号,概念有点类似于linux中的管道。1、filter (过滤)filter可以根据条件过滤数据,例子:{{[{name:'coolcao',age:23},{name:'lily',age:20},{name:'tom',age:22}] | filter:'coolcao'}}结果:[{"name":"co
java-springmvc+filter 替换输出流、response、响应内容
java-springmvc+filter 替换输出流、response、响应内容 一、问题 1.描述:在使用 filter 替换、修改 response 输出内容时常见的错误如下异常提示 getWriter() has already been called for this response getOutputStream() has already been called f
SAP HANA 里的Fliter和Output控制
SAP HANA 里的Fliter和Output控制
AngularJS 从入门到精通(过滤器(Filter) )
过滤器(Filter),故名思议,源数据通过特定的规则,转换成需要的数据格式, 这个规则,我们统称为过滤器。 AngularJs 的Filter 功能非常强大,并且使用方便。它能够使得页面分组,查询,排序,以及数据转换等操作变的异常简单,同时还可以自定义过滤器实现更复杂的功能。 格式:{{expression | filter}} 或 {{expression | filt
第九篇——JDBC操作数据库之Filter过滤器(乱码)
Filter解决中文乱码问题JavaWeb中提交中文经常会出现乱码,想必各位都遇到过吧,例如:今天跟大家聊聊一种比较常用的方式——Filter过滤。Filter就是起到一个过滤器的作用,当提交或者获取信息的时候,都会经过Filter,然后Filter会将你传递的信息转换成你设置好的编码格式,从而避免一些中文乱码的情况。一个过滤器必须实现javax.servlet.FilterConfig接口,该接...
FilterTerminal--支持关键字过滤的串口工具
很强大的串口工具,支持使用常规的TAG过滤串口数据,以及支持以正则表达式的形式的过滤,非常强大!!谁用谁知道!!FilterTerminal
logstash过滤器filter grok多种日志匹配使用心得
例:  #A=1 B= 2 C=3  #A=1 filter { grok { match => { "message" => "(#A=%{NUMBER:A}%{SPACE}B=%{NUMBER:B}%{SPACE}C=%{NUMBER:C}|#A=%{NUMBER:A})"} } } 如果有多种情况就用正则中的或来做匹配,字段过多会报错,目前查找解决办法中。