Java通用验证码程序及应用示例(提供源码文档下载)

来源:互联网 发布:类似it桔子 编辑:程序博客网 时间:2024/06/08 14:07

把之前项目中写的一个Java通用验证码程序整理了一下,与大家分享,希望能抛砖引玉。

 

 

一、主要功能:

 

1、支持纯数字、大写字母、小写字母,及两两混合或三者混合类型验证码;

2、支持自定义特殊字符排除(如0oOi1jI);

3、支持图片及文字两种类型验证码;

4、支持自定义验证码图片大小;

5、支持自定义干扰线条数;

6、支持自定义及随机定义图片、文字、干扰线颜色;

 

其他:页面提供了<iframe>和<img>两种页面显示验证码的方式。

 

a、仅阿拉伯数字

b、仅字母(大小写混合)

c、仅小写字母

d、仅大写字母

d、数字与小写字母混合

e、数字与大写字母混合

f、数字与大小写字母混合

g、自定义字符颜色(或随机)

h、自定义图片颜色(或随机)

i、自定义干扰线的条数及颜色(或随机)

j、自定义验证码图片大小

k、自定义需排除的特殊字符(如0o等难分辨字符)

 

 

二、代码说明:

 

1、pubMsg.jsp 发表留言页面,实现<iframe>和<img>两种显示验证码方式,及ajax提交功能

 

页面代码:

 

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title><%=basePath%></title>
  </head>

  <script type="text/javascript">
 
  var req;
 
  //提交留言
  function pubMsg(){

      msgTitle=document.msgForm.msgTitle.value;
      msgContent=document.msgForm.msgContent.value;
      verifyCode=document.msgForm.verifyCode.value;
     
      //检查输入内容格式
      if(msgTitle.length<5||msgContent.length<5)
      {
          alert("标题和内容不能少于5个字符");
          return;
      }
    if(verifyCode.length==0){
        alert("请输入验证码");
        return;
    }
   
    //获得XMLHttpRequest对象
    if(window.XMLHttpRequest)
        req=new XMLHttpRequest();
    else if(window.ActiveXObject)
        req=new ActiveXObject("Microsoft.XMLHTTP");
   
    //提交请求
    if(req){
        req.onreadystatechange=callBack;//指定服务器响应结果处理函数(注意仅函数名无括号)
        url="<%=path%>/servlet/PubMsgServlet?msgTitle="+msgTitle+"&msgContent="+msgContent+"&verifyCode="+verifyCode;
        req.open("GET",url,false);
        req.send();
       
    }
 
  }
 
  //服务器响应结果处理函数
  function callBack(){

      if(req.readyState==4){
          if(req.status==200){
              next=req.responseText;//获得服务器处理结果
              if(next=="this"){
                  alert("验证码不正确,请重新输入");
                  verifyCodeFrame.location.reload();//刷新验证码
              }
              else{
                  document.msgForm.msgTitle.value="";
                  document.msgForm.msgContent.value="";
                  window.location=next;//跳转页面
              }
          }else
          {
              alert(req.status+":"+req.statusText);
          }
      }
      document.msgForm.verifyCode.value="";
  }
 
  //更换验证码
  function changeVerifyCode(){
   
    //1、如果用<iframe>实现,则重新加载<iframe>的内容
      //verifyCodeFrame.location.reload();
     
      //2、如果用<img>实现,则修改<img src=url>的url
      //这里有一个小技巧,如果给url赋相同的值,浏览器不会重新发出请求,因此用js生成一个即时毫秒数做url中的参数
      t=new Date().getTime();
      document.msgForm.verifyCodeImg.src="<%=path%>/servlet/VerifyCodeServlet?t="+t;
  }
  
  </script>
 
  <body>
 
  <form name="msgForm" action="" method="post">
  <table border=0>
  <tr><td>标题:</td><td><input name="msgTitle" size="65"/></td></tr>
  <tr><td>内容:</td><td><textarea name="msgContent" rows="10" cols="64"></textarea></td></tr>
  <tr><td>验证码:</td><td><input name="verifyCode" style="height:29px;width=70px;font-size:25px"/>
 
  <!-- 采用<iframe>实现 -->
  <!--
  <iframe name="verifyCodeFrame" src="<%=path+"/servlet/VerifyCodeServlet"%>" width="100" height="30" frameborder=0 align="top" marginheight=0 marginwidth=0 scrolling=no></iframe>
   -->
  
  <!-- 采用<img>实现 -->
  <img name="verifyCodeImg" src="<%=path%>/servlet/VerifyCodeServlet" style="cursor:hand" align="top" onClick="changeVerifyCode()"/>
 
  <font style="color:blue;font-size=14"><a href="javascript:changeVerifyCode()">看不清?</a></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  <input type="button" value=" 发表留言 " onClick="pubMsg()"/></td></tr>

  </table>
  </form>
 
  </body>
 
</html>

 

 

 

2、ok.jsp 留言发布成功页面(示意)

 

页面代码:

 

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <body>
    您的留言已提交!<input type="button" value=" OK " onClick="window.history.go(-1)"/><br>
  </body>
</html>

 

 

3、org.javachina.util.VerifyCode.java 验证码生成器类

 

 

4、org.javachina.servlet.VerifyCodeServlet.java 接受客户端请求,向客户端输出验证码

 

 

 

5、org.javachina.servlet.PubMsgServlet.java 保存留言信息(比对验证码)

 


以上源码、文档下载地址:http://download.csdn.net/source/1851509

 

以上,望抛砖引玉,欢迎交流:hufoking@hotmail.com!

 

原创粉丝点击