當前位置:名人名言大全網 - 短信平臺 - java swing隨機驗證碼

java swing隨機驗證碼

public?static?void?processRequest(HttpServletRequest?request,

HttpServletResponse?response)?throws?ServletException,?IOException?{

?

?response.setContentType("image/jpeg");

?response.setHeader("Pragma",?"No-cache");

?response.setHeader("Cache-Control",?"no-cache");

?response.setDateHeader("Expires",?0);

?HttpSession?session?=?request.getSession();

?

?int?width?=?60,?height?=?20;

?

?BufferedImage?image?=?new?BufferedImage(width,?height,

BufferedImage.TYPE_INT_RGB);

?

?//?獲取圖形上下文

?Graphics?g?=?image.getGraphics();

?

?//?生成隨機類

?Random?random?=?new?Random();

?

?//?設定背景色

?g.setColor(getRandColor(200,?250));

?g.fillRect(0,?0,?width,?height);

?

?//?設定字體

?g.setFont(new?Font("Times?New?Roman",?Font.PLAIN,?18));

?

?//?隨機產生155條幹擾線,使圖象中的認證碼不易被其它程序探測到

?g.setColor(getRandColor(160,?200));

?for?(int?i?=?0;?i?<?155;?i++)?{

int?x?=?random.nextInt(width);

int?y?=?random.nextInt(height);

int?xl?=?random.nextInt(12);

int?yl?=?random.nextInt(12);

g.drawLine(x,?y,?x?+?xl,?y?+?yl);

?}

?

?//?取隨機產生的認證碼(4位數字)

?String?sRand?=?"";

?for?(int?i?=?0;?i?<?4;?i++)?{

String?rand?=?String.valueOf(random.nextInt(10));

sRand?+=?rand;

//?將認證碼顯示到圖象中

g.setColor(new?Color(20?+?random.nextInt(110),?20?+?random

?.nextInt(110),?20?+?random.nextInt(110)));//?調用函數出來的顏色相同,可能是因為種子太接近,所以只能直接生成

g.drawString(rand,?13?*?i?+?6,?16);

?}

?

?//?將認證碼存入SESSION

?session.setAttribute("rand",?sRand);

?//?圖象生效

?g.dispose();

?ServletOutputStream?responseOutputStream?=?response.getOutputStream();

?//?輸出圖象到頁面

?ImageIO.write(image,?"JPEG",?responseOutputStream);

?

?//?以下關閉輸入流!

?responseOutputStream.flush();

?responseOutputStream.close();

?}

?

static ?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);

?}

?

?/**?

?*?Handles?the?HTTP?GET?method.?

?*

?*?@param?request?

?*servlet?request?

?*?@param?response?

?*servlet?response?

?*/?

?protected?void?doGet(HttpServletRequest?request,

HttpServletResponse?response)?throws?ServletException,?IOException?{

?processRequest(request,?response);

?}

這個是我web裏用的驗證碼,妳可以改改