qq_30084891 2016-05-07 15:59 采纳率: 0%
浏览 1578

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个问题困扰小弟许久了,还请各位大虾不吝赐教,小弟感激不尽

  • 写回答

1条回答 默认 最新

  • machineShunMing 2016-05-08 00:04
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)