java简易验证码代码_java实用验证码的实现代码

本文为大家分享了java实用验证码的实现代码,供大家参考,具体内容如下

1、ValidCode

package validImg;

import java.awt.Color;

import java.io.IOException;

import java.util.Random;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import com.github.bingoohuang.patchca.color.ColorFactory;

import com.github.bingoohuang.patchca.custom.ConfigurableCaptchaService;

import com.github.bingoohuang.patchca.filter.predefined.CurvesRippleFilterFactory;

import com.github.bingoohuang.patchca.filter.predefined.DiffuseRippleFilterFactory;

import com.github.bingoohuang.patchca.filter.predefined.DoubleRippleFilterFactory;

import com.github.bingoohuang.patchca.filter.predefined.MarbleRippleFilterFactory;

import com.github.bingoohuang.patchca.filter.predefined.WobbleRippleFilterFactory;

import com.github.bingoohuang.patchca.utils.encoder.EncoderHelper;

import com.github.bingoohuang.patchca.word.RandomWordFactory;

public class ValidCode extends HttpServlet {

private static ConfigurableCaptchaService cs = new ConfigurableCaptchaService();

private static Random random = new Random();

static {

// cs.setColorFactory(new SingleColorFactory(new Color(25,60,170)));

cs.setColorFactory(new ColorFactory() {

@Override

public Color getColor(int x) {

int[] c = new int[3];

int i = random.nextInt(c.length);

for (int fi = 0; fi < c.length; fi++) {

if (fi == i) {

c[fi] = random.nextInt(71);

} else {

c[fi] = random.nextInt(256);

}

}

return new Color(c[0],c[1],c[2]);

}

});

RandomWordFactory wf = new RandomWordFactory();

wf.setCharacters("23456789abcdefghigkmnpqrstuvwxyzABCDEFGHIGKLMNPQRSTUVWXYZ");

wf.setMaxLength(4);

wf.setMinLength(4);

cs.setWordFactory(wf);

}

public void doGet(HttpServletRequest request,HttpServletResponse response)

throws ServletException,IOException {

switch (random.nextInt(5)) {

case 0:

cs.setFilterFactory(new CurvesRippleFilterFactory(cs

.getColorFactory()));

break;

case 1:

cs.setFilterFactory(new MarbleRippleFilterFactory());

break;

case 2:

cs.setFilterFactory(new DoubleRippleFilterFactory());

break;

case 3:

cs.setFilterFactory(new WobbleRippleFilterFactory());

break;

case 4:

cs.setFilterFactory(new DiffuseRippleFilterFactory());

break;

}

HttpSession session = request.getSession(false);

if (session == null) {

session = request.getSession();

}

setResponseHeaders(response);

String token = EncoderHelper.getChallangeAndWriteImage(cs,"png",response.getOutputStream());

session.setAttribute("validCode",token);

System.out.println("当前的SessionID=" + session.getId() + ",验证码=," + token);

}

protected void setResponseHeaders(HttpServletResponse response) {

response.setContentType("image/png");

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

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

long time = System.currentTimeMillis();

response.setDateHeader("Last-Modified",time);

response.setDateHeader("Date",time);

response.setDateHeader("Expires",time);

}

public void doPost(HttpServletRequest request,IOException {

}

}

2.XML代码

com.github.bingoohuang

patchca

0.0.1

ValidCode

validImg.ValidCode

ValidCode

/validImg.jpg

以上就是本文的全部内容,希望对大家的学习有所帮助。

相关文章

总结

以上是编程之家为你收集整理的java实用验证码的实现代码全部内容,希望文章能够帮你解决java实用验证码的实现代码所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现验证码功能可以使用Java的AWT和BufferedImage类来生成图像验证码。以下是一个简单的实现示例: ```java import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.util.Random; public class CaptchaGenerator { private static final int WIDTH = 120; // 图片宽度 private static final int HEIGHT = 40; // 图片高度 private static final int CODE_LENGTH = 4; // 验证码长度 private static final String CODES = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; // 验证码字符集 private static final Random random = new Random(); public static BufferedImage generate() { // 创建图像对象 BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); // 填充背景色 g.setColor(Color.WHITE); g.fillRect(0, 0, WIDTH, HEIGHT); // 生成随机验证码 StringBuilder code = new StringBuilder(); for (int i = 0; i < CODE_LENGTH; i++) { char c = CODES.charAt(random.nextInt(CODES.length())); code.append(c); } // 绘制验证码 g.setColor(Color.BLACK); g.setFont(new Font("Arial", Font.BOLD, 20)); for (int i = 0; i < CODE_LENGTH; i++) { char c = code.charAt(i); g.drawString(String.valueOf(c), 20 + i * 25, 25); } // 添加干扰线 g.setColor(Color.GRAY); for (int i = 0; i < 5; i++) { int x1 = random.nextInt(WIDTH); int y1 = random.nextInt(HEIGHT); int x2 = random.nextInt(WIDTH); int y2 = random.nextInt(HEIGHT); g.drawLine(x1, y1, x2, y2); } // 释放资源 g.dispose(); return image; } } ``` 调用`generate()`方法即可生成一个包含随机验证码的BufferedImage对象。可以将该对象输出到HTTP响应中,以便客户端进行验证

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值