验证码的作用是区分人与机器,防止机器刷数据;
验证码的验证分了两步,一步是请求获取验证码,一步是前台传的验证码与后台的验证码进行对比判断后进行后续操作;
在MyEclipse中新建一个Web Project项目,然后填充下面代码
该代码生成的验证码效果图:
验证码的代码如下:
验证码生成核心代码:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
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;
/**
* 动态生成一张验证码的图片
* @author Administrator
*
*/
public class ImageServlet extends HttpServlet {
//生成随机字符串用到的全部字符串
private static final char[] BASE_STRING = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
private Random random = new Random();
private static final int WIDTH = 120;
private static final int HEIGHT = 30;
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//随机的生成一个字符串
String randomString = getRandomString(4);
//根据这个字符串生成一张图片
BufferedImage bi = getBufferedImageByString(randomString);
//把这个字符串保存到session中
req.getSession().setAttribute("code", randomString);
//把生成好的图片返回给浏览器
resp