`
jsnjlc
  • 浏览: 50161 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JSP页面的验证码生成及调用方法

    博客分类:
  • Java
阅读更多

首先是要生成验证码:

package  XX.XX

import  java.io. * ;
import  java.util. * ;
import  javax.imageio. * ;
import  java.awt. * ;
import  java.awt.image. * ;

public   class  ImageEnsure  ... {
    
public  ImageEnsure()  ... {
    }


    
private   char  mapTable[]  =   ... { ' 0 ' ' 1 ' ' 2 ' ' 3 ' ,
                              
' 4 ' ' 5 ' ' 6 ' ' 7 ' ' 8 ' ' 9 ' }
;

    
public  String getEnsure( int  width,  int  height, OutputStream os)  ... {

        
if  (width  <=   0 )
            width 
=   60 ;
        
if  (height  <=   0 )
            height 
=   20 ;

        BufferedImage image 
=   new  BufferedImage(width, height,
                                                BufferedImage.TYPE_INT_RGB);

        
//  获取图形上下文
        Graphics g  =  image.getGraphics();

        
//  设定背景色
        g.setColor( new  Color( 0xDCCCCC ));
        g.fillRect(
0 0 , width, height);

        
// 画边框
        g.setColor(Color.black);
        g.drawRect(
0 0 , width  -   1 , height  -   1 );

        
//  取随机产生的认证码
        String strEnsure  =   "" ;

        
//  4代表4位验证码
         for  ( int  i  =   0 ; i  <   4 ++ i)  ... {
            strEnsure 
+=  mapTable[( int ) (mapTable.length  *  Math.random())];
        }


        
//  将认证码显示到图象中
        g.setColor(Color.red);
        g.setFont(
new  Font( " Atlantic Inline " , Font.PLAIN,  14 ));

        
// 画的具体坐标
        String str  =  strEnsure.substring( 0 1 );
        g.drawString(str, 
8 14 );
        str 
=  strEnsure.substring( 1 2 );
        g.drawString(str, 
20 15 );
        str 
=  strEnsure.substring( 2 3 );
        g.drawString(str, 
35 18 );
        str 
=  strEnsure.substring( 3 4 );
        g.drawString(str, 
45 15 );

        
//  释放图形上下文
        g.dispose();

        
try   ... {
            
//  输出图象到页面
            ImageIO.write(image,  " JPEG " , os);
        }
  catch  (IOException e)  ... {
            
return   "" ;
        }


        
return  strEnsure;
    }

}

然后是调用,可以在页面调用,也可以在servlet中调用,我推荐是单独的一个servlet调用,在页面调用可能会出现异常,但是不影响使用。在servlet中写上如下的代码:

         // 禁用缓存,每次访问此页面,都重新生成
        response.setHeader( " Pragma " , " No-cache " ); 
        response.setHeader(
" Cache-Control " , " no-cache " ); 
        response.setDateHeader(
" Expires " 0 ); 

        
// 生成验证码的实例对象
        ImageEnsure ie  =   new  ImageEnsure();

        
// 调用里面的方法,返回的是生成的验证码中的字符串
        String str  =  ie.getEnsure( 0 , 0 ,response.getOutputStream());

        
// 获得session,并把字符串保存在session中,为后面的对比做基础
        HttpSession session  =  request.getSession();
        session.setAttribute(
" strEnsure " , str);

然后把servlet内嵌到具体的网页中,具体嵌入就是用DreamWeaver在需要插入验证码的地方插入图像,地址就指向此servlet即可。
输入验证码并提交后,在新的页面中可以按如下方法判断:

 

   < body >
  
<%
  
// session的默认存在时间为20分钟,如果20分钟不输入验证码,session将会消失,因此要做下判断
   if (session.getAttribute( " strEnsure " ) == null )
  
... {
      
%>
      
< jsp:forward page = " ImageErr.jsp " />
      
<%
  }
else ... {
  
// 获取在session中保存的生成验证码的数字
  String ensure  =  (String)session.getAttribute( " strEnsure " );

  
// 获取在页面的表单中输入的验证码
  String code  =  request.getParameter( " txtimage " );

  
// 判断输入的验证码,跟保存的生成的验证码是否一样
   if (ensure.equals(code)  &&  code  !=   null )
  
... {
    
%>
    
< jsp:forward page = " searchword?method=add " />
    
<%
    }
else ... {
      
%>
      
< jsp:forward page = " ImageErr.jsp " />
      
<%
    }

  }

      
%>
 
</ body >
分享到:
评论

相关推荐

    jsp验证码生成以及刷新

    jsp 验证码生成和刷新详解 jsp 验证码生成和刷新是 Web 开发中非常重要的一部分。验证码的生成和刷新可以防止机器人攻击和恶意注册。下面我们将详细介绍 jsp 验证码生成和刷新的过程。 一、四位数据的验证图片生成...

    java 生成动态gif 验证码

    java 动态 gif 验证码 工具类 + servlet调用方法 + 测试jsp

    java完美的验证码生成

    可以定制的验证码 可以数字、英文、中文其中的任意组合,也可以定制组合的长度 这是一个完整的示例,可以根据自己的需求稍作修改 里面有完整的注释和操作方法

    使用Java技术来开发Web应用程序的技术框架,使用该技术实现用户登录验证码功能,后台功能代码+前端JSP页面代码

    验证码生成逻辑 1、前端调用API接口,向后端发起一个[获取验证码]请求。 2、后端得到请求,创建验证码ID(通常利用UUID直接创建),然后以各种方式生成一串随机内容(常见的包括英文、数字、中文、数学公式) 3、...

    验证码下载jsp

    // 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成 g.drawString(String.valueOf(code.charAt(rand)),13*i+6,16); } // 将认证码存入SESSION session.setAttribute("rand",sRand); // 图象生效 g....

    采用ajax实现的图片验证码

    2、在jsp页面,编写一个请求servlet的名称"&gt; 3、编写一个servlet,在servlet中产生图形验证码 ------------------------------------------------------------ //1、给客户端作出的回应是以图片的方式来回应 ...

    JSP开发之生成图片验证码技术的详解

    JSP开发之生成图片验证码技术的详解 我们在网页注册用户时,常常会需要格根据图片给的图片验证码把验证码输进去。那么我们今天就来学习这个。 简单来说分为三步骤: 1.底层用Java实现生成验证码图片 2.通过配置...

    JSP实用技巧集合,jsp编程的一些小技巧总结

    75. 请求jsp页面禁止缓存方法? 76. select选中其中的值自动到一个文本框? 77. JSP连接数据库? 78. JSP两级下拉列表框联动(数据库)? 79. JSP字符编码问题及转换大全? 80. 使用过滤器设置请求编码? 81. JSP或Servlet...

    jsp编程技巧集锦

    数字转中文 128 自动计算金额 129 JSP页面打印中使用WebBrowser控件 130 不刷新页面添加新的类别 131 鼠标滚动缩放图片 132 根据输入的表名生成输入数据表格 133 JSP表格输出到Excel 134.JSP...

    FreeMarke实例代码

    由FreeMarker生成页面,通过模板显示准备的数据 FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件 FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境 ...

    J2EE经典案例设计与实现

    案例8:JSP调用JavaBean在网页上动态生成柱状图 案例9:实现图片上传 案例10:JSP页面调用Applet实现人民币大小写转换 本章小结 第4章 Servlet高级编程设计与实现 案例1:Servlet中的多国语言显示 案例2:JSP调用...

    jeecms v3.0.1 开源jsp网站管理系统.rar

    · 在设计上自身预先做了搜索引擎优化,增强对搜索引擎的友好性 · 完全生成全站静态页面,可自定义路径结构,无需urlrewrite · 轻松建设大规模网站,可通过次级域名建立子站群,各子站后台管理权限分离,全站实现单...

    JspRun!社区论坛系统 v6.0.0 build 20110516 GBK 源码版.zip

    23、修改了:Js 调用所产生的论坛链接不能生成静态 URL 的问题。 24、修复了:前台自定义信息分类--日期控件IE下显示错误,谷歌浏览器下乱码现象 25、修改了:如果后台设置的“论坛名称”过长,在分栏模式下将出现...

    JspRun!社区论坛系统 v6.0.0 build 20110516 UTF-8 安装版.zip

    23、修改了:Js 调用所产生的论坛链接不能生成静态 URL 的问题。 24、修复了:前台自定义信息分类--日期控件IE下显示错误,谷歌浏览器下乱码现象 25、修改了:如果后台设置的“论坛名称”过长,在分栏模式下将出现...

    JAVA程序开发大全---上半部分

    20.5.4 生成随机验证码的imgNum类 358 20.5.5 用户登录页面index.jsp 359 20.5.6 验证用户登录信息的Servlet类login 360 20.6 显示宠物信息模块的实现 363 20.6.1 对应宠物的实体类User 363 20.6.2 定义对宠物信息...

    《Java-Web应用开发基础》教学课件08课程设计实例.pptx

    当客户端发送请求时,服务器端的Servlet通过JSP页面或HTML页面提取请求数据,并根据数据内容调用JavaBean访问数据库,进行计算处理或直接进行计算处理,然后把计算结果返回至Servlet,Servlet根据数据内容把计算结果...

    JspRun!社区论坛系统 v6.0.0 build 20110516 GBK 安装版.zip

    23、修改了:Js 调用所产生的论坛链接不能生成静态 URL 的问题。 24、修复了:前台自定义信息分类--日期控件IE下显示错误,谷歌浏览器下乱码现象 25、修改了:如果后台设置的“论坛名称”过长,在分栏模式下将出现...

    JspRun!社区论坛系统 v6.0.0 build 20110516 UTF-8 源码版.zip

    23、修改了:Js 调用所产生的论坛链接不能生成静态 URL 的问题。 24、修复了:前台自定义信息分类--日期控件IE下显示错误,谷歌浏览器下乱码现象 25、修改了:如果后台设置的“论坛名称”过长,在分栏模式下将出现...

    Java项目源码经典实用——提高必备【必学必看】

    Java验证码生成库 JCaptcha.rar JAXP数据验证引擎 Serene.zip JBoss事务处理 JBossTS.zip JDBC连接池、监控组件 Druid.zip JFCSwing用户图形界面 SwingML.rar JNI代码生成器 JNIGen.zip JSCSS压缩工具 YUI ...

    java开源包1

    Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码图片。 Java 命令行解析...

Global site tag (gtag.js) - Google Analytics