日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2023/12/10 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java验证码的代码_java实用验证码的实现代码 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文為大家分享了java實(shí)用驗(yàn)證碼的實(shí)現(xiàn)代碼,供大家參考,具體內(nèi)容如下

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("當(dāng)前的SessionID=" + session.getId() + ",驗(yàn)證碼= ," + 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, HttpServletResponse response)

throws ServletException, IOException {

}

}

2.XML代碼

com.github.bingoohuang

patchca

0.0.1

ValidCode

validImg.ValidCode

ValidCode

/validImg.jpg

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。

總結(jié)

以上是生活随笔為你收集整理的java验证码的代码_java实用验证码的实现代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。