有关getOutputStream() has already been called for this response,敬请留步!

laiyong888 2004-06-23 11:57:59
功能:根据byte[],输出图片到JSP页面
开发:servlet + jsp
servlet代码:
/**
* showPic
* 测试使用,显示图片
* @param request HttpServletRequest
* @param response HttpServletResponse
*/
private void showPic(HttpServletRequest request, HttpServletResponse response)
{
request.setAttribute("leftPic",Common.busiLeftPic(request,response));//送入一个byte[]
request.setAttribute("centerPic",Common.busiCenterPic(request,response));//送入一个byte[]
request.setAttribute("rightPic",Common.busiRightPic(request,response));//送入一个byte[]

dispatch(request,response,JspName.picTest,getServletContext());
}
/**
* 资源分发
* @param request HttpServletRequest
* @param response HttpServletResponse
* @param Location String
*/
public static void dispatch(HttpServletRequest request, HttpServletResponse response, String Location,ServletContext context)
{
RequestDispatcher dipatcher = null;
try
{
dipatcher = context.getRequestDispatcher(Location);
//dipatcher = request.getRequestDispatcher(Location);
dipatcher.forward(request,response);
}
catch(Exception e)
{
System.out.println("dispatch Err: " + e.getMessage());
}
dipatcher = null;
}

JSP页面

<%@ page language="java" import="java.sql.*" errorPage="" %>
<%@ page import= "java.lang.*"%>
<%@ page import= "java.sql.*"%>
<%@ page import= "java.util.*"%>
<%
response.setContentType("image/jpeg");
byte[] leftPic = null;
if( request.getAttribute("leftPic") != null )
leftPic = (byte[])request.getAttribute("leftPic");

ServletOutputStream leftSos = response.getOutputStream();
leftSos.write(leftPic,0,leftPic.length);
leftSos.flush();
leftSos.close();
%>

错误类型:

ApplicationDispatcher[]: Servlet.service() for servlet debugjsp threw exception

org.apache.jasper.JasperException: getOutputStream() has already been called for this response

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)

at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:432)

at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:356)

at com.freely.busi.Common.dispatch(Common.java:36)

at com.freely.busi.OperatorMgr.showPic(OperatorMgr.java:71)

at com.freely.busi.OperatorMgr.doGet(OperatorMgr.java:55)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)

at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)

at java.lang.Thread.run(Thread.java:534)

dispatch Err: getOutputStream() has already been called for this response

...全文
85 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhang21cnboy 2004-08-17
  • 打赏
  • 举报
回复
jsp页面里面,容器已经给你生成了一个out的东西。用那个out。

out就是通过getOutputStream()得到的。
rucca11 2004-08-17
  • 打赏
  • 举报
回复
遇到,up
sypxl 2004-07-23
  • 打赏
  • 举报
回复
我也遇到了,up一下
ecaol 2004-06-23
  • 打赏
  • 举报
回复
UO

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