CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

50分:要个jsp 生成验证码,提交后怎么验证

楼主luo_jian_dong(我帅,我容易吗)2006-03-06 03:10:34 在 Java / Web 开发 提问

有具体代码最好,  
  关键提交后又是怎么对比验证 问题点数:30、回复次数:6Top

1 楼qinzy(小秦)回复于 2006-03-06 08:27:30 得分 3

把验证码存入session,接收页验证下是否存在Top

2 楼wangx1949()回复于 2006-03-06 09:19:41 得分 3

可以直接做为一个页面参数post到下个页面,我是这么做的Top

3 楼Hellohuan(java 好不好???)回复于 2006-03-06 09:54:51 得分 6

<%@   page   contentType="image/jpeg"   import="java.awt.*,    
  java.awt.image.*,java.util.*,javax.imageio.*"   %>    
  <%    
  //   在内存中创建图象    
  int   width=60,   height=20;    
  BufferedImage   image   =   new   BufferedImage(width,   height,    
  BufferedImage.TYPE_INT_RGB);    
   
  //   获取图形上下文    
  Graphics   g   =   image.getGraphics();    
   
  //   设定背景色    
  g.setColor(new   Color(0xDCDCDC));    
  g.fillRect(0,   0,   width,   height);    
   
  //画边框    
  g.setColor(Color.black);    
  g.drawRect(0,0,width-1,height-1);    
   
  //   取随机产生的认证码(4位数字)    
  String   rand   =   request.getParameter("rand");    
  rand   =   rand.substring(0,rand.indexOf("."));    
  switch(rand.length())    
  {    
  case   1:   rand   =   "000"+rand;   break;    
  case   2:   rand   =   "00"+rand;   break;    
  case   3:   rand   =   "0"+rand;   break;    
  default:   rand   =   rand.substring(0,4);   break;    
  }    
   
  //   将认证码存入SESSION    
  session.setAttribute("rand",rand);    
   
  //   将认证码显示到图象中    
  g.setColor(Color.black);    
  Integer   tempNumber   =   new   Integer(rand);    
  String   numberStr   =   tempNumber.toString();    
   
  g.setFont(new   Font("Atlantic   Inline",Font.PLAIN,18));    
  String   Str   =   numberStr.substring(0,1);    
  g.drawString(Str,8,17);    
   
  Str   =   numberStr.substring(1,2);    
  g.drawString(Str,20,15);    
  Str   =   numberStr.substring(2,3);    
  g.drawString(Str,35,18);    
   
  Str   =   numberStr.substring(3,4);    
  g.drawString(Str,45,15);    
   
  //   随机产生88个干扰点,使图象中的认证码不易被其它程序探测到    
  Random   random   =   new   Random();    
  for   (int   i=0;i<20;i++)    
  {    
  int   x   =   random.nextInt(width);    
  int   y   =   random.nextInt(height);    
  g.drawOval(x,y,0,0);    
  }    
   
  //   图象生效    
  g.dispose();    
   
  //   输出图象到页面    
  ImageIO.write(image,   "JPEG",   response.getOutputStream());    
  %>Top

4 楼zhjlzl1314(勇敢的心)回复于 2006-03-06 10:10:38 得分 10

生成验证码文件:  
  <%@   page   contentType="image/jpeg"   import="java.awt.*,  
  java.awt.image.*,java.util.*,javax.imageio.*"   %>  
  <%!  
          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);  
          }  
  %>  
  <%  
  out.clear();//这句针对resin服务器,如果是tomacat可以不要这句  
  response.setHeader("Pragma","No-cache");  
  response.setHeader("Cache-Control","no-cache");  
  response.setDateHeader("Expires",   0);  
   
  int   width=60,   height=20;  
  BufferedImage   image   =   new   BufferedImage(width,   height,   BufferedImage.TYPE_INT_RGB);  
   
   
  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.PLAIN,18));  
   
   
   
  g.setColor(getRandColor(160,200));  
  for   (int   i=0;i<155;i++)  
  {  
  int   x   =   random.nextInt(width);  
  int   y   =   random.nextInt(height);  
          int   xl   =   random.nextInt(12);  
          int   yl   =   random.nextInt(12);  
  g.drawLine(x,y,x+xl,y+yl);  
  }  
   
   
  String   sRand="";  
  for   (int   i=0;i<4;i++){  
      String   rand=String.valueOf(random.nextInt(10));  
      sRand+=rand;  
   
      g.setColor(new   Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));  
      g.drawString(rand,13*i+6,16);  
  }  
   
  //   将认证码存入SESSION  
  session.setAttribute("rand",sRand);  
   
  g.dispose();  
   
  ImageIO.write(image,   "JPEG",   response.getOutputStream());  
  %>  
   
  验证:  
  <%  
        //读取提交的表单内容  
        String   rand=(String)session.getAttribute("rand");  
        String   input=request.getParameter("rand");  
        if   (rand.equals(input))    
        {  
          response.sendRedirect("success.jsp");  
        }  
        else  
        {  
          .....  
          }  
   
  %>  
  html代码自己写  
  Top

5 楼joneyonly()回复于 2006-03-06 10:19:51 得分 3

upTop

6 楼crazy_he(天煞孤星)回复于 2006-03-06 10:22:41 得分 5

勇敢的心的代码测试通过!    
   
  好不好的代码有点问题。Top

相关问题

  • 在线求助:关于JSP生成验证码的问题!
  • 高分请教jsp生成验证码的问题!谢谢
  • 表单提交验证:
  • 怎么样验证JSP提交的文本框的内容,使其必须为HH:MM-HHMM?
  • post提交想生成乱码
  • jsp生成excel的问题!
  • jsp验证码问题
  • 怎样用验证控件RangeValidator1来验证datagrid自动生成的textbox控件?
  • 关于生成验证码的图片,要请教
  • 如何对动态生成的text文本框进行验证?

关键词

  • 验证
  • 代码
  • 页面
  • 生成验证码
  • 提交

得分解答快速导航

  • 帖主:luo_jian_dong
  • qinzy
  • wangx1949
  • Hellohuan
  • zhjlzl1314
  • joneyonly
  • crazy_he

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo