Servlet绘制验证码

//kaptcha验证码框架

@Override

protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

//验证码的绘制需要借助java awt包下的一些绘制相关的类

Random r = new Random();

//1.先构建一个画板对象--内存中的画板对象,最后需要借助响应流写出到客户端

BufferedImage bufferedImage = new BufferedImage(100, 30, BufferedImage.TYPE_INT_RGB);

//2.获取画笔对象

Graphics g = bufferedImage.getGraphics();

//设置画笔的颜色

g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));

//填充背景色

g.drawRect(0, 0, 100, 30);

//3.绘制字符串

//设置画笔颜色

g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));

//设置字体

g.setFont(new Font(Font.SERIF, Font.BOLD, 20));

//将字符串画上去

g.drawString(getCode(4), 20, 20);

 

//4.绘制噪音线和噪音点

for (int i = 1; i <= 10; i++) {

g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));

g.drawLine(r.nextInt(100), r.nextInt(30), r.nextInt(100), r.nextInt(30));

 

}

 

//将字符串写出到响应流中

res.setContentType("image/jpeg");

ImageIO.write(bufferedImage, "jpeg", res.getOutputStream());

 

 

 

 

}

 

private static String getCode(int len) {

Random r = new Random();

String strs = "3456789abcdefghjkmnpqrstuvwxy";

String result = "";

for (int i = 1; i <= len; i++) {

result += strs.charAt(r.nextInt(strs.length()));

}

return result;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值