我正在尝试记录(仅为了简单起见,现在是控制台写入)最终呈现的HTML将由HttpServletResponse返回.(即正文)为此,我使用Spring MVC中的HandlerInterceptorAdapter,如下所示:
public class VxmlResponseInterceptor extends HandlerInterceptorAdapter {
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println(response.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
这按预期工作,我在控制台中看到HTTP响应头.我的问题是,是否有一种相对简单的方法可以将整个响应体(即最终呈现的HTML)记录到控制台,而无需使用PrintWriters,OutputStream等进行跳跃.
提前致谢.
我对Ruby有点新鲜,虽然我发现它是一种非常直观的语言,但我很难理解隐式返回值的行为方式.
我正在开发一个小程序来grep Tomcat日志并从相关数据生成管道分隔的CSV文件.这是我用来从日志条目生成行的简化示例.
class LineMatcher
class << self
def match(line, regex)
output = ""
line.scan(regex).each do |matched|
output << matched.join("|") << "\n"
end
return output
end
end
end
puts LineMatcher.match("00:00:13,207 06/18 INFO stateLogger - TerminationRequest[accountId=AccountId@66679198[accountNumber=0951714636005,srNumber=20]",
/^(\d{2}:\d{2}:\d{2},\d{3}).*?(\d{2}\/\d{2}).*?\[accountNumber=(\d*?),srNumber=(\d*?)\]/)
Run Code Online (Sandbox Code Playgroud)
当我运行这段代码时,我得到了以下内容,这是显式返回输出值时的预期结果.
00:00:13,207|06/18|0951714636005|20
Run Code Online (Sandbox Code Playgroud)
但是,如果我将LineMatcher更改为以下内容并且不显式返回输出:
class LineMatcher
class << self
def match(line, regex)
output = ""
line.scan(regex).each do |matched|
output << matched.join("|") << "\n"
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
然后我得到以下结果:
00:00:13,207
06/18
0951714636005
20
Run Code Online (Sandbox Code Playgroud)
显然,这不是理想的结果.感觉我应该能够摆脱输出变量,但不清楚返回值的来源.此外,欢迎任何其他可读性的建议/改进.