<html页面>. . .
<tr>
<tdklasė="td_left">
<etiketėuž ="patikrinti">CAPTCHA</etiketė>
</td>
<tdklasė="td_right patikrinimas">
<Įvestistipas ="tekstas"id ="patikrinti"vardas="patikrinti"klasė="patikrinti">
<IMGsrc ="checkCodeServlet"aukštis ="32px"alt =""onclick="keisti kontrolinį kodą(tai)">
<Scenarijustipas ="Tekstas / JavaScript">
//Vaizdo paspaudimų įvykiai
funkcijakeisti kontrolinį kodą(IMG) {
img.src="checkCodeServlet?"+naujasData().getLaikas();
}
</Scenarijus>
</td>
</tr>//验证码拼接部分Viešoji klasėCheckCodeServletpratęsiaHttpServlet{
@Override
viešas tuštumasdoGet(HttpServletRequest užklausa, HttpServletResponse atsakymas)metimaiServletException, IOException{
//Serveris informuoja naršyklę nesaugoti talpyklos
response.setHeader("Pragma","be talpyklos"); response.setHeader("talpyklos valdymas","be talpyklos"); response.setHeader("baigiasi","0");
//Sukurkite ilgą atmintyje80, platus30Numatytasis juodas fonas
//1 parametras: ilgis
//2 parametras: plotis
//3 parametras: spalva
intplotis =80;
intaukštis =30; BufferedImage vaizdas =naujasBuferinis vaizdas(plotis, aukštis, buferinis vaizdas.TYPE_INT_RGB);
//Gaukite šepetėlį
Grafika g = image.getGraphics();
//Nustatykite teptuko spalvą į pilką
g.setColor(Spalva.PILKA);
//Užpildykite paveikslėlį
g.fillRect(0,0, plotis, aukštis);
//Pagaminta4atsitiktinės patikros kodas,12Ey
Eilutės kontrolinis kodas = getCheckCode();
//Įveskite kodąHttpSessionVidutinis
request.getSession().setAttribute("kodas",kontrolinis kodas);
//Nustatykite šepetėlio spalvą į geltoną
g.setColor(Spalva.GELTONA);
//Nustatykite šrifto dydį
g.setFont(naujasŠriftas("Juodas korpusas",Šriftas.DRĄSUS,24));
//Parašykite patvirtinimo kodą į paveikslėlį
g.drawString(kontrolinis kodas,15,25);
//Išvesti paveikslėlį iš atminties į naršyklę
//1 parametras: paveikslėlio objektas
//2 parametras: paveikslėlio formatas, pvz.:PNG, JPG, GIF
//3 parametras: kur išvedamas vaizdas
"ImageIO".rašyti(vaizdas,"PNG",response.getOutputStream());
}
/**
*Pagaminta4Bitų atsitiktinė eilutė
*/
privatusEilutė getCheckCode() {
Stygos pagrindas ="0123456789ABCDEFGabcdefg";
intdydis = base.length(); Atsitiktinis r =naujasAtsitiktinis(); StringBuffer sb =naujasStringBuffer();
dėl(inti =1; i<=4; i++){
//Pagaminta0įDydis-1atsitiktinių verčių
intindeksas = r.nextInt(dydis);
//prieBazėeilutė gauti apatinį indeksą kaipindeksasVeikėjai
anglisc = base.charAt(indeksas);
//valiacĮdėtiStringBufferEiti per vidurį
sb.pridėti(c);
}
grįžtisb.toString();
}
@Override
viešas tuštumasdoPost(HttpServletRequest užklausa, HttpServletResponse atsakymas) metimaiServletException, IOException{
tai.doGet(prašymas,atsakymas);
}
}
Kaip tai pasiekti?
|