當前位置:名人名言大全網 - 端午節短信 - 求壹個用Java語言寫的gif動態驗證碼是百度註冊用戶的那種。

求壹個用Java語言寫的gif動態驗證碼是百度註冊用戶的那種。

妳好,

Servlet類:

進口?Java . io . io exception;

進口?javax . servlet . servlet exception;

進口?javax . servlet . http . http servlet;

進口?javax . servlet . http . http servlet request;

進口?javax . servlet . http . http servlet response;

公共的?上課?ImageServlet?延伸?HttpServlet?{

私人的?靜電?決賽?長嗎?serialVersionUID?=?1L;

@覆蓋

公共的?虛空?doGet(http servlet request?請求,?HttpServletResponse?回應)

拋投?ServletException,?IOException?{

response . set content type(“image/gif“);//設置相應的類型,告訴瀏覽器輸出的內容是圖片。

response . set header(“Pragma“,?“無緩存”);//設置響應頭信息,告訴瀏覽器不要緩存該內容。

response . set header(“Cache-Control“,?“無緩存”);

response . setdate header(“Expire“,?0);

RandomValidateCode?randomValidateCode?=?新的?RandomValidateCode();

試試?{

randomvalidatecode . getrandcode(request,?回應);//輸出圖片的方法

}?接住嗎?(例外?e)?{

e . printstacktrace();

}

}

@覆蓋

公共的?虛空?doPost(http servlet request?請求,?HttpServletResponse?回應)

拋投?ServletException,?IOException?{

doGet(請求,?回應);

}

}生成圖片的類:

進口?Java . awt . color;

進口?Java . awt . font;

進口?Java . awt . graphics;

進口?Java . awt . image . buffered image;

進口?Java . util . random;

進口?javax . imageio . imageio;

進口?javax . servlet . http . http servlet request;

進口?javax . servlet . http . http servlet response;

進口?javax . servlet . http . http session;

公共的?上課?RandomValidateCode?{

公共的?靜電?決賽?字符串?RANDOMCODEKEY?=?”RANDOMVALIDATECODEKEY”;//會話中的密鑰

私人的?隨機?隨機?=?新的?random();

私人的?字符串?隨機字符串?=?“0123456789 abcdefghijklmnopqrstuvwxyz“;//隨機生成的字符串

私人的?int?寬度?=?80;//圖片寬度

私人的?int?身高?=?26;//畫面高

私人的?int?線條尺寸?=?25;//幹擾線的數量

私人的?int?斯特林納姆?=?4;//隨機生成的字符數

/**

*?生成隨機圖片

*/

公共的?虛空?getRandcode(http servlet request?請求,

HttpServletResponse?回應)?{

HttpSession?會話?=?request . getsession();

BufferedImage?形象?=?新的?BufferedImage(寬度、高度、BufferedImage。TYPE _ INT _ BGR);

圖形?g?=?image . get graphics();

g . fill rect(0,?0,?寬度,?身高);

g.setFont(新?font(“Times?新的?羅馬“,字體。ROMAN_BASELINE,18);

g . set color(getRandColor(180,?233));

//繪制幹涉線

for(int?I = 0;我& lt= lineSizei++){

落水線(g);

}

//繪制隨機字符

字符串?randomString?=?"";

for(int?I = 1;我& lt= stringNumi++){

randomString = drowString(g,randomString,I);

}

session . remove attribute(RANDOMCODEKEY);

session . set attribute(RANDOMCODEKEY,?隨機字符串);

g . dispose();

試試?{

imageio . write(image,?“JPEG”,?response . get output stream());

}?接住嗎?(例外?e)?{

e . printstacktrace();

}

}

//?- ?私人的?方法?-

/*

*?獲取字體

*/

私人的?字體?get font(){

回歸?新的?字體(“Fixedsys”,字體。中心_基線,18);

}

/*

*?獲取顏色

*/

私人的?顏色?getRandColor(int?fc,int?BC ){

如果(fc?& gt?255)

fc?=?255;

如果(公元前?& gt?255)

公元前?=?255;

int?r?=?fc?+?random . nextint(BC-fc-16);

int?g?=?fc?+?random . nextint(BC-fc-14);

int?b?=?fc?+?random . nextint(BC-fc-18);

回歸?新的?顏色(r,g,b);

}

/*

*?畫壹條線

*/

私人的?字符串?drowString(圖形?g弦?randomString,intI ){

g . set font(get font());

g.setColor(新?color(random . nextint(101)、random . nextint(111)、random . nextint(121));

字符串?蘭德?=?string . value of(getRandomString(random . next int(randstring . length())));

randomString?+=蘭特;

g . translate(random . nextint(3),?random . next int(3));

g .拉繩(蘭特,?13*i,?16);

回歸?randomString

}

/*

*?繪制幹涉線

*/

私人的?虛空?drowLine(圖形?g ){

int?x?=?random.nextInt(寬度);

int?y?=?random.nextInt(高度);

int?xl?=?random . nextint(13);

int?yl?=?random . nextint(15);

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

}

/*

*?獲取隨機字符

*/

私人的?字符串?getRandomString(int?num ){

回歸?string . value of(randstring . charat(num));

}

}