java captcha 验证码_利用开源组件制作验证码 Captcha
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相关推荐
- java session验证码_利用session实现一次性验证码
带有验证码的登录页面 用户名: 密码: 验证码: import java.io.*; import javax.servlet.*; import javax.servlet.http.*; impo ...
- 制作简单的java应用程序_使用exe4j工具制作简单的java应用程序
首先需要下载exe4j工具并进行安装,下面是利用exe4j工具制作应用程序的步骤. 1.首先将工程导出为可运行的jar包,选择extract required libralies into gener ...
- java 分词词频_利用word分词来对文本进行词频统计
标签: 命令行脚本的调用方法如下: 将需要统计词频的文本写入文件:text.txt chmod +x wfs.sh & wfs.sh -textFile=text.txt -statistic ...
- python根据频率画出词云_利用pandas+python制作100G亚马逊用户评论数据词云
原标题:利用pandas+python制作100G亚马逊用户评论数据词云 数据挖掘入门与实战 公众号: datadw 我们手里面有一个差不多100G的亚马逊用户在购买商品后留下的评论数据(数据格式为j ...
- java invoke 泛型_利用Java反射机制和泛型,全自动解析json
有啦这个简直,太爽啦, 利用Java 反射机制,利用Class 就可以得到 类的 变量 Field[] fields=cls.getDeclaredFields(); 还可以通过类中 的方法名字 去 ...
- python 桑基图 地理坐标_利用Python+Excel制作桑基(Sankey)图
利用Python+Excel制作桑基(Sankey)图 桑基图的简介 桑基图 (Sankey Diagram),是一种特定类型的流图,用于描述一组值到另一组值的流向.下图为1869年,查尔斯米纳德( ...
- wps数据库三线表怎么做_利用WPS文字制作三线表格
在制作统计类数据表格时我们通常都是制作三线表格来进行数据整理和统计的,那么如何制作三线表格呢?下面小编利用WPS文字教大家具体的制作步骤和方法. ①第一步我们首先通过WPS文字的"绘制表格& ...
- java 开源 文件同步_利用开源项目使discus论坛与java应用同步登录和注册
最近做了一个资源库系统的项目,老师说可以搭建开源论坛替代自己开发社交模块(评论啊,反馈啊)来减轻负担,甚至提到了要给每个资源开一帖的功能..使我十分怀疑到底是减轻负担还是增加负担...不过怀疑归怀疑, ...
- java万年历方法_利用java制作万年历
本文分享了制作万年历的方法,如果文中有不正确的地方,欢迎大家批评指正. (推荐教程:java课程) 代码实现:package com.softeem.test01; import java.time. ...
最新文章
- mybatis结合log4j打印SQL日志
- QIIME1.9.1-1虚拟机安装配置及挂载外部目录
- 形状相似的物品_我的世界:MC早期物品和现在的对比,差别很大
- 类似飞秋的局域网软件_内网视频会议软件系统
- python3 web框架_循序渐进Python3(十二) --0-- web之框架
- 飘逸的python - 字典合并值相加
- 关于双向反射率BRDF的定义
- 算法总结之 数组的partition调整
- 解决安卓手机input获取焦点时会将底部固定定位按钮顶起的问题
- pb5.0-pb10.0各版本高速下载
- 局域网SDN技术硬核内幕 二 从局域网到互联网
- 27个最佳免费WordPress主题(2022年精选)
- 科达制造和盐湖股份的事儿
- Unity打包exe生成的文件夹合并成单独的exe
- python_opencv 黑白图片之白色部分单独分离
- 一个demo理解什么是MVP
- WebRTC 音视频同步分析
- 芯片对蓝牙耳机影响有多大?南卡N2s发布,搭载高通3040芯片
- 数据转换excel操作 Microsoft.Office.Interop.Excel.dll的使用
- 全新Funtool趣工具iApp软件库源码+工具箱源码