Java 将JSP输出流传递给方法
我创建了一个类MyClass,它打算向JSP输出大量文本。我认为MyClass对象最好使用页面的输出流,而不是让MyClass对象返回要在页面上显示的字符串。这是个好主意/可能的主意吗 在测试可能的方法来做到这一点 这些选项输出文本,但它显示在页面正文之前:Java 将JSP输出流传递给方法,java,jsp,Java,Jsp,我创建了一个类MyClass,它打算向JSP输出大量文本。我认为MyClass对象最好使用页面的输出流,而不是让MyClass对象返回要在页面上显示的字符串。这是个好主意/可能的主意吗 在测试可能的方法来做到这一点 这些选项输出文本,但它显示在页面正文之前: response.getWriter().append("test1"); response.getWriter().println("test2"); response.getWriter().write("test3"); 这会出错,
response.getWriter().append("test1");
response.getWriter().println("test2");
response.getWriter().write("test3");
这会出错,并告诉我已获取输出流:
让类返回一个迭代器,该迭代器一次生成一小块文本。然后,您可以在JSP中迭代迭代器,并在适当的位置打印数据块。
response.getWriter()
将为您提供与JSP中使用的不同的writer。若您想和JSP页面使用的编写器相同,则需要使用JSP页面中的out
变量。不同之处在于JSP在标准的response.getWriter()
之上使用缓冲。这就是为什么您会看到数据在JSP主体之前写入response.getWriter()
不能将response.getWriter()
和response.getOutputStream()混用out
变量是JspWriter实例包装编写器获得的response.getWriter()
因此调用response.getOutputStream()
将失败
在JSP中应该做什么:
<%
new MyClass().writeToWriter(out);
%>
<%
new MyClass().writeToWriter(out);
%>
public void writeToWriter(Writer w) {
w.println("My data appended to correct writer");
}