package cn.utils;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 以下是完整的Java的验证码数字与字母
*/
public class ImgServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
Random r= new Random();
// 创建一个
private String codes = "23456789abcdefghjkmnopqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ";
// 随机生成字符
private char randomChar () {
int index = r.nextInt(codes.length());
System.err.println(index+"--"+codes.charAt(index));
return codes.charAt(index);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 1:声明图片的大小
int width = 60;
int height = 30;
// 2:
BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = img.getGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, width, height);
g.setFont(new Font("ST", Font.BOLD, 18));
r = new Random();
//声明一个字符串,用于保存4个字符
String sCode ="";
for (int i = 0; i < 4; i++) {
// 添加字符
String a = ""+randomChar();
System.err.println("000"+a);
sCode+=a;//串联字符串
g.setColor(new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256)));
g.drawString(a, i * 15, 10 + r.nextInt(20));
}
//放到session中去
request.getSession().setAttribute("sCode",sCode);
for (int i = 0; i < 5; i++) {
g.setColor(new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256)));
g.drawLine(r.nextInt(width), r.nextInt(height), r.nextInt(width), r.nextInt(height));
}
g.dispose();
//输出图片到浏览器
response.setContentType("image/jpeg");
ImageIO.write(img,"JPEG",response.getOutputStream());//字节码
}
private String drowString(Graphics g, String randomString, int i) {
// TODO Auto-generated method stub
return null;
}
}
搞定主要就是我的红色标记的地方