jsp页面无法取出servlet生成的验证码,求解。

问题描述

用的是patchca来生成验证码,patchca-0.5.0.jar包已经引入。servlet配置如下:importjava.awt.Color;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.OutputStream;importjava.util.Random;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;//Q277160299importorg.patchca.color.ColorFactory;importorg.patchca.color.SingleColorFactory;importorg.patchca.filter.predefined.CurvesRippleFilterFactory;importorg.patchca.filter.predefined.DiffuseRippleFilterFactory;importorg.patchca.filter.predefined.DoubleRippleFilterFactory;importorg.patchca.filter.predefined.MarbleRippleFilterFactory;importorg.patchca.filter.predefined.WobbleRippleFilterFactory;importorg.patchca.service.ConfigurableCaptchaService;importorg.patchca.utils.encoder.EncoderHelper;importorg.patchca.word.RandomWordFactory;publicclassCaptchaServletextendsHttpServlet{privatestaticfinallongserialVersionUID=3796351198097771007L;privatestaticConfigurableCaptchaServicecs=null;privatestaticColorFactorycf=null;privatestaticRandomWordFactorywf=null;privatestaticRandomr=newRandom();privatestaticCurvesRippleFilterFactorycrff=null;privatestaticMarbleRippleFilterFactorymrff=null;privatestaticDoubleRippleFilterFactorydrff=null;privatestaticWobbleRippleFilterFactorywrff=null;privatestaticDiffuseRippleFilterFactorydirff=null;@Overridepublicvoidinit()throwsServletException{super.init();cs=newConfigurableCaptchaService();cf=newSingleColorFactory(newColor(25,60,170));wf=newRandomWordFactory();crff=newCurvesRippleFilterFactory(cs.getColorFactory());drff=newDoubleRippleFilterFactory();wrff=newWobbleRippleFilterFactory();dirff=newDiffuseRippleFilterFactory();mrff=newMarbleRippleFilterFactory();cs.setWordFactory(wf);cs.setColorFactory(cf);cs.setWidth(120);cs.setHeight(50);}@Overridepublicvoiddestroy(){wf=null;cf=null;cs=null;super.destroy();}publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType("image/png");response.setHeader("cache","no-cache");wf.setMaxLength(5);wf.setMinLength(3);HttpSessionsession=request.getSession(true);OutputStreamos=response.getOutputStream();switch(r.nextInt(5)){case0:cs.setFilterFactory(crff);break;case1:cs.setFilterFactory(mrff);break;case2:cs.setFilterFactory(drff);break;case3:cs.setFilterFactory(wrff);break;case4:cs.setFilterFactory(dirff);break;}Stringcaptcha=EncoderHelper.getChallangeAndWriteImage(cs,"png",os);session.setAttribute("captcha",captcha);os.flush();os.close();}}

web.xml配置如下:<servlet-mapping><servlet-name>CaptchaServlet</servlet-name><url-pattern>/patchca.png</url-pattern></servlet-mapping>

验证码取出页面如下:<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%><%Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="pragma"content="no-cache"><metahttp-equiv="cache-control"content="no-cache"><metahttp-equiv="expires"content="0"><metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"><metahttp-equiv="description"content="Thisismypage"><basehref="<%=basePath%>"></base></head><body><table><tr>  <!--patchca.png和servlet中的<url-pattern>对应-->  <td><imgsrc="patchca.png"alt="验证码"style="cursor:pointer;vertical-align:text-bottom;"onclick="this.src=this.src+'?'+Math.random();"></td>  <tdvalign="top">  <formmethod="post"action="gojsp"><br>  验证码:<inputtype="text"name="patchcafield"><br/>  <inputtype="submit"name="submit">  </form></td></tr></table></body></html>

现在问题是,我在验证码页面,不能取出验证码图片。从浏览器中进入servlet路径,也是没有反应。而我的验证码的img路径参考了很多帖子,放了servlet的路径,应该没问题啊。请教。

