<html页面>. .
<tr>
<TDclass="td_left">
<Levy-yhtiöfor="shakki">CAPTCHA</Levy-yhtiö>
</TD>
<TDclass="td_right tarkistus">
<Syötetype="teksti"id="shakki"nimi="shakki"class="shakki">
<imgsrc="checkCodeServlet"korkeus="32px"alt=""onclick="changeCheckCode(Tämä)">
<Käsikirjoitustype="teksti/javascript">
//Kuvan klikkaustapahtumat
ToimintachangeCheckCode(img) {
kuva.src="CheckCodeServlet?"+uusiDate().getTime();
}
</Käsikirjoitus>
</TD>
</tr>//验证码拼接部分Julkinen luokkaCheckCodeServletLaajeneeHttpServlet{
@Override
julkinen tyhjyysdoGet(HttpServletRequest request, HttpServletResponse-vastaus)heitotServletException, IOException{
//Palvelin ilmoittaa selaimelle, ettei välimuisti saa olla välimuistissa
response.setHeader("Pragma","Ei välimuistia"); response.setHeader("välimuistin hallinta","Ei välimuistia"); response.setHeader("vanhenee","0");
//Luo pitkä muisto muistiin80, leveä30Oletusmusta tausta
//Parametri 1: Pituus
//Parametri 2: Leveys
//Parametri 3: Väri
intleveys =80;
intkorkeus =30; BufferedImage-kuva =uusiBufferedImage(leveys, korkeus, puskuroitu kuva.TYPE_INT_RGB);
//Hanki sivellin
Grafiikka g = image.getGraphics();
//Aseta siveltimen väri harmaaksi
g.setColor(Väri.HARMAA);
//Täytä kuva
g.fillRect(0,0, leveys, korkeus);
//Tuotettu4satunnainen vahvistuskoodi,12 Hei
Merkkijono checkCode = getCheckCode();
//Laita koodi sisäänHttpSessionKeskiverto
request.getSession().setAttribute("koodi",checkCode);
//Aseta siveltimen väri keltaiseksi
g.setColor(Väri.KELTAINEN);
//Aseta fontin koko
g.setFont(uusiFontti("Musta vartalo",Fontti.ROHKEA,24));
//Kirjoita kuvaan varmennuskoodi
g.drawString(checkCode,15,25);
//Tulosta kuva muistista selaimeen
//Parametri 1: Kuvaobjekti
//Parametri 2: Kuvan muoto, kuten:PNG,JPG,GIF
//Parametri 3: Missä kuva on tulostettu
ImageIO.kirjoita(kuva,"PNG",response.getOutputStream());
}
/**
*Tuotettu4Bittisatunnainen merkkijono
*/
yksityinenMerkkijono getCheckCode() {
Merkkijonon kanta ="0123456789ABCDEFGabcdefg";
intkoko = pohja. pituus(); Satunnainen r =uusiSatunnainen(); StringBuffer sb =uusiStringBuffer();
for(inti=1; i<=4; i++){
//Tuotettu0tokoko-1satunnaisarvoista
intindex = r.nextInt(koko);
//AtPohjamerkkijono saa alaindeksin muodossaindeksiHahmot
charc = base.charAt(indeksi);
//tahtocLaita sisäänStringBufferMene keskelle
sb.append(c);
}
Paluusb.toString();
}
@Override
julkinen tyhjyysdoPost(HttpServletRequest request, HttpServletResponse-vastaus) heitotServletException, IOException{
Tämä.doGet(pyyntö, vastaus);
}
}
Miten se saavutetaan?
|