1、JSP页面调用后台的Servlet页面来生成验证码 JSP页面部分代码,点击验证码图片能够刷新验证码: function Refresh() { document.getElementById("ImgCode").src="servlet/ImgCodeServletnow="+new Date(); }
http://www.oschina.net/code/snippet_1760858_54871/Make_img_util使用 官方jar生成验证图片
com.github.bingoohuang
patchca
0.0.1
ValidCode
validImg.ValidCode
ValidCode
/validImg.jpgpackage 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 {
package com.day10.pm.servlet;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Random;import javax.imageio.ImageIO;import javax.se
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, HttpServletResponse response)
throws ServletException, IOException {
}
}