jar包: commons-collections.jar commons-logging.jar jcaptcha-1.0-all.jar public class MyImageSingleton { private static ImageCaptchaService instance =new DefaultManageableImageCaptchaService(); static { instance = new DefaultManageableImageCaptchaService( new FastHashMapCaptchaStore(), new MyImageCaptchaEngine(), 180, 100000, 75000); } public static ImageCaptchaService getMyInstance(){ return instance; } } ======================== public class MyImageCaptchaEngine extends ListImageCaptchaEngine { // 随机生成的字符组成 private static final String RANDOM_WORD_GENERATOR = "0123456789"; // 验证码图片上显示的字符个数 private static final int TEXT_SIZE = 4; //验证码图片上显示的字符的大小设置 private static final int TEXT_WIDTH = 12; private static final int TEXT_HEIGHT = 13; // 验证码图片的大小设置 private static final int IMAGE_CAPTCHA_WIDTH = 50; private static final int IMAGE_CAPTCHA_HEIGHT = 20; // protected void buildInitialFactories() { // // 随机生成的字符 // WordGenerator wgen = new RandomWordGenerator(RANDOM_WORD_GENERATOR); // RandomRangeColorGenerator cgen = new RandomRangeColorGenerator( // new int[]{ 0, 100 }, new int[]{ 0, 100 }, new int[]{ 0, 100 }); // // 文字显示的个数 // TextPaster textPaster = new RandomTextPaster(new Integer(TEXT_SIZE), // new Integer(TEXT_SIZE), cgen, Boolean.TRUE); // // 图片的大小 // BackgroundGenerator backgroundGenerator = new FunkyBackgroundGenerator( // new Integer(IMAGE_CAPTCHA_WIDTH), new Integer( // IMAGE_CAPTCHA_HEIGHT)); // // 字体格式 // Font[] fontsList = new Font[]{ new Font("Arial", 0, 12), // new Font("Tahoma", 0, 12), new Font("Verdana", 0, 12), }; // // 文字的大小 // FontGenerator fontGenerator = new RandomFontGenerator(new Integer( // TEXT_WIDTH), new Integer(TEXT_HEIGHT), fontsList); // // WordToImage wordToImage = new ComposedWordToImage(fontGenerator, // backgroundGenerator, textPaster); // this.addFactory(new GimpyFactory(wgen, wordToImage)); // } protected void buildInitialFactories() { WordGenerator wgen = new RandomWordGenerator("abcdefghijklmnopquvwxyz123456789"); RandomRangeColorGenerator cgen = new RandomRangeColorGenerator( new int[] {0, 100}, new int[] {0, 100}, new int[] {0, 100}); //文字显示4个数 TextPaster textPaster = new RandomTextPaster(new Integer(4), new Integer(4), cgen, true); //图片的大小 BackgroundGenerator backgroundGenerator = new FunkyBackgroundGenerator(new Integer(200), new Integer(45)); Font[] fontsList = new Font[] { new Font("Arial", 0, 10), new Font("Tahoma", 0, 10), new Font("Verdana", 0, 10), }; FontGenerator fontGenerator = new RandomFontGenerator(new Integer(20), new Integer(30), fontsList); WordToImage wordToImage = new ComposedWordToImage(fontGenerator, backgroundGenerator, textPaster); this.addFactory(new GimpyFactory(wgen, wordToImage)); } ================================== public class MyImageServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { byte[] captchaChallengeAsJpeg = null; // the output stream to render the captcha image as jpeg into ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream(); try { // get the session id that will identify the generated captcha. //the same id must be used to validate the response, the session id is a good candidate! String captchaId = request.getSession().getId(); // call the ImageCaptchaService getChallenge method BufferedImage challenge = MyImageSingleton.getMyInstance().getImageChallengeForID(captchaId, request.getLocale()); // a jpeg encoder JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(jpegOutputStream); jpegEncoder.encode(challenge); } catch (IllegalArgumentException e) { response.sendError(HttpServletResponse.SC_NOT_FOUND); return; } catch (CaptchaServiceException e) { response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); return; } captchaChallengeAsJpeg = jpegOutputStream.toByteArray(); // flush it in the response response.setHeader("Cache-Control", "no-store"); response.setHeader("Pragma", "no-cache"); response.setDateHeader("Expires", 0); //输出JPEG response.setContentType("image/jpeg"); ServletOutputStream responseOutputStream = response.getOutputStream(); responseOutputStream.write(captchaChallengeAsJpeg); responseOutputStream.flush(); responseOutputStream.close(); } =========================== web xml <servlet> <servlet-name>MyImageServlet</servlet-name> <servlet-class>com.lch.test.checkimg.MyImageServlet</servlet-class> </servlet> <servlet> <servlet-name>MyCheckImg</servlet-name> <servlet-class>com.lch.test.checkimg.MyCheckImg</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyImageServlet</servlet-name> <url-pattern>/MyImageServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>MyCheckImg</servlet-name> <url-pattern>/MyCheckImg</url-pattern> </servlet-mapping> ========================jsp页面 <center> <form action="MyCheckImg" method="post"> <img src="MyImageServlet" mce_src="MyImageServlet" /> <input type="text" name="myword" value="" /> <input type="submit"/> </form> <center> ======================提交页面验证Servlet public class MyCheckImg extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try{ String sessionID=request.getSession().getId(); System.out.println(sessionID); String myword=request.getParameter("myword"); System.out.println(myword); PrintWriter pw= response.getWriter(); StringBuffer sb=new StringBuffer(); ///check boolean flg=CaptchaServiceSingleton.getInstance().validateResponseForID(sessionID, myword); if(flg){ sb.append("<font color='red'>check success!</font>"); System.out.println("验证成功!"); }else{ sb.append("<font color='red'>check lose!</font>"); System.out.println("验证失败!"); } pw.print(sb.toString()); pw.close(); }catch(Exception e){ System.out.println(); } }
相关推荐
这是一个基于acegi的jcaptcha的验证码例子,希望对正在学习的大家有所帮助
java通过JCaptcha生成验证码,支持原生的验证码生成、自定义干扰线、自定义背景图片。
jcaptcha jcaptcha-1.0-all.jar 验证码 验证码例子 jcaptcha例子 servlet版的
在JSP下,用jcaptcha生成彩色验证码的案例。 主页http://jcaptcha.sourceforge.net/ 网上有很多例子,但有一点没说清楚,这个项目的jar包需要两个apache的项目包,一个是collections,还有一个是logging。 我做了...
Jcaptcha彩色验证码实例(java) 运行环境:JDK1.5+ ,Tomcat 5.0+
security+jcaptcha(验证码)框架搭建
jcaptcha写验证码要用到的jar包,具体的jcaptcha写验证码的流程请参见:http://blog.csdn.net/qq_29656961/article/details/78153637
security+jcaptcha(验证码)+mybatis框架搭建
简单的验证码生成,是用是别人写好的框架,感觉还不错,简单易用
jcaptcha 例子 自定义的验证码例子
JcaptchaServlet、JcaptchaServlet验证码实例,是基本于Servlet编写的一个实例。供需要者下载,制作的一个captcha.jar包的实现。
jcaptcha 图片验证例子。JCaptcha 是一个用来生成验证码的开源Java类库,目前最新的版本是2.0。
这是一个基于acegi的jcaptcha的验证码例子,希望对正在学习的大家有所帮助
验证码生成与验证例子,验证码例子,验证码
该要的都配置好了,即可调试,立马看到效果!彩色
由于网络安全问题威胁很大,不时有网警做端口扫描预警通知(建议改造的通知文件),迫于种种的网络安全压力,写这个后端生成工具。 源码使用方式参考文章【http://t.csdn.cn/eoj39】
springsecurity3和JCaptcha的整合 验证码
jcaptcha-2.0-alpha-1-SNAPSHOT.jar,jcaptcha-api-1.0.jar,jcaptcha-integration-simple-servlet-2.0-alpha-1-SNAPSHOT.jar
JCaptcha生成图形验证码以及校验
jcaptcha验证码,有前端和后端,可以直接拿来使用,导入就可以使用