[英]Servlet - java.lang.IllegalStateException: getWriter() has already been called for this response
I'm using GlassFish as Server and Netbeans IDE 8.0 Here is my project structure. 我使用GlassFish作为服务器和Netbeans IDE 8.0这是我的项目结构。
How my program works: 我的程序如何工作:
Here is the important code in BS. 这是BS中的重要代码。
/* Result.jsp */
String c = request.getParameter("color");
BeerExpert be = new BeerExpert();
List result = be.getBrands(c);
request.setAttribute("styles", result);
RequestDispatcher view = request.getRequestDispatcher("result.jsp");
view.forward(request, response);
/* Test Client Download */
response.setContentType("application/jar");
ServletContext ctx = getServletContext();
InputStream is = ctx.getResourceAsStream("/Test.jar");
int read = 0;
byte[] bytes = new byte[1024];
OutputStream os = response.getOutputStream();
while ((read = is.read(bytes)) != -1){
os.write(bytes, 0, read);
}
os.flush();
The Error: 错误:
It is illegal to use both ServletRequest.getOutputStream() and ServletRequest.getWriter(). 使用ServletRequest.getOutputStream()和ServletRequest.getWriter()是非法的。 This has been answered here in detail here.
这里已经详细解答了这个问题。
java.lang.IllegalStateException: Already using output stream java.lang.IllegalStateException:已经使用输出流
将Test.jar移动到WEB-INF文件夹中。
您可能必须将test.jar移动到项目的源文件夹中,以便可以访问它。
It is explicit in ServletResponse
javadoc for method getOutputStream()
: 对于方法
getOutputStream()
它在ServletResponse
javadoc中是显式的:
Either this method or getWriter() may be called to write the body, not both, except when reset() has been called. 除非调用reset(),否则可以调用此方法或getWriter()来编写正文,而不是两者。
But I think you did not show the relevant code because according to the stacktrace, the error occurs in controller.BeerSelect.processRequest
, in BeerSelect.java
line 83. 但我认为您没有显示相关代码,因为根据stacktrace,错误发生在
BeerSelect.java
第83行的controller.BeerSelect.processRequest
中。
With what you show, I cannot guess where getOutputStream
was called, but the error says that it was, so you can : 根据你所展示的内容,我无法猜出调用了
getOutputStream
位置,但是错误说它是,所以你可以:
getWriter
instead getWriter
使用getWriter
getWriter
with getOutputStream
in BeerSelect.java
. BeerSelect.java
getOutputStream
替换getWriter
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.