在JSP使用:
response.reset();
response.setContentType("application/vnd.ms-excel");
OutputStream os = response.getOutputStream();
抛出异常:
ERROR [Engine] StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response
原因:1,是web容器生成的servlet代码中有out.write(""),这个和JSP中调用的response.getOutputStream()产生冲突.
即Servlet规范说明,不能既调用 response.getOutputStream(),又调用response.getWriter(),无论先调用哪一个,
在调用第二个时候应会抛出 IllegalStateException,因为在jsp中,out变量是通过response.getWriter得到的,
在程序中既用了 response.getOutputStream,又用了out变量,故出现以上错误。
解决方案:在程序中添加:
out.clear();
out = pageContext.pushBody();
就可以了;
2,不要在%><%之间写内容包括空格和换行符
3,在页面写入图片的时候,需要flush()
OutputStream output=response.getOutputStream();
output.flush();
4,在页面确定写入,<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
分享到:
相关推荐
ServletOutputStream out = response.getOutputStream(); out.write("<html><body>Hello, World!</body></html>".getBytes()); out.flush(); out.close(); ``` 描述中的"InputStream i" 提到了输入流`InputStream`...
纠结了半天的 java.lang.IllegalStateException: getOutputStream() has already。这个问题困扰了半天,在网上查阅了大量资料 出这个错误一般就是下面2个.....
本篇将深入探讨`response`设置的实例源码,以及如何在Servlet中应用这些设置。 一、Response对象的基本介绍 `HttpServletResponse`接口是`ServletResponse`接口的子接口,它扩展了通用的响应功能,以适应HTTP协议的...
try (OutputStream out = response.getOutputStream()) { // 使用Apache POI或其他库生成Excel内容并写入out流 } ``` #### 五、动态生成JPEG图像 如果需要动态生成并发送JPEG格式的图像,也需要设置正确的响应...
3. **重复调用getOutputStream()**:某些API可能会在内部缓存OutputStream,如果你多次调用获取OutputStream的方法,第二次及以后的调用可能会抛出此异常。 4. **框架或库的特定行为**:某些框架或库在处理...
OutputStream ou = new BufferedOutputStream(response.getOutputStream()); response.setContentType("application/octet-stream"); // 设置响应类型为二进制流 // 写入响应流并关闭 ou.write(buffer); ou....
public void code(HttpServletRequest request, HttpServletResponse response) throws IOException{ String[] tableNames = new String[]{};... IOUtils.write(data, response.getOutputStream()); }
也就是说,要么使用getWriter(),要么使用getOutputStream(),否则将抛出IllegalStateException异常。 字符响应流 使用getWriter()方法获取字符流时,需要注意字符编码问题。默认情况下,字符编码为ISO-8859-1,但...
在Java Web开发中,使用response对象的getWriter方法可以向前端页面输出文本信息,这是一种常见的将数据从服务器端传递到客户端的方式。然而,输出时可能会遇到乱码问题,导致页面上显示的字符出现错误或无法识别。...
问题1:TOMCAT下载文件出错:org.apache.catalina.connector.ClientAbortException. 问题2:TOMCAT记录接收数据大小、发送数据大小和请求处理时间
随机获取验证码 public class CheckNumberServlet extends HttpServlet { ... ServletOutputStream sos = response.getOutputStream();…………………………………………………………………………………………
确保正确处理可能出现的异常。 ```cpp void CMyDialog::OnInitDialog() { CDialog::OnInitDialog(); Gdiplus::GdiplusStartupInput gdiplusStartupInput; ULONG_PTR gdiplusToken; Gdiplus::GdiplusStartup(&...
在使用Tomcat 6服务器部署和运行Java Server Pages (JSP) 时,可能会遇到一个特定的异常:“getOutputStream() has already been called for this response”。该异常发生在尝试向响应对象中写入数据时,已经调用了...
OutputStream o = response.getOutputStream(); // 将图片转换成字符串 File f = new File("f:\\Vista.png"); FileInputStream fis = new FileInputStream( f ); byte[] bytes = new byte[fis.available...
TextExport.export(response.getOutputStream(), table); } else if ("pdf".equals(format)) { JTable table = new JTable(dataList); PdfExport.export(response.getOutputStream(), table); } else if ("xls...
在Java Web开发中,"getOutputStream() has already been called for this response" 是一个常见的错误,通常出现在使用Servlet或JSP时。这个错误意味着在HTTP响应中,`getOutputStream()`已经被调用,然后尝试再次...
简单的验证码实现 public static void ... ServletOutputStream out = response.getOutputStream(); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); encoder.encode(image); out.close(); }
ServletOutputStream outputStream = response.getOutputStream(); outputStream.write(date.getBytes()); } ``` 这是因为服务器端和浏览器端的编码格式不一致所致。解决方法是使浏览器端和服务器端的编码格式...
getWriter() 和Response.getOutputStream冲突
OutputStream outputStream = response.getOutputStream(); JxlsHelper.getInstance() .processTemplate(templateStream, outputStream, Collections.singletonMap("dataList", dataList)); response....