. <html页面>. .
<TR>
<TDtřída="td_left">
<Labelpro="Kontrola">CAPTCHA</Label>
</TD>
<TDtřída="td_right kontrola">
<Vstuptyp="text"id="Kontrola"název="Kontrola"třída="Kontrola">
<imgsrc="checkCodeServlet"výška="32px"alt=""onclick="changeCheckCode(přesně to)">
<Scénářtyp="text/javascript">
//Události kliknutí na obrázek
FunkcechangeCheckCode(img) {
IMG.SRC="checkCodeServlet?"+NovéDatum().getTime();
}
</Scénář>
</TD>
</TR>//验证码拼接部分Třída PublicCheckCodeServletrozšiřujeHttpServlet{
@Override
Veřejné prázdnodoGet(HttpServletRequest request, HttpServletResponse odpověď)HodyServletException, IOException{
//Server informuje prohlížeč, aby neukládal do mezipaměti
response.setHeader("pragma","Žádná keš"); response.setHeader("Řízení cache","Žádná keš"); response.setHeader("vyprší","0");
//Vytvořte si dlouhý v paměti80, široký30Výchozí černé pozadí
//Parametr 1: Délka
//Parametr 2: Šířka
//Parametr 3: Barva
intšířka =80;
intvýška =30; Obraz BufferedImage =NovéBufferedImage(šířka, výška, BufferedImage.TYPE_INT_RGB);
//Přines štětec
Graphics g = image.getGraphics();
//Nastavte štětec na šedou
g.setColor(Barvy.ŠEDÁ);
//Vyplňte obrázek
g.fillRect(0,0, šířka, výška);
//Produkce4Náhodný ověřovací kód,12Ey
String checkCode = getCheckCode();
//Zadejte kódHttpSessionStředně
request.getSession().setAttribute("kód",checkCode);
//Nastavte štětec na žlutou barvu
g.setColor(Barvy.ŽLUTÁ);
//Nastavte velikost písma
g.setFont(NovéKřtitelnice("Černé tělo",Font.DRŽ SE,24));
//Napište ověřovací kód na obrázek
g.drawString(checkCode,15,25);
//Výstup obrázku z paměti do prohlížeče
//Parametr 1: Objekt obrázku
//Parametr 2: Formát obrázku, například:PNG,JPG,GIF
//Parametr 3: Kde je obraz výstupem
ImageIO.Napsat(obrázek,"PNG",response.getOutputStream());
}
/**
*Produkce4Bitový náhodný řetězec
*/
SoukromýString getCheckCode() {
Strunová báze ="0123456789ABCDEFGabcdefg";
intvelikost = základna.délka(); Náhodné r =NovéNáhodné(); StringBuffer sb =NovéStringBuffer();
pro(inti=1; i<=4; i++){
//Produkce0dovelikost-1náhodných hodnot
intindex = r.nextInt(velikost);
//uZákladnařetězec dostane index jakoindexPostavy
charc = base.charAt(index);
//závěťcDej toStringBufferJdi doprostřed
sb.append(c);
}
návratsb.toString();
}
@Override
Veřejné prázdnodoPost(HttpServletRequest request, HttpServletResponse odpověď) HodyServletException, IOException{
přesně to.doGet(žádost, odpověď);
}
}
Jak toho dosáhnout?
|