gpt4 book ai didi

java - Servlet 过滤器坚持认为没有响应文本

转载 作者:行者123 更新时间:2023-11-28 22:21:02 25 4
gpt4 key购买 nike

我的过滤器应该编辑响应的 HTML。但是当我导航到一个页面时,它什么也不做,因为

newResponse.toString();

返回 null

进一步调试显示,在那个toString 方法中,writernull

这是似乎有问题的部分:

public ServletOutputStream getOutputStream() throws IOException {
if (getWriterCalled) {
throw new IllegalStateException("getWriter already called");
}

getOutputStreamCalled = true;
return super.getOutputStream();
}

public PrintWriter getWriter() throws IOException {
if (writer != null) {
return writer;
}
if (getOutputStreamCalled) {
throw new IllegalStateException("getOutputStream already called");
}
getWriterCalled = true;
writer = new PrintWriter(charWriter);
return writer;
}

public String toString() {
String s = null;

if (writer != null) {
s = charWriter.toString();
}
return s;
}
}

完整代码在这里:

Filter that uses a response wrapper to convert all output to uppercase

最佳答案

据我所知,在 HTTP 请求到达目的地(例如 - servlet)时调用 servlet 过滤器链。当您使用 Filter 获取由请求目标点生成的内容时,您将得到 null 因为它只会在未来存在。但是有一个足够的解决方案,在文档(http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/Filter.html)中提到。只需让您的响应包装器装饰对 HttpServletResponse 内容的访问即可。例如 - 用您的自定义覆盖默认编写器,它将在他的 write() 方法中检测字母并将它们大写。

关于java - Servlet 过滤器坚持认为没有响应文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19115135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com