XML/HTML代码
-
/*
-
GraphicsEnvironment
ge
=
GraphicsEnvironment
.getLocalGraphicsEnvironment();
-
-
GraphicsDevice
gd
=
ge
.getDefaultScreenDevice();
-
GraphicsConfiguration
gc
=
gd
.getDefaultConfiguration();
-
*/
/*
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gd.getDefaultConfiguration();
*/
-
不然会有错误。
---------------------------------------------------------------------------------------------------------------------------
jsp验证码制作
介绍两个功能强大的开源制作验证码组件SimpleCaptcha,JCAPTCHA。
一、SimpleCaptcha搜狐邮箱注册时就使用了该组件,主页:
http://simplecaptcha.sourceforge.net/index.html
1.配置
将下载的jar文件放置工程的lib目录下,打开工程的web.xml文件加上相应的配置
<servlet>
<servlet-name>Captcha</servlet-name>
<servlet-class>nl.captcha.servlet.CaptchaServlet</servlet-class>
<!--边框显示参数-->
<init-param>
<param-name>cap.border</param-name>
<param-value>yes</param-value>
</init-param>
<!-- 设置图片边框色 -->
<init-param>
<param-name>cap.border.c</param-name>
<param-value>green</param-value>
</init-param>
<!-- 边框粗细-->
<init-param>
<param-name>cap.border.th</param-name>
<param-value>1</param-value>
</init-param>
<!-- the image producer. Currently only one-->
<init-param>
<param-name>cap.cap.producer</param-name>
<param-value>
nl.captcha.obscurity.imp.DefaultCaptchaIml
</param-value>
</init-param>
<!-- 设置验证码的内容 -->
<init-param>
<param-name>cap.text.producer</param-name>
<!--<param-value>Default</param-value>-->
<!--
此处是我自定义的一个显示中文的类 -->
<param-value>org.ChineseTextProducer</param-value>
</init-param>
<!-- 此处可不定义,可在自定义类中定义所有的要显示的内容 -->
<init-param>
<param-name>cap.char.arr</param-name>
<param-value>
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
</param-value>
</init-param>
<!-- 设置图片显示内容长度 -->
<init-param>
<param-name>cap.char.arr.l</param-name>
<param-value>4</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>30</param-value>
</init-param>
<!-- 设置图片字体色 -->
<init-param>
<param-name>cap.font.color</param-name>
<param-value>white</param-value>
</init-param>
<!-- 扭曲; 曲解; 变形 begin -->
<!--
图片效果1
<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.obscurificator</param-name>
<param-value>org.FishEyeGimpyImp</param-value>
</init-param>
<init-param>
<param-name>cap.border</param-name>
<param-value>no</param-value>
</init-param>
<init-param>
<param-name>cap.char.arr.l</param-name>
<param-value>6</param-value>
</init-param>
<init-param>
<param-name>cap.background.c.to</param-name>
<param-value>white</param-value>
</init-param>
<init-param>
<param-name>cap.background.c.from</param-name>
<param-value>white</param-value>
</init-param>
<!--扭曲; 曲解; 变形 end 不想要这种效果可注释以上代码-->
<init-param>
<param-name>cap.distortionImp</param-name>
<param-value
/>
</init-param>
<init-param>
<param-name>cap.backgroundImp</param-name>
<param-value
/>
</init-param>
<!-- 此处色为渐变的色 -->
<init-param>
<param-name>cap.background.c.to</param-name>
<param-value>black</param-value>
</init-param>
<!-- 图片左边色 -->
<init-param>
<param-name>cap.background.c.from</param-name>
<param-value>black</param-value>
</init-param>
<!--干扰线实现类-->
<init-param>
<param-name>cap.noiseImp</param-name>
<param-value>nl.captcha.obscurity.imp.DefaultNoiseImp</param-value>
</init-param>
<!-- 干扰线色
<init-param>
<param-name>cap.noise.c</param-name>
<param-value>255,245,219</param-value>
</init-param>
-->
</servlet>
<servlet-mapping>
<servlet-name>Captcha</servlet-name>
<url-pattern>/Captcha.jpg</url-pattern>
</servlet-mapping>
以上配置可根据喜好设置。
2、调用显示
在要显示验证码的页面中加入<img src="Captcha.jpg">即可显示生成的验证码
3、后台验证
验证非常简单,通过session.getAttribute(nl.captcha.servlet.Constants.SIMPLE_CAPCHA_SESSION_KEY);即可得到组件生成
的验证码,然后与前台传递的用户填写的内容比较即可。
注:如果要自定义验证码的内容可以继承DefaultTextCreator类,覆写getText()方法即可,方法返回的是一个字符串。
二、JCAPTCHA,该组件功能非常强大,可以生成word、图片、声音等验证码。主页:
http://forge.octo.com/jcaptcha/confluence/display/general/Home
http://jcaptcha.sourceforge.net/
更多实例可以查看:http://forge.octo.com/jcaptcha/confluence/display/general/Samples+tests
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文件中
<servlet>
<servlet-name>jcaptcha</servlet-name>
<servlet-class>ImageCaptchaServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jcaptcha</servlet-name>
<url-pattern>/jcaptcha</url-pattern>
</servlet-mapping>
5、在页面中显示
<img src="jcaptcha">
<input type='text'
name='captcha_code' value=''>
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()。
----------------------------------------------------------------------------------------------------------------------------
转 TestHTTPAuthServer.java
import
nl.captcha.
Captcha
.
Builder
;
import
nl.captcha.obscurity.text.producer.
TextProducer
;
private
byte
[] createCaptchaImage(String
captcha)
{
Builder
b = new
nl.captcha.Captcha
.Builder
(200
,50
);
b.addText(new
MyTextProducer
(captcha));
b.addNoise();
b.addNoise();
b.gimp();
b.addBackground();
nl.captcha.Captcha
c =
b.build();
ByteArrayOutputStream
n =
new
ByteArrayOutputStream
();
try
{
ImageIO
.write(c.getImage(), "PNG"
,
n);
} catch
(IOException
e)
{
e.printStackTrace();
}
return
n.toByteArray();
}
private
class
MyTextProducer
implements
TextProducer
{
private
String
txt;
public
MyTextProducer
(String
txt){
this
.txt = txt;
}
public
String
getText()
{
return
txt;
}
}
相关推荐
SimpleCaptcha是一款开源的Java验证码库,它提供了生成图像验证码的功能,支持自定义长度、颜色、字体等参数,使得验证码既具有较高的安全性,又保持了良好的用户体验。它的主要特点是代码简洁,易于集成到各类项目...
Kaptcha是一个开源Java库,用于生成复杂的图像验证码,而SimpleCaptcha是另一种简洁的Java验证码实现。在这篇文章中,我们将深入探讨这两个工具及其在Java Web开发中的应用。 **Kaptcha** Kaptcha是由Google开发的...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
Kaptcha验证码组件是基于SimpleCaptcha的开源项目,提供了强大的验证码生成和验证功能。该组件的使用非常方便,只需添加jar包依赖和简单的配置就可以使用了。 一、添加jar包依赖 如果您使用Maven来管理jar包,可以...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,...
通过整合这些开源组件,JLoja 实现了一个功能全面的库存控制和商店管理系统,不仅满足基本的库存跟踪和销售记录,还能提供报表分析、安全防护等高级功能。开源的特性使得开发者可以根据自己的需求对其进行定制和扩展...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器 jxl-2.6.jar 通过java操作excel表格的工具类库 jta-1.1.jar Java事务API,为J2EE平台提供了分布式事务服务 ...