在 http://sourceforge.net/projects/simplecaptcha/ 开源项目上,这个验证码很容易使用!
- 导入Jar包:simplecaptcha-20050925.jar
- 配置web.xml:
<
servlet
>
< servlet-name > SimpleCaptcha </ servlet-name >
< display-name > SimpleCaptcha </ display-name >
< servlet-class > nl.captcha.servlet.SimpleCaptcha </ servlet-class >
</ servlet >
< servlet >
< servlet-name > Captcha </ servlet-name >
< display-name > Captcha </ display-name >
< servlet-class > nl.captcha.servlet.CaptchaServlet </ servlet-class >
<!-- border around captcha. Legal values are yes or no. Defaults to yes Other values will be ignored -->
< init-param >
< param-name > cap.border </ param-name >
< param-value > yes </ param-value >
</ init-param >
<!-- color of the border. Legal values are r,g,b(and optional alpaha) or white,black,etc. Other values will be ignored -->
< init-param >
< param-name > cap.border.c </ param-name >
< param-value > black </ param-value >
</ init-param >
<!-- thickness of the border around captcha. Legal values are > 0 other values will be ignored. Defaults to one -->
< init-param >
< param-name > cap.border.th </ param-name >
< param-value > 1 </ param-value >
</ init-param >
< init-param >
< param-name > cap.obscurificator </ param-name >
<!-- <param-value>nl.captcha.obscurity.imp.ShadowGimpyImp</param-value> -->
<!-- <param-value>nl.captcha.obscurity.imp.WaterRiple</param-value> -->
< param-value > nl.captcha.sandbox.TestGimpyImp </ param-value >
</ init-param >
< init-param >
< param-name > cap.cap.producer </ param-name >
< param-value >
nl.captcha.obscurity.DefaultCaptchaIml
</ param-value >
</ init-param >
< init-param >
< param-name > cap.word.imp </ param-name >
< param-value >
nl.captcha.text.imp.DefaultWordRenderer
</ param-value >
</ init-param >
< init-param >
< param-name > cap.text.producer </ param-name >
< param-value > nl.captcha.sandbox.ChineseTextProducer </ param-value >
<!--
<param-value>
nl.captcha.text.imp.FiveLetterFirstNameTextCreator
</param-value> -->
</ init-param >
< init-param >
< param-name > cap.char.arr </ param-name >
< param-value >
2,3,4,6,7,8,a,b,c,d,e,f,g,h,k,o,r,s,t,x,y
</ param-value >
</ init-param >
<!-- if default captcha producer is slelected this value represents the amount of chars that are supplied in the captcha. values below 2 are not exepted when omitted defaults to 5 -->
< init-param >
< param-name > cap.char.arr.l </ param-name >
< param-value > 6 </ param-value >
</ init-param >
< init-param >
< param-name > cap.font.arr </ param-name >
< param-value >
Arial,Helvetica,Courier,TimesRoman
</ param-value >
</ init-param >
< init-param >
< param-name > cap.font.size </ param-name >
< param-value > 40 </ param-value >
</ init-param >
< init-param >
< param-name > cap.font.color </ param-name >
< param-value > 166,31,255 </ param-value >
</ init-param >
< init-param >
< param-name > cap.bg.imp </ param-name >
< param-value >
nl.captcha.obscurity.imp.DefaultBackgroundImp
</ param-value >
</ init-param >
<!-- values can be either red,yellow,blue,cya etc or r,g,b,alpha value -->
< init-param >
< param-name > cap.background.c.to </ param-name >
< param-value > 255,255,255 </ param-value >
</ init-param >
< init-param >
< param-name > cap.background.c.from </ param-name >
< param-value > 75,75,255 </ param-value >
</ init-param >
< init-param >
< param-name > cap.noise.imp </ param-name >
< param-value >
nl.captcha.obscurity.imp.DefaultNoiseImp
</ param-value >
</ init-param >
< init-param >
< param-name > cap.noise.c </ param-name >
< param-value > 166,31,255 </ param-value >
</ init-param >
</ servlet >
< servlet-mapping >
< servlet-name > SimpleCaptcha </ servlet-name >
< url-pattern > /SimpleCaptcha.jpg </ url-pattern >
</ servlet-mapping >
< servlet-mapping >
< servlet-name > Captcha </ servlet-name >
< url-pattern > /Captcha.jpg </ url-pattern >
</ servlet-mapping >
< servlet-name > SimpleCaptcha </ servlet-name >
< display-name > SimpleCaptcha </ display-name >
< servlet-class > nl.captcha.servlet.SimpleCaptcha </ servlet-class >
</ servlet >
< servlet >
< servlet-name > Captcha </ servlet-name >
< display-name > Captcha </ display-name >
< servlet-class > nl.captcha.servlet.CaptchaServlet </ servlet-class >
<!-- border around captcha. Legal values are yes or no. Defaults to yes Other values will be ignored -->
< init-param >
< param-name > cap.border </ param-name >
< param-value > yes </ param-value >
</ init-param >
<!-- color of the border. Legal values are r,g,b(and optional alpaha) or white,black,etc. Other values will be ignored -->
< init-param >
< param-name > cap.border.c </ param-name >
< param-value > black </ param-value >
</ init-param >
<!-- thickness of the border around captcha. Legal values are > 0 other values will be ignored. Defaults to one -->
< init-param >
< param-name > cap.border.th </ param-name >
< param-value > 1 </ param-value >
</ init-param >
< init-param >
< param-name > cap.obscurificator </ param-name >
<!-- <param-value>nl.captcha.obscurity.imp.ShadowGimpyImp</param-value> -->
<!-- <param-value>nl.captcha.obscurity.imp.WaterRiple</param-value> -->
< param-value > nl.captcha.sandbox.TestGimpyImp </ param-value >
</ init-param >
< init-param >
< param-name > cap.cap.producer </ param-name >
< param-value >
nl.captcha.obscurity.DefaultCaptchaIml
</ param-value >
</ init-param >
< init-param >
< param-name > cap.word.imp </ param-name >
< param-value >
nl.captcha.text.imp.DefaultWordRenderer
</ param-value >
</ init-param >
< init-param >
< param-name > cap.text.producer </ param-name >
< param-value > nl.captcha.sandbox.ChineseTextProducer </ param-value >
<!--
<param-value>
nl.captcha.text.imp.FiveLetterFirstNameTextCreator
</param-value> -->
</ init-param >
< init-param >
< param-name > cap.char.arr </ param-name >
< param-value >
2,3,4,6,7,8,a,b,c,d,e,f,g,h,k,o,r,s,t,x,y
</ param-value >
</ init-param >
<!-- if default captcha producer is slelected this value represents the amount of chars that are supplied in the captcha. values below 2 are not exepted when omitted defaults to 5 -->
< init-param >
< param-name > cap.char.arr.l </ param-name >
< param-value > 6 </ param-value >
</ init-param >
< init-param >
< param-name > cap.font.arr </ param-name >
< param-value >
Arial,Helvetica,Courier,TimesRoman
</ param-value >
</ init-param >
< init-param >
< param-name > cap.font.size </ param-name >
< param-value > 40 </ param-value >
</ init-param >
< init-param >
< param-name > cap.font.color </ param-name >
< param-value > 166,31,255 </ param-value >
</ init-param >
< init-param >
< param-name > cap.bg.imp </ param-name >
< param-value >
nl.captcha.obscurity.imp.DefaultBackgroundImp
</ param-value >
</ init-param >
<!-- values can be either red,yellow,blue,cya etc or r,g,b,alpha value -->
< init-param >
< param-name > cap.background.c.to </ param-name >
< param-value > 255,255,255 </ param-value >
</ init-param >
< init-param >
< param-name > cap.background.c.from </ param-name >
< param-value > 75,75,255 </ param-value >
</ init-param >
< init-param >
< param-name > cap.noise.imp </ param-name >
< param-value >
nl.captcha.obscurity.imp.DefaultNoiseImp
</ param-value >
</ init-param >
< init-param >
< param-name > cap.noise.c </ param-name >
< param-value > 166,31,255 </ param-value >
</ init-param >
</ servlet >
< servlet-mapping >
< servlet-name > SimpleCaptcha </ servlet-name >
< url-pattern > /SimpleCaptcha.jpg </ url-pattern >
</ servlet-mapping >
< servlet-mapping >
< servlet-name > Captcha </ servlet-name >
< url-pattern > /Captcha.jpg </ url-pattern >
</ servlet-mapping >
测试:
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
>
< HTML >
< HEAD >
<% ... @ page
language="java"
contentType="text/html; charset=ISO-8859-1"
%>
< META http-equiv ="Content-Type" content ="text/html; charset=ISO-8859-1" >
< META name ="GENERATOR" content ="IBM WebSphere Studio" >
< TITLE > SimpleCapchaExample.jsp </ TITLE >
</ HEAD >
< BODY >
< br >< br >< br >< br >
<% ...
String c= (String)session.getAttribute(nl.captcha.servlet.Constants.SIMPLE_CAPCHA_SESSION_KEY) ;
String parm = (String) request.getParameter("captchafield");
out.println(parm + " ? " + c + ":");
if (c != null && parm != null) {
if (c.equals(parm)) {
out.println("<b>true</b>");
}else {
out.println("<b>false</b>");
}
}
%>
< br >
Any improvements are welcome at: < a href ="mailto:testvoogd@hotmail.com?subject=captcha&data=test" > testvoogd@hotmail.com </ a >< br >
< br >
< table >
< tr >
< td >< img src ="Captcha.jpg" >
</ td >
< td valign ="top" >
< form >
< br > sec code: < input type ="text" name ="captchafield" >< br >
< INPUT type ="submit" name ="submit" >
</ form >
</ td >
</ tr >
</ table >
</ BODY >
</ HTML >
< HTML >
< HEAD >
<% ... @ page
language="java"
contentType="text/html; charset=ISO-8859-1"
%>
< META http-equiv ="Content-Type" content ="text/html; charset=ISO-8859-1" >
< META name ="GENERATOR" content ="IBM WebSphere Studio" >
< TITLE > SimpleCapchaExample.jsp </ TITLE >
</ HEAD >
< BODY >
< br >< br >< br >< br >
<% ...
String c= (String)session.getAttribute(nl.captcha.servlet.Constants.SIMPLE_CAPCHA_SESSION_KEY) ;
String parm = (String) request.getParameter("captchafield");
out.println(parm + " ? " + c + ":");
if (c != null && parm != null) {
if (c.equals(parm)) {
out.println("<b>true</b>");
}else {
out.println("<b>false</b>");
}
}
%>
< br >
Any improvements are welcome at: < a href ="mailto:testvoogd@hotmail.com?subject=captcha&data=test" > testvoogd@hotmail.com </ a >< br >
< br >
< table >
< tr >
< td >< img src ="Captcha.jpg" >
</ td >
< td valign ="top" >
< form >
< br > sec code: < input type ="text" name ="captchafield" >< br >
< INPUT type ="submit" name ="submit" >
</ form >
</ td >
</ tr >
</ table >
</ BODY >
</ HTML >