jsp的验证码实现

时间:2023-03-09 00:13:44
jsp的验证码实现
package com.xunfang.demo;

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; /**
* @title://演示输出验证码
* @author:阳阳
* @date: 2015-5-13
*/
public class ServletResponsw1 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//创建图片
int width =120;
int height = 30;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//拿到此图片的画笔
Graphics g = image.getGraphics(); //设定边框
g.setColor(Color.blue);
g.drawRect(0, 0, width, height);
g.setColor(Color.gray);
g.fillRect(1, 1, width-2, height-2); //增加干扰圆点
Random r = new Random();
g.setColor(Color.green);
for (int i = 0; i < 100; i++) {
g.drawOval(1, 1, r.nextInt(width),r.nextInt(height));
} //设定中文
g.setColor(Color.yellow);
g.setFont(new Font("楷体", Font.BOLD, 1));
String s = "增加分析验证码的难IHAVEmoney度可以加30条干扰线中国好声音深圳讯方通信技术有限公司刘德华成龙";
//输出4个字符
StringBuffer sb = new StringBuffer();
for (int i = 0; i <4; i++) {
char c = s.charAt(r.nextInt(s.length()));
sb.append(c);
g.drawString(c+"", 20+20*i+r.nextInt(5)*((i%2)==0?1:-1),20+r.nextInt(5)*((i%2)==0?1:-1));
}
request.getSession().setAttribute("code", sb.toString()); ImageIO.write(image, "img", response.getOutputStream());
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
} }