首页>代码>jsp中生成验证码,不用session也可以(主要是:思想)>/CheckCode/src/cn/gov/csrc/servlet/CodeServlet.java
package cn.gov.csrc.servlet;

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.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class CodeServlet extends HttpServlet {

	/**
	 * 产生验证码图片
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("image/jpeg");
		response.setHeader("Cache-Control", "no-cache");
		response.setHeader("Pragma", "No-cache");
		response.setDateHeader("Expires", 0L);
		int width = 80;
		int height = 30;
		BufferedImage image = new BufferedImage(width, height, 1);
		Graphics g = image.getGraphics();
		Random random = new Random();
		g.setColor(getRandColor(200, 250));
		g.fillRect(0, 0, width, height);
		g.setFont(new Font("Arial", 0, 25));
		g.setColor(getRandColor(160, 200));
		for (int i = 0; i < 155; i++) {
			int x = random.nextInt(width + 100);
			int y = random.nextInt(height + 100);
			int xl = random.nextInt(10);
			int yl = random.nextInt(12);
			g.drawOval(x, y, x + xl, y + yl);
		}
		String code = request.getParameter("code");
		String sRand = code;
		for (int i = 0; i < sRand.length(); i++) {
			String rand = sRand.substring(i, i + 1);
			g.setColor(new Color(20 + random.nextInt(110), 20 + random
					.nextInt(110), 20 + random.nextInt(110)));
			g.drawString(rand, 14 * i + 5, 25);
		}
		g.dispose();
		javax.servlet.ServletOutputStream imageOut = response.getOutputStream();
		JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(imageOut);
		encoder.encode(image);
	}

	private Color getRandColor(int fc, int bc) {
		Random random = new Random();
		if (fc > 255)
			fc = 255;
		if (bc > 255)
			bc = 255;
		int r = fc + random.nextInt(bc - fc);
		int g = fc + random.nextInt(bc - fc);
		int b = fc + random.nextInt(bc - fc);
		return new Color(r, g, b);
	}

}
最近下载更多
阿三在中国  LV7 2019年8月13日
dsddfafsdfasdfs  LV1 2018年12月25日
yuanduo  LV1 2018年9月9日
唐唐丶  LV34 2018年8月11日
taoyi123  LV17 2017年8月4日
感动常在  LV12 2017年7月8日
lalalaslun  LV1 2017年3月5日
否极泰来  LV6 2016年12月1日
好我累个去哦  LV15 2016年11月4日
wneely  LV1 2016年7月29日
最近浏览更多
sdfgsdfg  LV2 2023年10月23日
kanro11 2023年5月10日
暂无贡献等级
yjdang  LV3 2023年3月27日
taoshen95  LV15 2022年12月2日
double_AI  LV1 2022年11月20日
2998919365  LV5 2022年5月23日
nbzhou2013  LV14 2022年4月10日
JohnAlex  LV9 2022年2月22日
welcome丶  LV8 2021年12月30日
kangka1ang 2021年12月20日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友