当前位置: 代码迷 >> Java Web开发 >> 验证码有关问题,webLogic中出现“response already committed”异常
  详细解决方案

验证码有关问题,webLogic中出现“response already committed”异常

热度:2225   发布时间:2013-02-25 21:17:22
验证码问题,webLogic中出现“response already committed”错误
code.jsp
Java code
<%@ 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
HTML code
<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">&nbsp;</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>
  相关解决方案