jsp验证码制作

介绍两个功能强大的开源制作验证码组件SimpleCaptcha,JCAPTCHA。

1.配置

将下载的jar文件放置工程的lib目录下,打开工程的web.xml文件加上相应的配置

Captcha

nl.captcha.servlet.CaptchaServlet

cap.border

yes

cap.border.c

green

cap.border.th

1

cap.cap.producer

nl.captcha.obscurity.imp.DefaultCaptchaIml

cap.text.producer

org.ChineseTextProducer

cap.char.arr

2,3,4,6,7,8,9,a,b,c,d,e,f,g,h,j,k,l,m,n,o,p,q,r,s,t,u,v,x,y,z

cap.char.arr.l

4

cap.font.arr

Arial,Helvetica,Courier,TimesRoman,宋体,黑体

cap.font.size

30

cap.font.color

white

cap.obscurificator

org.FishEyeGimpyImp

cap.border

no

cap.char.arr.l

6

cap.background.c.to

white

cap.background.c.from

white

cap.distortionImp

cap.backgroundImp

cap.background.c.to

black

cap.background.c.from

black

cap.noiseImp

nl.captcha.obscurity.imp.DefaultNoiseImp

Captcha

/Captcha.jpg

以上配置可根据喜好设置。

2、调用显示

在要显示验证码的页面中加入即可显示生成的验证码

3、后台验证

验证非常简单,通过session.getAttribute(nl.captcha.servlet.Constants.SIMPLE_CAPCHA_SESSION_KEY);即可得到组件生成

的验证码,然后与前台传递的用户填写的内容比较即可。

注:如果要自定义验证码的内容可以继承DefaultTextCreator类,覆写getText()方法即可,方法返回的是一个字符串。

1、配置

下载JCAPTCHA后将jcaptcha.jar和commons-collections-2.1以上.jar(单独下载,地址:http://commons.apache.org/collections/)放置工程lib目录下。

2、Implement a CaptchaService

import com.octo.captcha.service.image.ImageCaptchaService;

import com.octo.captcha.service.image.DefaultManageableImageCaptchaService;

public class CaptchaServiceSingleton {

private static ImageCaptchaService instance = new DefaultManageableImageCaptchaService();

public static ImageCaptchaService getInstance(){

return instance;

}

}

3、编写一个产生验证码的servlet

public class ImageCaptchaServlet extends HttpServlet {

protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)

throws ServletException, IOException {

byte[] captchaChallengeAsJpeg = null;

ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();

try {

String captchaId = httpServletRequest.getSession().getId();

BufferedImage challenge =

CaptchaServiceSingleton.getInstance().getImageChallengeForID(captchaId,

httpServletRequest.getLocale());

JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(jpegOutputStream);

jpegEncoder.encode(challenge);

} catch (IllegalArgumentException e) {

httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND);

return;

} catch (CaptchaServiceException e) {

httpServletResponse.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);

return;

}

captchaChallengeAsJpeg = jpegOutputStream.toByteArray();

httpServletResponse.setHeader("Cache-Control", "no-store");

httpServletResponse.setHeader("Pragma", "no-cache");

httpServletResponse.setDateHeader("Expires", 0);

httpServletResponse.setContentType("image/jpeg");

ServletOutputStream responseOutputStream =

httpServletResponse.getOutputStream();

responseOutputStream.write(captchaChallengeAsJpeg);

responseOutputStream.flush();

responseOutputStream.close();

}

}

4、将servlet添加到web.xml文件中

jcaptcha

ImageCaptchaServlet

0

jcaptcha

/jcaptcha

5、在页面中显示

6、后台验证

Boolean isResponseCorrect =Boolean.FALSE;

String captchaId = httpServletRequest.getSession().getId();

String response = httpServletRequest.getParameter("captcha_code");

try {

isResponseCorrect = CaptchaServiceSingleton.getInstance().validateResponseForID(captchaId,response);

} catch (CaptchaServiceException e) {

//TODO

}

最简单的开发过程结束,试运行一下效果!

注:要实现自己的验证引擎可以继承ListImageCaptchaEngine实现抽象方法buildInitialFactories()。

