java.lang.IllegalStateException: response already committed

zy0402 2009-07-22 02:24:39
异常完整信息:<2009-7-22 下午02时10分47秒 CST> <Error> <HTTP> <BEA-101020> <[ServletContext(id=6457059,name=dft,context-path=/dft)] Servlet failed with Exception
java.lang.IllegalStateException: response already committed
at weblogic.servlet.jsp.JspWriterImpl.clear(JspWriterImpl.java:85)
at jsp_servlet.__random._jspService(__random.java:186)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6718)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3764)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2644)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
>
我是在显示验证码时报的错,而且每次刷新一次验证码就报一次,我用的是myeclipse+weblogic+oracle开发的
...全文
2257 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
oubo824219 2009-07-23
  • 打赏
  • 举报
回复
out.clear();
out = pageContext.pushBody();
把这2句去掉
zy0402 2009-07-22
  • 打赏
  • 举报
回复
我的这个只是一个jsp界面,在需要的页面中直接引用就可以了,这个项目还不需要servlet
tongwei0071 2009-07-22
  • 打赏
  • 举报
回复
把验证码的生成一般放到Servlet中去
生成验证码直接请求servlet,就避免了异常
因为servlet会自动管理HttpServletRequest和HttpServletResponse对象
<img src="/servletRequestUrl"/>
zy0402 2009-07-22
  • 打赏
  • 举报
回复
<%@ page autoFlush="false" import="java.awt.*,java.awt.image.*,com.sun.image.codec.jpeg.*,java.util.*" pageEncoding="UTF-8"%>
<%
//set Chinese Char
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
%>
<%
String chose="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

char display[]={'0',' ','0',' ','0',' ','0'},ran[]={'0','0','0','0'},temp;

Random rand=new Random();

for(int i=0;i<4;i++)
{

temp=chose.charAt(rand.nextInt(chose.length()));

display[i*2]=temp;

ran[i]=temp;
}

String random=String.valueOf(display);

session.setAttribute("random",String.valueOf(ran));
%>
<%
out.clear();
response.setContentType("image/jpeg");
response.addHeader("pragma","NO-cache");
response.addHeader("Cache-Control","no-cache");
response.addDateHeader("Expries",0);
int width=65, height=22;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
//以下填充背景颜色
g.setColor(Color.lightGray);
g.fillRect(0, 0, width, height);
//设置字体颜色
g.setColor(Color.blue);
Font font=new Font("Arial",Font.PLAIN,15);
g.setFont(font);
// 随机产生干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(Color.black);
for (int i=0;i<30;i++)
{
int x = rand.nextInt(width);
int y = rand.nextInt(height);
g.drawLine(x,y,x,y);
}
g.drawString(random,5,20);
g.dispose();
ServletOutputStream outStream = response.getOutputStream();
JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(outStream);
encoder.encode(image);
outStream.flush();
out.clear();
out = pageContext.pushBody();
%>


这是那个验证码的页面
super_marioli 2009-07-22
  • 打赏
  • 举报
回复
把源码贴出来看下
zy0402 2009-07-22
  • 打赏
  • 举报
回复
大概是哪里出错的,麻烦告诉我
Sou2012 2009-07-22
  • 打赏
  • 举报
回复
异常。
zy0402 2009-07-22
  • 打赏
  • 举报
回复
我开始就已经加了,但还是不行,还有什么方法吗?
Ami121 2009-07-22
  • 打赏
  • 举报
回复
在验证码页面最后加上
out.clear();
out = pageContext.pushBody();

81,092

社区成员

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

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