java web中图片验证码功能的简单实现方法
用户在注册网站信息的时候基本上都要数据验证码验证。那么图片验证码功能该如何实现呢?
大概步骤是:
1.在内存中创建缓存图片
2.设置背景色
3.画边框
4.写字母
5.绘制干扰信息
6.图片输出
废话不多说,直接上代码
packagecom.lsgjzhuwei.servlet.response;
importjava.awt.Color;
importjava.awt.Font;
importjava.awt.Graphics;
importjava.awt.image.BufferedImage;
importjava.io.IOException;
importjava.util.Random;
importjavax.imageio.ImageIO;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
/**
*ServletimplementationclassVerificationCode
*/
@WebServlet(asyncSupported=true,urlPatterns={"/VerificationCode"})
publicclassVerificationCodeextendsHttpServlet{
privatestaticfinallongserialVersionUID=1L;
/**
*@seeHttpServlet#HttpServlet()
*/
publicVerificationCode(){
super();
//TODOAuto-generatedconstructorstub
}
/**
*@seeHttpServlet#doGet(HttpServletRequestrequest,HttpServletResponseresponse)
*/
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//TODOAuto-generatedmethodstub
intwidth=120;
intheight=30;
//创建一张内存中的缓存图片
BufferedImagebufferedImage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
///背景色
//通过graphics绘制图像
Graphicsgraphics=bufferedImage.getGraphics();
//设置颜色
graphics.setColor(Color.yellow);
//填充
graphics.fillRect(0,0,width,height);
///画边框
graphics.setColor(Color.blue);
graphics.drawRect(0,0,width-1,height-1);
//写字母
Stringcontent="ABCDEFGHIJKLMNOPQRSTUVWXYZabcedfghijklmnopqrstuvwxyz1234567890";
Randomrandom=newRandom();
//设置字体颜色
graphics.setColor(Color.red);
//设置字体及大小
graphics.setFont(newFont("宋体",Font.BOLD,20));
intx=20;
inty=20;
for(inti=0;i<4;i++)
{
intindex=random.nextInt(content.length());
charletter=content.charAt(index);
graphics.drawString(letter+"",x,y);
x=x+20;
}
//绘制干扰线
intx1;
intx2;
inty1;
inty2;
graphics.setColor(Color.LIGHT_GRAY);
for(inti=0;i<50;i++)
{
x1=random.nextInt(width);
x2=random.nextInt(width);
y1=random.nextInt(height);
y2=random.nextInt(height);
graphics.drawLine(x1,y1,x2,y2);
}
//将图片输出到浏览器
//将内存的图片通过浏览器输出流输出成jpg图片
ImageIO.write(bufferedImage,"jpg",response.getOutputStream());
}
/**
*@seeHttpServlet#doPost(HttpServletRequestrequest,HttpServletResponseresponse)
*/
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//TODOAuto-generatedmethodstub
}
}
以上这篇javaweb中图片验证码功能的简单实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。