验证码jsp 报错,输入正确就不会报错了,输入错就报下面错误

问题描述

org.apache.catalina.core.StandardWrapperValveinvoke严重:Servlet.service()forservletjspthrewexceptionjava.lang.IllegalStateException:getOutputStream()hasalreadybeencalledforthisresponseatorg.apache.catalina.connector.Response.getWriter(Response.java:610)atorg.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:198)atorg.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)atorg.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)atorg.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:188)atorg.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:118)atorg.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:77)atorg.apache.jsp.image_jsp._jspService(image_jsp.java:143)atorg.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:717)atorg.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)atorg.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)atorg.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:717)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)atorg.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)atorg.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)atorg.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)atjava.lang.Thread.run(UnknownSource)

解决方案

解决方案二:
你的Servlet流程处理代码有问题.
解决方案三:
Servlet最后写出流时出错了。
解决方案四:
Servlet最后写出流时出错了。
解决方案五:
servlet代码多错误处理的逻辑有问题
解决方案六:
java.lang.IllegalStateException:getOutputStream()hasalreadybeencalledforthisresponse

解决方案七:
没有关闭输出流
解决方案八:
生成有4个随机数字和杂乱背景的图片,数字和背景颜色会改变,服务器端刷新(用history.go(-1)也会变)原型参考ALIBABA------------产生验证码图片的文件-----image.jsp-------------------------------------------<%@pagecontentType="image/jpeg"import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"%><%!ColorgetRandColor(intfc,intbc){//给定范围获得随机颜色Randomrandom=newRandom();if(fc>255)fc=255;if(bc>255)bc=255;intr=fc+random.nextInt(bc-fc);intg=fc+random.nextInt(bc-fc);intb=fc+random.nextInt(bc-fc);returnnewColor(r,g,b);}%><%//设置页面不缓存response.setHeader("Pragma","No-cache");response.setHeader("Cache-Control","no-cache");response.setDateHeader("Expires",0);//在内存中创建图象intwidth=60,height=20;BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);//获取图形上下文Graphicsg=image.getGraphics();//生成随机类Randomrandom=newRandom();//设定背景色g.setColor(getRandColor(200,250));g.fillRect(0,0,width,height);//设定字体g.setFont(newFont("TimesNewRoman",Font.PLAIN,18));//画边框//g.setColor(newColor());//g.drawRect(0,0,width-1,height-1);//随机产生155条干扰线,使图象中的认证码不易被其它程序探测到g.setColor(getRandColor(160,200));for(inti=0;i<155;i++){intx=random.nextInt(width);inty=random.nextInt(height);intxl=random.nextInt(12);intyl=random.nextInt(12);g.drawLine(x,y,x+xl,y+yl);}//取随机产生的认证码(4位数字)StringsRand="";for(inti=0;i<4;i++){Stringrand=String.valueOf(random.nextInt(10));sRand+=rand;//将认证码显示到图象中g.setColor(newColor(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成g.drawString(rand,13*i+6,16);}//将认证码存入SESSIONsession.setAttribute("rand",sRand);//图象生效g.dispose();//输出图象到页面ImageIO.write(image,"JPEG",response.getOutputStream());%>---------------使用验证码图片的文件---------a.jsp------------------------------------<%@pagecontentType="text/html;charset=gb2312"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>认证码输入页面</title><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><METAHTTP-EQUIV="Pragma"CONTENT="no-cache"><METAHTTP-EQUIV="Cache-Control"CONTENT="no-cache"><METAHTTP-EQUIV="Expires"CONTENT="0"></head><body><formmethod=postaction="check.jsp"><table><tr><tdalign=left>系统产生的认证码:</td><td><imgborder=0src="image.jsp"></td></tr><tr><tdalign=left>输入上面的认证码:</td><td><inputtype=textname=randmaxlength=4value=""></td></tr><tr><tdcolspan=2align=center><inputtype=submitvalue="提交检测"></td></tr></form></body></html>-----------------验证的页面----------check.jsp<%@pagecontentType="text/html;charset=gb2312"language="java"import="java.sql.*"errorPage=""%><html><head><title>认证码验证页面</title><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><METAHTTP-EQUIV="Pragma"CONTENT="no-cache"><METAHTTP-EQUIV="Cache-Control"CONTENT="no-cache"><METAHTTP-EQUIV="Expires"CONTENT="0"></head><body><%Stringrand=(String)session.getAttribute("rand");Stringinput=request.getParameter("rand");%>系统产生的认证码为:<%=rand%><br>您输入的认证码为:<%=input%><br><br><%if(rand.equals(input)){%><fontcolor=green>输入相同,认证成功!</font><%}else{%><fontcolor=red>输入不同,认证失败!</font><%}%></body></html>
解决方案九:
看看哪儿有问题?
解决方案十:
该回复于2010-12-23 14:42:09被版主删除
解决方案十一:
参考
解决方案十二:
请参考楼上的参考

