您的位置:首页 > 编程语言 > Java开发

java生成验证码详解

2010-11-12 16:12 447 查看
// /获得验证码-
public ActionForward getCheck(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
response.setContentType("image/jpeg");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);

java.awt.image.BufferedImage bi = new java.awt.image.BufferedImage(32,
18, java.awt.image.BufferedImage.TYPE_INT_BGR);

java.awt.Graphics gs = bi.getGraphics();
gs.setColor(new java.awt.Color(0, 128, 64));
gs.fillRect(0, 0, 32, 18);
java.util.Random r = new java.util.Random(new java.util.Date()
.getTime());
char[] num = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',
'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
String imgcode = "" + num[r.nextInt(36)] + num[r.nextInt(36)]
+ num[r.nextInt(36)] + num[r.nextInt(36)];

request.getSession().setAttribute("imageCode", imgcode);
gs.setFont(new java.awt.Font("Arial", 1, 11));
gs.setColor(new java.awt.Color(255, 255, 255));
gs.drawString(imgcode, 2, 15);

java.io.OutputStream o = null;
try {
o = response.getOutputStream();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

com.sun.image.codec.jpeg.JPEGImageEncoder en = com.sun.image.codec.jpeg.JPEGCodec
.createJPEGEncoder(o);
try {
en.encode(bi);
} catch (ImageFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: