//java类
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.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ValicateCode {
private Random random = new Random();
private int width=100;
private int height=40;
private int stringLength=5;
private String sourceString = "1234567890"+
"abcdefghijklmnopqrstuvwxyz"+
"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//获得字体
private Font getFont(){
return new Font("fixedsys", Font.CENTER_BASELINE, 18);
}
//获得随机颜色
private Color getRandomColor(int i){
return new Color(i+random.nextInt(100), i+random.nextInt(100),
i+random.nextInt(100));
}
//绘制图片(随机验证码图片)
public String getRandomCode(HttpServletRequest
req,HttpServletResponse resp){
//首先在缓存中创建一个image
BufferedImage image=new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
//获取可以绘制图像的Graphics对象
Graphics g= image.getGraphics();
//设置图像边框
g.fillRect(0, 0, width, height);
//设置字体
g.setFont(getFont());
//设置颜色
g.setColor(getRandomColor(150));
//绘制干扰线
for (int i = 0; i < 100; i++) {
g.drawLine(random.nextInt(width), random.nextInt(height),
random.nextInt(width), random.nextInt(height));
}
//绘制字符串 首先定义这个字符串的颜色
g.setColor(getRandomColor(0));
String randomString = ""; //用来返回
方便以后和用户输入的验证码进行比较
for (int j = 0; j
String
s=String.valueOf(sourceString.charAt(random.nextInt(sourceString.length())));
randomString = randomString + s;
g.drawString(s, 10+j*15, 32+random.nextInt(6));//写字
}
g.dispose();//释放资源
try {
ImageIO.write(image, "JPEG",
resp.getOutputStream());//将图片写到一个输出流中
} catch (IOException e) {
e.printStackTrace();
}
return randomString;
}
}
//servlet
import java.io.IOException;
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.lut.validate.ValicateCode;
public class ValidateServlet extends HttpServlet {
public ValidateServlet() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("image/jpeg");//表示输出的是图像
ValicateCode vc=new ValicateCode();
HttpSession session=request.getSession();
String randomString = vc.getRandomCode(request,
response);
session.setAttribute("randomString", randomString);
System.out.println(randomString);
}
public void init() throws ServletException {
// Put your code here
}
}