时间: 2024-10-24 00:41:46

验证码jsp 报错,输入正确就不会报错了,输入错就报下面错误的相关文章

java 字符串 报错-java程序在eclipse运行正确,在牛客网测试界面运行报错

问题描述 java程序在eclipse运行正确,在牛客网测试界面运行报错 在eclipse可以正常运行,在牛客网的测试里报错:"运行错误:请检查是否存在数组越界非法访问,野指针乱访问,空指针乱访问等情况." 题目:连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组: ?长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入例子: abc 123456789 输出例子: abc00000 12345678 90000000 import java.util.Sca

struts-login.jsp跳到log_login.do,无论用户名和密码输入什么都提示用户名或密码不正确

问题描述 login.jsp跳到log_login.do,无论用户名和密码输入什么都提示用户名或密码不正确 LoginoutAction.java package com.bfmd.xj.action; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.bfmd.xj.bean.User; import com.bfmd.xj.service.Logi

c-连续输入5个账号,不允许输入重复的,如果输入相同报错,该怎么实现?

问题描述 连续输入5个账号,不允许输入重复的,如果输入相同报错,该怎么实现? int i; cb_code_t name; cb_number_t total = 0; for ( i = 1; i <= 5; i++ ) { cb_number_t percent; cb_code_t teller_no; MODEL_CLAIM(cb_teller,teller); sprintf( name,"柜员%d",i); cb_packet_get_string(context-&

Yii输入正确验证码却验证失败的解决方法

前言 最近在做一个需求时,发现输入正确验证码,但是都提示验证码错误 最后追踪代码发现,如果 Model 在 save 前,单独做了 validate 验证,则在验证结束后,会重新生成验证码 然后在我们 Model save 时,也会进行 validate 验证,验证时,验证码已经重新生成了,所以会匹配不上 // 如果这里用到了验证码,就会出问题 $model = new Test(); $model->validate(); $model->save(); // 这样是正确的 $model =

在我路径书写正确的情况下报以下的错,求解。谢谢啦

问题描述 在我路径书写正确的情况下报以下的错,求解.谢谢啦 HTTP Status 404 - /taidiea/WEB-INF/view/dialog/ErrorPage500.jsp type Status report message /taidiea/WEB-INF/view/dialog/ErrorPage500.jsp description The requested resource is not available. Apache Tomcat/7.0.40 解决方案 好好想一

Ubuntu输入正确的账号密码但登陆后又跳回到登录界面的解决方案

启动系统,输入正确的账号和密码,点击登录,屏幕一闪,然后又跳回登录界面.问题原因:主目录下的.Xauthority文件拥有者变成了root,从而以用户登陆的时候无法都取.Xauthority文件 . 说明:Xauthority,是startx脚本记录文件.Xserver启动时,读文件~/.Xauthority,读入对应其display 的记录.当一个需要显示的客户程序启动调用XOpenDisplay()也读这个文 件,并把找到的magic code 发送给 Xserver.当Xserver验证这

vs-为什么输入正确的username和userpass都显示登录失败

问题描述 为什么输入正确的username和userpass都显示登录失败 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms

这段代码哪里错了,一直在报错

问题描述 这段代码哪里错了,一直在报错 Date t = new Date(); long l = t.getTime(); Timestamp time = new Timestamp(l); Connection con = DBUtils.getConnetion(); String sql = ""select * from book_pl group by bookname having pl_date = ? order by avg(book_score) desc&qu

jsp页面-JSP页面登陆,一个账号文本框不管用户输入的是手机/邮箱都可以登陆

问题描述 JSP页面登陆,一个账号文本框不管用户输入的是手机/邮箱都可以登陆 解决方案 select * from table where @userinput = (phone or @userinput = email) and @password = pwd用类似这样的查询,or一下就可以了.假设userinput和password是输入 解决方案二: 做下判断就好了,有@和.com的字符串是邮箱,11位数字的书是手机号,其他的情况是用户名.需要注意的是在注册的时候用户名不能有@符号. 就

api-android系统是如何检测锁屏密码是否输入正确的?

问题描述 android系统是如何检测锁屏密码是否输入正确的? 例如,我们在android手机上设置了PIN锁屏密码,当我们输入密码的时候,系统是如何检验密码是否正确的?当我们连续输入几次错误之后,系统就会提示在35秒之后再试.我们能不能写一个程序检测到这个结果,当我们的程序知道系统出现这种提示之后去做我们想做的事,例如播放一首歌.问题是我们怎么才能接收到"系统提示35秒之后再试"这个信息呢?有系统API可以调用吗?请大家指教 解决方案 http://www.barryzhang.co