您可以像A4L提到的那樣,使用包裝輸出寫入器(或流,如果被調用的servlet使用該寫入器)將中間結果捕獲爲StringWriter的字符串。它看起來就象這樣:
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
RequestDispatcher dispatcher =
request.getRequestDispatcher("/other-servlet");
StringWriter sw = new StringWriter();
final PrintWriter pw = new PrintWriter(sw);
HttpServletResponse responseWrapper =
new HttpServletResponseWrapper(response) {
@Override
public PrintWriter getWriter() throws IOException {
return pw;
}
};
dispatcher.include(request, responseWrapper);
out.println(this + ": The other servlet also wrote: " + sw.toString());
out.close();
}
然而,你應該小心使用大數據這一技術,如字符串收集流數據殺死性能。如果您需要它來處理大量回復,請考慮編寫一個裝飾PrintWriter,它可以即時執行響應流的修改。
構建新的請求和響應對象並將它們傳遞給包含? – A4L 2014-11-22 19:13:57