Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将JSP输出流传递给方法_Java_Jsp - Fatal编程技术网

Java 将JSP输出流传递给方法

Java 将JSP输出流传递给方法,java,jsp,Java,Jsp,我创建了一个类MyClass,它打算向JSP输出大量文本。我认为MyClass对象最好使用页面的输出流,而不是让MyClass对象返回要在页面上显示的字符串。这是个好主意/可能的主意吗 在测试可能的方法来做到这一点 这些选项输出文本,但它显示在页面正文之前: response.getWriter().append("test1"); response.getWriter().println("test2"); response.getWriter().write("test3"); 这会出错,

我创建了一个类MyClass,它打算向JSP输出大量文本。我认为MyClass对象最好使用页面的输出流,而不是让MyClass对象返回要在页面上显示的字符串。这是个好主意/可能的主意吗

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

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

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");
}