<html页面>. .
<tr>
<TDclass="td_left">
<Plaadifirmafor="Kontroll">CAPTCHA</Plaadifirma>
</TD>
<TDclass="td_right kontroll">
<Sisendtype="tekst"id="Kontroll"nimi="Kontroll"class="Kontroll">
<imgsrc="checkCodeServlet"kõrgus="32px"alt=""onclick="changeCheckCode(See)">
<Stsenaariumtype="tekst/javascript">
//Pildiklikkide sündmused
FunktsioonchangeCheckCode(img) {
img.src="kontrolliCodeServlet?"+uusDate().getTime();
}
</Stsenaarium>
</TD>
</tr>//验证码拼接部分Avalik klassCheckCodeServletLaiendabHttpServlet{
@Override
avalik tühisusdoGet(HttpServletRequest request, HttpServletResponse vastus)ViskedServletException, IOException{
//Server teavitab brauserit mitte vahemällu salvestada
response.setHeader("Pragma","Vahemäluta"); response.setHeader("vahemälu kontroll","Vahemäluta"); response.setHeader("aegub","0");
//Loo pikk mälestus80, lai30Vaikimisi must taust
//Parameeter 1: Pikkus
//Parameeter 2: Laius
//Parameeter 3: Värv
intlaius =80;
intkõrgus =30; BufferedImage image =uusBufferedImage(laius, kõrgus, puhverdatud pilt.TYPE_INT_RGB);
//Võta pintsel
Graafika g = image.getGraphics();
//Sea pintsli värv halliks
g.setColor(Värv.HALL);
//Täida pilt
g.fillRect(0,0, laius, kõrgus);
//Produtsent4juhuslik verifitseerimiskood,12Ey
String checkCode = getCheckCode();
//Pane kood sisseHttpSessionKeskmine
request.getSession().setAttribute("kood",checkCode);
//Sea pintsli värv kollaseks
g.setColor(Värv.KOLLANE);
//Määra fondi suurus
g.setFont(uusFont("Must keha",font.JULGE,24));
//Kirjuta pildile verifitseerimiskood
g.drawString(checkCode,15,25);
//Väljundiks pilt mälust brauserisse
//Parameeter 1: Pildiobjekt
//Parameeter 2: Pildi formaat, näiteks:PNG,JPG,GIF
//Parameeter 3: Kus pilt väljundis on
ImageIO.kirjuta(pilt,"PNG",response.getOutputStream());
}
/**
*Produtsent4Bittide juhuslik string
*/
PrivaatneString getCheckCode() {
Stringi alus ="0123456789ABCDEFGabcdefg";
intsuurus = alus.pikkus(); Juhuslik r =uusJuhuslik(); StringBuffer sb =uusStringBuffer();
for(inti=1; i<=4; i++){
//Produtsent0kunisuurus-1juhuslike väärtuste kohta
intindex = r.nextInt(suurus);
//juuresBaasstring saab alamindeksi kujulIndeksTegelased
charc = base.charAt(Indeks);
//tahecPane sisseStringBufferMine keskele
sb.append(c);
}
Tagasituleksb.toString();
}
@Override
avalik tühisusdoPost(HttpServletRequest request, HttpServletResponse vastus) ViskedServletException, IOException{
See.doGet(Palve, vastus);
}
}
Kuidas seda saavutada?
|