验证码问题,webLogic中出现“response already committed”错误

三楼の郎 2008-06-11 12:37:38
code.jsp
<%@ page import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"%>    
<%@ page import="java.io.OutputStream"%>
<%@ page pageEncoding="UTF-8"%>
<%!Color getRandColor(int fc, int bc) {
Random random = new Random();
if (fc > 255)
fc = 255;
if (bc > 255)
bc = 255;
int r = fc + random.nextInt(bc - fc);
int g = fc + random.nextInt(bc - fc);
int b = fc + random.nextInt(bc - fc);
return new Color(r, g, b);
}
%>
<%
try {
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
int width = 70, height = 20;
BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
OutputStream os = response.getOutputStream();
Graphics g = image.getGraphics();
Random random = new Random();

//设置背景和大小
g.setColor(getRandColor(200, 250));
g.fillRect(0, 0, width, height);

//设置字体和颜色
g.setFont(new Font("Times New Roman", Font.BOLD, 20));
g.setColor(getRandColor(120, 200));
for (int i = 0; i < 50; i++) {
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(5);
int yl = random.nextInt(5);
g.drawLine(x, y, x + xl, y + yl);
}

String sRand = "";
for (int i = 0; i < 4; i++) {
String chose="0123456789";
String rand = String.valueOf(chose.charAt(random.nextInt(chose.length())));
sRand += rand;
g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));
g.drawString(rand, 15 * i + 6, 16);
}
session.setAttribute("rand", new String(sRand));
g.dispose();
g=null;

ImageIO.write(image, "JPEG", os);
os.flush();
os.close();
os = null;
response.flushBuffer();

out.clear();
out = pageContext.pushBody();
} catch (IllegalStateException e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
%>


login.jsp
<form id="form1" name="form1" method="post" action="../function/checklogin.jsp" class="login_form">
<table width="200" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="right">用户名</td>
<td colspan="2"><input name="txtusername" type="text" class="login_input01" id="txtusername" /></td>
</tr>

<tr>
<td align="right">密 码</td>
<td colspan="2"><input name="txtpassword" type="password" class="login_input01" id="txtpassword" /></td>
</tr>

<tr>
<td align="right">验证码</td>
<td><input name="logincode" type="text" class="login_input01" id="logincode" style="width:50px;" maxlength="4" /></td>
<td><a href="javascript:fRefCoder();"><img id="getImg" src="../function/code.jsp" height="20" width="70" border="0"></a></td>
</tr>

<tr>
<td align="right"> </td>
<td colspan="2" style="padding-top:7px;"><input name="imageField" type="image" src="../images/028.gif" style="float:left;"/><span class="rc_pw"><a href="../user/forgotpassword.jsp">取回密码</a></span></td>
</tr>
</table>
</form>


在Tomcat里运行没问题,在WebLogic里运行报“response already committed”错误,那位高人帮忙看看怎么解决!
...全文
711 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sjgsjgsjg123 2012-06-26
  • 打赏
  • 举报
回复
我也是在做验证码出现此错误,谁能帮助一下
TDwebber 2008-06-11
  • 打赏
  • 举报
回复
把jsp页面中的<%之间的回车换行都去掉。
老紫竹 2008-06-11
  • 打赏
  • 举报
回复
建议楼主用 servlet 来做这些Stream相关的东西。

老紫竹 2008-06-11
  • 打赏
  • 举报
回复
                try {    
out.clearBuffer(); // 加上这一句
response.setHeader("Pragma", "No-cache");
三楼の郎 2008-06-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 java2000_net 的回复:]
Java code try {
out.clearBuffer(); // 加上这一句
response.setHeader("Pragma", "No-cache");
[/Quote]

搞定,谢谢

81,092

社区成员

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

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