解决方案

解决方案二:
<servlet><servlet-name>captchaServlet</servlet-name><servlet-class>CaptchaServlet</servlet-class></servlet><servlet-mapping><servlet-name>captchaServlet</servlet-name><url-pattern>/patchca.png</url-pattern></servlet-mapping>

其他都没错,至少在XML配置时候少了。
解决方案三:
其他都没错,只是在XML配置时候少了。
解决方案四:
这个我配了,是我忘了粘了。是这部分吧。<servlet><description>ThisisthedescriptionofmyJ2EEcomponent</description><display-name>ThisisthedisplaynameofmyJ2EEcomponent</display-name><servlet-name>CaptchaServlet</servlet-name><servlet-class>com.test.servlet.CaptchaServlet</servlet-class></servlet>

这些都有,可问题就是不能解决。
解决方案五:
没有人指教一下吗。各位大佬。
解决方案六:
<formaction="验证码Servlet">
解决方案七:
在doPost()调用doGet()方法,<formmethod="post">,省略action属性,试试
解决方案八:
试过了,不行。formaction是跳转到另一个检验输入结果正确与否的页面go.jsp,好像不是这里的问题。继续坐等指教。引用6楼的回复:

在doPost()调用doGet()方法,<formmethod="post">,省略action属性,试试

解决方案九:
我已经试过了,是可以的,还不行的找我rjzou@qq.com
解决方案十:
奇怪,我的怎么不行。本地环境,mycelipse,ssh框架,验证码jsp页面文件夹目录在根目录下,与WEB-INF同级。引用8楼的回复:

我已经试过了,是可以的,还不行的找我rjzou@qq.com

解决方案十一:
还是没有人解答吗。
解决方案十二:
<td><imgsrc="/<%=path%>/patchca.png"alt="验证码"style="cursor:pointer;vertical-align:text-bottom;"onclick="this.src='/<%=path%>/patchca.png'+'?'+Math.random();"></td>
解决方案十三:
http://download.csdn.net/detail/s478853630/4064638注释齐全,你都看得懂的
解决方案十四:
全部不行,jsp页面仍然刷不出验证码图片,持续读取,没有结果。也不报错。我觉得各位的配置应该都没有问题,但我的机器就是刷不出来,很费解啊这个事,崩溃。引用12楼的回复:

http://download.csdn.net/detail/s478853630/4064638注释齐全,你都看得懂的

解决方案十五:
按照上面各位所说的,可能是浏览器兼容问题,换换浏览器测试
解决方案:
ffie都试过,不行,难道这个问题真要僵死了吗。
解决方案:
可能是验证码servlet的代码有问题,我以前也遇到这问题引用11楼的回复:

  <td><imgsrc="/<%=path%>/patchca.png"alt="验证码"style="cursor:pointer;vertical-align:text-bottom;"onclick="this.src='/<%=path%>/patchca.png'+'?'+Math.random();"></td>

解决方案:
我找了好几份代码试用,都是一样的问题,而楼上的那位仁兄用我贴的这个代码也成功了,我就搞不明白了。恼死我了,难道上天整我来了。引用16楼的回复:

可能是验证码servlet的代码有问题,我以前也遇到这问题引用11楼的回复:<td><imgsrc="/<%=path%>/patchca.png"alt="验证码"style="cursor:pointer;vertical-align:text-bottom;"onclick="this.src='/<%=path%>/patchca.png'+'?'+Math.r……

解决方案:
我一行一行的找了一下原因,发现servlet中,跳入这一行的时候,就不往下走了,也没有报错!Graphicsgraphics=image.createGraphics()
解决方案:
是否路径的问题,测试下吧
解决方案:
好东西,果断下载一个~~~

时间: 2024-11-10 00:05:23

jsp页面无法取出servlet生成的验证码,求解。的相关文章

