. <html页面>.
<tr>
<TDklass="td_left">
<Etikettför="check">CAPTCHA</Etikett>
</TD>
<TDklass="td_right check">
<Indatatype="text"id="check"name="check"klass="check">
<IMGsrc="checkCodeServlet"höjd="32px"alt=""onclick="changeCheckCode(Det här)">
<Manustype="Text/JavaScript">
//Bildklickshändelser
FunktionchangeCheckCode(IMG) {
IMG.SRC="CheckCodeServlet?"+NyDate().getTime();
}
</Manus>
</TD>
</tr>//验证码拼接部分Offentlig klassCheckCodeServletFörlängerHttpServlet{
@Override
Offentlig tomrumdoGet(HttpServletRequest-förfrågan, HttpServletResponse-svar)KastServletException, IOException{
//Servern informerar webbläsaren om att inte cachelagra
response.setHeader("pragma","No-cache"); response.setHeader("cache-kontroll","No-cache"); response.setHeader("går ut","0");
//Skapa en lång berättelse i minnet80, brett30Den svarta bakgrunden som standard
//Parameter 1: Längd
//Parameter 2: Bredd
//Parameter 3: Färg
intbredd =80;
inthöjd =30; Buffrad bildbild =NyBufferedImage(bredd, höjd, buffrad bild.TYPE_INT_RGB);
//Hämta borsten
Grafik g = image.getGraphics();
//Ställ in penselfärgen till grå
g.setColor(Färg.GRAY);
//Fyll ut bilden
g.fillRect(0,0, bredd, höjd);
//Producerad4slumpmässig verifieringskod,12Ey
String checkCode = getCheckCode();
//Sätt in kodenHttpSessionMedium
request.getSession().setAttribute("kod",checkCode);
//Ställ in penselfärgen på gul
g.setColor(Färg.GUL);
//Ställ in storleken på typsnittet
g.setFont(NyDopfunt("Svart kropp",Font.BOLD,24));
//Skriv en verifieringskod till bilden
g.drawString(checkCode,15,25);
//Skicka ut bilden från minnet till webbläsaren
//Parameter 1: Bildobjekt
//Parameter 2: Bildformatet, såsom:PNG,JPG,GIF
//Parameter 3: Var bilden matas ut
ImageIO.skriv(bild,"PNG",response.getOutputStream());
}
/**
*Producerad4Bitslumpmässig sträng
*/
privatSträng getCheckCode() {
Strängbas ="0123456789ABCDEFGabcdefg";
intstorlek = bas. längd(); Slumpmässig r =NySlumpmässigt(); StringBuffer sb =NyStringBuffer();
för(inti=1; i<=4; i++){
//Producerad0attStorlek-1av slumpmässiga värden
intindex = r.nextInt(storlek);
//vidBasensträng get subscript somindexKaraktärer
charc = base.charAt(index);
//viljacLägg inStringBufferGå i mitten
sb.append(c);
}
Återkomstensb.toString();
}
@Override
Offentlig tomrumdoPost(HttpServletRequest-förfrågan, HttpServletResponse-svar) KastServletException, IOException{
Det här.doSkaffa(Begäran, svar);
}
}
Hur uppnår man det?
|