. <html页面>. .
<TR>
<TDtrieda="td_left">
<Vydavateľstvopre="Skontrolované">CAPTCHA</Vydavateľstvo>
</TD>
<TDtrieda="td_right skontrolované">
<vstuptyp="text"id="Skontrolované"meno="Skontrolované"trieda="Skontrolované">
<imgsrc="checkCodeServlet"výška="32px"alt=""onclick="changeCheckCode(presne toto)">
<Scenártyp="text/javascript">
//Udalosti kliknutia na obrázky
FunkciachangeCheckCode(img) {
IMG.SRC="checkCodeServlet?"+NovéDate().getTime();
}
</Scenár>
</TD>
</TR>//验证码拼接部分Verejná triedaCheckCodeServletRozširujeHttpServlet{
@Override
Verejná prázdnotadoGet(HttpServletRequest požiadavka, HttpServletResponse odpoveď)HodyServletException, IOException{
//Server informuje prehliadač, aby neukladal do vyrovnávacej pamäte
response.setHeader("pragma","bez cache"); response.setHeader("riadenie cache","bez cache"); response.setHeader("vyprší","0");
//Vytvor dlhý v pamäti80, široký30Predvolené čierne pozadie
//Parameter 1: Dĺžka
//Parameter 2: Šírka
//Parameter 3: Farba
intšírka =80;
intvýška =30; Obraz BufferedImage =NovéBufferedImage(šírka, výška, BufferedImage.TYPE_INT_RGB);
//Zober štetec
Grafika g = image.getGraphics();
//Nastavte farbu štetca na sivú
g.setColor(Farba.GRAY);
//Vyplňte obraz
g.fillRect(0,0, šírka, výška);
//Produkcia4Náhodný overovací kód,12Ey
String checkCode = getCheckCode();
//Zadaj kódHttpSessionStredná
request.getSession().setAttribute("kód",checkCode);
//Nastavte farbu štetca na žltú
g.setColor(Farba.ŽLTÁ);
//Nastavte veľkosť písma
g.setFont(NovéKrstiteľnica("Čierne telo",Font.ODVAHA,24));
//Napíšte overovací kód na obrázok
g.drawString(checkCode,15,25);
//Výstup obrázka z pamäte do prehliadača
//Parameter 1: Objekt obrázka
//Parameter 2: Formát obrázka, napríklad:PNG,JPG,GIF
//Parameter 3: Odkiaľ je obraz výstupom
ImageIO.píš(obrázok,"PNG",response.getOutputStream());
}
/**
*Produkcia4Bitový náhodný reťazec
*/
SúkromnéString getCheckCode() {
Základ struny ="0123456789ABCDEFGabcdefg";
intveľkosť = základ.dĺžka(); Náhodný r =NovéNáhodné(); StringBuffer sb =NovéStringBuffer();
pre(inti=1; i<=4; i++){
//Produkcia0doVeľkosť-1náhodných hodnôt
intindex = r.nextInt(veľkosť);
//priZákladňareťazec dostane dolný index akoindexPostavy
charc = base.charAt(index);
//vôľacDaj toStringBufferChoď do stredu
sb.append(c);
}
návratsb.toString();
}
@Override
Verejná prázdnotadoPost(HttpServletRequest požiadavka, HttpServletResponse odpoveď) HodyServletException, IOException{
presne toto.doGet(žiadosť, odpoveď);
}
}
Ako to dosiahnuť?
|