javabean生成验证码报错

来源:百度知道 编辑:UC知道 时间:2024/06/25 21:12:11
错误是这个:
java.lang.IllegalStateException: getOutputStream() has already been called for this response
用来生成验证码的javabean是这个:
package com.eshpping.javaBeans.tools;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
import javax.imageio.ImageIO;

/**
* @author dzy 生成验证码图片
*/
public class RandomCode {
// 验证码图片中可以出现的字符集,可根据需要修改
private char mapTable[] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
'w', 'x', 'y', 'z', '0', '1', '2', '3', '

该成Servlet就可以。主要的原因是你在之前有输出了。
<jsp:useBean id="random"
class="com.eshpping.javaBeans.tools.RandomCode">
<%
String str = random.getCertPic(0, 0, response.getOutputStream());
session.setAttribute("certCode", str);
%>
</jsp:useBean>
这之间的所有空格、换行都要去掉才行,包括行末的空格等,最好还是改成Servlet来的保险。