java captcha 验证码_利用开源组件制作验证码 Captcha相关推荐

  1. java session验证码_利用session实现一次性验证码

    带有验证码的登录页面 用户名: 密码: 验证码: import java.io.*; import javax.servlet.*; import javax.servlet.http.*; impo ...

  2. 制作简单的java应用程序_使用exe4j工具制作简单的java应用程序

    首先需要下载exe4j工具并进行安装,下面是利用exe4j工具制作应用程序的步骤. 1.首先将工程导出为可运行的jar包,选择extract required libralies into gener ...

  3. java 分词词频_利用word分词来对文本进行词频统计

    标签: 命令行脚本的调用方法如下: 将需要统计词频的文本写入文件:text.txt chmod +x wfs.sh & wfs.sh -textFile=text.txt -statistic ...

  4. python根据频率画出词云_利用pandas+python制作100G亚马逊用户评论数据词云

    原标题:利用pandas+python制作100G亚马逊用户评论数据词云 数据挖掘入门与实战 公众号: datadw 我们手里面有一个差不多100G的亚马逊用户在购买商品后留下的评论数据(数据格式为j ...

  5. java invoke 泛型_利用Java反射机制和泛型,全自动解析json

    有啦这个简直,太爽啦, 利用Java 反射机制,利用Class 就可以得到 类的 变量  Field[] fields=cls.getDeclaredFields(); 还可以通过类中 的方法名字 去 ...

  6. python 桑基图 地理坐标_利用Python+Excel制作桑基(Sankey)图

    利用Python+Excel制作桑基(Sankey)图 桑基图的简介 桑基图 (Sankey  Diagram),是一种特定类型的流图,用于描述一组值到另一组值的流向.下图为1869年,查尔斯米纳德( ...

  7. wps数据库三线表怎么做_利用WPS文字制作三线表格

    在制作统计类数据表格时我们通常都是制作三线表格来进行数据整理和统计的,那么如何制作三线表格呢?下面小编利用WPS文字教大家具体的制作步骤和方法. ①第一步我们首先通过WPS文字的"绘制表格& ...

  8. java 开源 文件同步_利用开源项目使discus论坛与java应用同步登录和注册

    最近做了一个资源库系统的项目,老师说可以搭建开源论坛替代自己开发社交模块(评论啊,反馈啊)来减轻负担,甚至提到了要给每个资源开一帖的功能..使我十分怀疑到底是减轻负担还是增加负担...不过怀疑归怀疑, ...

  9. java万年历方法_利用java制作万年历

    本文分享了制作万年历的方法,如果文中有不正确的地方,欢迎大家批评指正. (推荐教程:java课程) 代码实现:package com.softeem.test01; import java.time. ...

最新文章

  1. mybatis结合log4j打印SQL日志
  2. QIIME1.9.1-1虚拟机安装配置及挂载外部目录
  3. 形状相似的物品_我的世界:MC早期物品和现在的对比,差别很大
  4. 类似飞秋的局域网软件_内网视频会议软件系统
  5. python3 web框架_循序渐进Python3(十二) --0--  web之框架
  6. 飘逸的python - 字典合并值相加
  7. 关于双向反射率BRDF的定义
  8. 算法总结之 数组的partition调整
  9. 解决安卓手机input获取焦点时会将底部固定定位按钮顶起的问题
  10. pb5.0-pb10.0各版本高速下载
  11. 局域网SDN技术硬核内幕 二 从局域网到互联网
  12. 27个最佳免费WordPress主题(2022年精选)
  13. 科达制造和盐湖股份的事儿
  14. Unity打包exe生成的文件夹合并成单独的exe
  15. python_opencv 黑白图片之白色部分单独分离
  16. 一个demo理解什么是MVP
  17. WebRTC 音视频同步分析
  18. 芯片对蓝牙耳机影响有多大?南卡N2s发布,搭载高通3040芯片
  19. 数据转换excel操作 Microsoft.Office.Interop.Excel.dll的使用
  20. 全新Funtool趣工具iApp软件库源码+工具箱源码

热门文章

  1. CMake Cookbook笔记(12/23未完待续,游戏服务器观点阅读,编译器及指令集不涉及)
  2. CE修改器使用教程 (基础知识)扫雷逆向复现
  3. 3天学会Vue之基本知识(第二天:组件):结合项目开发经验,总结最关键的内容
  4. 解决GitHub不显示图片问题
  5. 北京奥运会火炬接力境内外传递路线详细时间表
  6. SP业务的一些知识点
  7. VS的release版本如何调试
  8. 随机信号处理功率谱估计周期图法(直接法)(C语言)
  9. POS机背后的故事 - 刷卡交易及手续费的分配规则
  10. element-ui 点击增加/减少一行