将JSP输出流传递给方法

Ros*_*oss 3 java jsp

我已经创建了一个类MyClass,它打算向JSP输出大量文本.我认为MyClass对象使用页面的输出流更好.这是一个好/可能的想法吗?

在测试可能的方法来做到这一点......

这些输出文本,但它显示在页面正文之前:

response.getWriter().append("test1");
response.getWriter().println("test2");
response.getWriter().write("test3");
Run Code Online (Sandbox Code Playgroud)

这个错误告诉我输出流已经得到了:

response.getOutputStream().println("test4");
Run Code Online (Sandbox Code Playgroud)

Pet*_*aný 9

response.getWriter()会给你不同的编写器而不是JSP中使用的编写器.如果要在JSP页面使用时写入同一个编写器,则需要使用outJSP页面中的变量.区别在于JSP在标准之上使用缓冲response.getWriter().这就是为什么你看到你的数据写response.getWriter()在JSP体之前的原因.

你不能混用response.getWriter()response.getOutputStream().outJSP中的变量是获得的JspWriter实例包装编写器,response.getWriter()因此调用response.getOutputStream()将失败.

你应该在你的JSP中做什么:

<%
  new MyClass().writeToWriter(out);
%>
Run Code Online (Sandbox Code Playgroud)

在MyClass中:

public void writeToWriter(Writer w) {
    w.println("My data appended to correct writer");
}
Run Code Online (Sandbox Code Playgroud)