熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

使用kaptcha生成驗證碼

2013-11-23 19:36:49  來源: Java核心技術 

  kaptcha是一個簡單好用的驗證碼生成工具通過配置可以自己定義驗證碼大小顏色顯示的字符等等
   
    下載kaptcha
   
   
   
    新建一個Web項目並將下載壓縮包中的kaptchajar放在項目的WEBINF/lib目錄下
   
    配置webxml文件
   
    <?xml version= encoding=UTF?><webapp version=
   
    xmlns=
   
    xmlns:xsi=instance
   
    xsi:schemaLocation=
   
    app__xsd>  <displayname></displayname>
   
    <! kaptcha驗證碼配置 >
   
    <servlet>
   
    <! 生成圖片的Servlet >
   
    <servletname>Kaptcha</servletname>
   
    <servletclass>dekaptchaservletKaptchaServlet</servletclass>
   
    <! 是否有邊框>
   
    <initparam>
   
    <paramname>kaptchaborder</paramname>
   
    <paramvalue>no</paramvalue>
   
    </initparam>
   
    <! 字體顏色 >
   
    <initparam>
   
    <paramname>kaptchatlor</paramname>
   
    <paramvalue>red</paramvalue>
   
    </initparam>
   
    <! 圖片寬度 >
   
    <initparam>
   
    <paramname>kaptchaimagewidth</paramname>
   
    <paramvalue></paramvalue>
   
    </initparam>
   
    <! 使用哪些字符生成驗證碼 >
   
    <initparam>
   
    <paramname>kaptchatextproducercharstring</paramname>
   
    <paramvalue>ACDEFHKPRSTWX</paramvalue>
   
    </initparam>
   
    <! 圖片高度 >
   
    <initparam>
   
    <paramname>kaptchaimageheight</paramname>
   
    <paramvalue></paramvalue>
   
    </initparam>
   
    <! 字體大小 >
   
    <initparam>
   
    <paramname>kaptchatextproducerfontsize</paramname>
   
    <paramvalue></paramvalue>
   
    </initparam>
   
    <! 干擾線的顏色 >
   
    <initparam>
   
    <paramname>lor</paramname>
   
    <paramvalue>black</paramvalue>
   
    </initparam>
   
    <! 字符個數 >
   
    <initparam>
   
    <paramname>kaptchatextproducercharlength</paramname>
   
    <paramvalue></paramvalue>
   
    </initparam>
   
    <! 使用哪些字體 >
   
    <initparam>
   
    <paramname>kaptchatextproducerfontnames</paramname>
   
    <paramvalue>Arial</paramvalue>
   
    </initparam>
   
    </servlet>
   
    <! 映射的url >
   
    <servletmapping>
   
    <servletname>Kaptcha</servletname>
   
    <urlpattern>/Kaptchajpg</urlpattern>
   
    </servletmapping>
   
    <welcomefilelist>
   
    <welcomefile>indexjsp</welcomefile>  </welcomefilelist></webapp>
   
    顯示驗證碼的頁面indexjsp
   
    <%@ page language=java contentType=text/html; charset=UTF
   
    pageEncoding=UTF%><!DOCTYPE html PUBLIC //WC//DTD HTML Transitional//EN ><html><head><meta httpequiv=ContentType content=text/html; charset=UTF><title>驗證碼</title><script type=text/javascript>
   
    //點擊切換驗證碼
   
    function changeVerifyCode(img){
   
    imgsrc = Kaptchajpg?+Mathfloor(Mathrandom()*
   
    }</script></head><body>
   
    <p>
   
    <form action=resultjsp>
   
    <table>
   
    <tr>
   
    <td>
   
    &nbsp;
   
    </td>
   
    <td>
   
    <img src=Kaptchajpg onclick=changeVerifyCode(this) style=cursor: pointer;>
   
    </td>
   
    </tr>
   
    <tr>
   
    <td>
   
    請輸入驗證碼
   
    </td>
   
    <td>
   
    <input type=text name=verifyCode>
   
    </td>
   
    </tr>
   
    <tr>
   
    <td>
   
    &nbsp;
   
    </td>
   
    <td>
   
    <input type=submit value=提交>
   
    </td>
   
    </tr>
   
    </table>
   
    </form>
   
    </body></html>
   
    運行項目顯示結果



  

  最後加上異步驗證看輸入的驗證碼是否正確
   
    )增加一個驗證的Servlet
   
    package cnluxhservlet;import javaioIOException;import javaioPrintWriter;import javaxservletServletException;import javaxservlethttpHttpServlet;import javaxservlethttpHttpServletRequest;import javaxservlethttpHttpServletResponse;public class VerifyServlet extends HttpServlet {
   
    public void doGet(HttpServletRequest request HttpServletResponse response)
   
    throws ServletException IOException {
   
    responsesetContentType(text/html;charaset=utf
   
    responsesetHeader(pragma nocache
   
    responsesetHeader(cachecontrol nocache
   
    PrintWriter out = null;
   
    try {
   
    //響應數據
   
    String resultData;
   
    //獲取傳過來的驗證碼
   
    String verifyCode = requestgetParameter(verifyCode
   
    Systemoutprintln(verifyCode+verifyCode)
   
    if(verifyCode==) {
   
    resultData = N;
   
    }else {
   
    //獲取kaptcha生成存放在session中的驗證碼
   
    String kaptchaValue = (String) requestgetSession()getAttribute(dekaptchaConstantsKAPTCHA_SESSION_KEY)
   
    //比較輸入的驗證碼和實際生成的驗證碼是否相同
   
    if(kaptchaValue = null || kaptchaValue =||!verifyCodeequalsIgnoreCase(kaptchaValue)) {
   
    resultData = N;
   
    }else {
   
    resultData = Y;
   
    }
   
    }
   
    out = responsegetWriter()
   
    outwrite(resultData)
   
    outflush()
   
    }catch(Exception e) {
   
    eprintStackTrace()
   
    }finally {
   
    if(out != null) {
   
    outclose()
   
    }
   
    }
   
    }
   
    }
   
    )在webxml中添加這個Servlet的配置
   
    <! 檢查驗證碼是否輸入正確 >
   
    <servlet>
   
    <servletname>VerifyServlet</servletname>
   
    <servletclass>cnluxhservletVerifyServlet</servletclass>
   
    </servlet>
   
    <servletmapping>
   
    <servletname>VerifyServlet</servletname>
   
    <urlpattern>/VerifyServlet</urlpattern>
   
    </servletmapping>
   
    )頁面indexjsp
   
    <%@ page language=java contentType=text/html; charset=UTF
   
    pageEncoding=UTF%><!DOCTYPE html PUBLIC //WC//DTD HTML Transitional//EN ><html><head><meta httpequiv=ContentType content=text/html; charset=UTF><title>驗證碼</title><script type=text/javascript src=${pagntextPath}/jqueryminjs></script><script type=text/javascript>
   
    //點擊切換驗證碼
   
    function changeVerifyCode(img){
   
    imgsrc = Kaptchajpg?+Mathfloor(Mathrandom()*
   
    }
   
    //提交
   
    function doSubmit() {
   
    var verifyCodeValue = $(#verifyCodeval()
   
    if(verifyCodeValuereplace(/\s/g) == ) {
   
    alert(請輸入驗證碼
   
    }else {
   
    //提交前先異步檢查驗證碼是否輸入正確
   
    var = ${pagntextPath}/VerifyServlet?verifyCode=+verifyCodeValue;
   
    $ajax({
   
    type:GET
   
    url:
   
    success:function(returnData){
   
    if(returnData!=Y) {
   
    alert(請輸入正確的驗證碼!
   
    }else {
   
    //驗證碼正確進行提交操作
   
    //……
   
    }
   
    }
   
    error:function(e){
   
    alert(e)
   
    }
   
    })
   
    }
   
    }</script></head><body>
   
    <p>
   
    <form action=resultjsp>
   
    <table>
   
    <tr>
   
    <td>
   
    &nbsp;
   
    </td>
   
    <td>
   
    <img src=Kaptchajpg onclick=changeVerifyCode(this) style=cursor: pointer;>
   
    </td>
   
    </tr>
   
    <tr>
   
    <td>
   
    請輸入驗證碼
   
    </td>
   
    <td>
   
    <input type=text name=verifyCode id=verifyCode>
   
    </td>
   
    </tr>
   
    <tr>
   
    <td>
   
    &nbsp;
   
    </td>
   
    <td>
   
    <input type=button value=提交 onclick=doSubmit()>
   
    </td>
   
    </tr>
   
    </table>
   
    </form>
   
    </body></html>
   
    )運行結果




  


From:http://tw.wingwit.com/Article/program/Java/hx/201311/27179.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.