jsp引用servlet生成的验证码代码演示_JSP编程

此演示代码主要包括以下三部分:1.checkCode.java:用于生成验证码2.checkCodeServler3.check.jsp 验证 下面是checkCode.java的内容: 复制代码 代码如下: //用于获取四位随机数     private char mapTable[] = {'0','1','2','3','4','5','6','7','8','9'};      //生成验证码,并返回随机生成的数字     public String getEnsure(int widt

jsp页面中读取servlet中设定的session值

问题描述 这是我在servlet里设定session值的语句:request.getSession().setAttribute("valiCode",str.toString());这是我在jsp页面中读取session值的语句:StringrightCheckCode=(String)request.getSession().getValue("valiCode");可是纳闷:rightCheckCode的值为空(NULL)请人赐教... 解决方案 解决方案二:

模板生成jsp页面

问题描述 问一下,把数据库里的表放到jsp页面中,就是生成多个页面,这你们做过这样的没??本身没有jsp页面,当程序运行时,产生的.具体例子是:例如有个usergroups表,有多个用户的权限的记录,每条记录是一个用户组,当运行时,生成多个jsp页面,每个页面代表一个用户组,在里面用map保存,数据.直接用文件生成好像不行吧,目的是放在jsp页面中,比数据库中拿数据快点.不是内存,是物理存在的jsp页面.在用到得页面这样取<jsp:includepage="forumdata/cache/

pdf-怎么把JSP页面在后台生成PDF文件

问题描述 怎么把JSP页面在后台生成PDF文件 JSP页面要在后台生成PDF文件,就大神解决,经理要我把JSP页面生成PDF文件 解决方案 http://www.iteye.com/topic/509417 解决方案二: 看看这个.

JSP转译成Servlet详细过程

JSP转译成Servlet详细过程 JSP转译成Servlet详细过程   JSP是Servlet的扩展,在没有JSP之前,就已经出现了Servlet技术.Servlet是利用输出流动态生成HTML页面,包括每一个HTML标签和每个在HTML页面中出现的内容.     由于包括大量的HTML标签.大量的静态文本及格式等,导致Servlet的开发效率极为低下.所有的表现逻辑,包括布局.色彩及图像等,都必须耦合在Java代码中,这的确让人不胜其烦.JSP的出现弥补了这种不足,JSP通过在标准的HTM

JSP编译成Servlet(三)JSP编译后的Servlet

JSP编译后的Servlet类会是怎样的呢他们之间有着什么样的映射关系在探讨JSP与Servlet之间的关系时先看一个简单的HelloWorld.jsp编译成HelloWorld.java后会是什么样. ①HelloWorld.jsp <%@ page contentType="text/html; charset=gb2312" language="java" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD

有关jsp-servlet中有两个setattribute方法在jsp页面怎么调用

问题描述 servlet中有两个setattribute方法在jsp页面怎么调用 servlet中有两个setattribute方法在jsp页面怎么调用 解决方案 在jsp页面上直接el表达式获取后台存入session的值的.例如在jsp中直接操作: ${sessionScope.service} 解决方案二: request.getAttribute("id"); session.getAttribute("service");

servlet-spring mvc项目访问jsp页面出错

问题描述 spring mvc项目访问jsp页面出错 严重: Servlet.service() for servlet jsp threw exception java.lang.ArrayIndexOutOfBoundsException at java.lang.System.arraycopy(Native Method) at org.gjt.xpp.impl.tokenizer.Tokenizer.next(Tokenizer.java:1274) at org.gjt.xpp.im

jsp页面取不到值,纠结....

问题描述 用java写了一个发帖的小程序,可以发帖子,但是帖子在jsp页面读不出来!郁闷,求解...贴出一部分我的代码:jsp页面代码:用了两种标签都取不出来! <s:debug></s:debug>${text} <c:forEach items="${bbs}" var="v"><table width="98%" border="0" cellspacing="1&qu