. <html页面>. .
<TR>
<TDrazred="td_left">
<Založbafor="Preverjeno">CAPTCHA</Založba>
</TD>
<TDrazred="td_right preverjeno">
<Prispevektip="Besedilo"id="Preverjeno"ime="Preverjeno"razred="Preverjeno">
<imgsrc="checkCodeServlet"višina="32px"alt=""onclick="changeCheckCode(to)">
<Scenarijtip="Text/JavaScript">
//Dogodki s klikom slike
FunkcijachangeCheckCode(img) {
IMG.SRC="checkCodeServlet?"+novoDate().getTime();
}
</Scenarij>
</TD>
</TR>//验证码拼接部分Javni razredCheckCodeServletrazširjaHttpServlet{
@Override
Javna prazninadoGet(HttpServletRequest request, HttpServletResponse odgovor)MetiServletException, IOException{
//Strežnik obvesti brskalnik, naj ne predpomni
response.setHeader("pragma","brez predpomnjenja"); response.setHeader("nadzor predpomnilnika","brez predpomnjenja"); response.setHeader("poteče","0");
//Ustvari dolgo v spominu80, široko30Privzeto črno ozadje
//Parameter 1: Dolžina
//Parameter 2: Širina
//Parameter 3: Barva
intširina =80;
intvišina =30; Slika BufferedImage =novoBufferedImage(širina, višina, predpomnjena slika.TYPE_INT_RGB);
//Prinesi čopič
Grafika g = image.getGraphics();
//Nastavi barvo čopiča na sivo
g.setColor(Barva.GRAY);
//Izpolnite sliko
g.fillRect(0,0, širina, višina);
//Produkcija4naključna verifikacijska koda,12Ey
String checkCode = getCheckCode();
//Vnesi kodoHttpSessionSrednja
request.getSession().setAttribute("Koda",checkCode);
//Nastavite barvo čopiča na rumeno
g.setColor(Barva.RUMENA);
//Nastavite velikost pisave
g.setFont(novoKrstilnik("Črno telo",Font.POGUMNO,24));
//Napišite verifikacijsko kodo na sliko
g.drawString(checkCode,15,25);
//Izpis slike iz pomnilnika v brskalnik
//Parameter 1: Slikovni objekt
//Parameter 2: Format slike, na primer:PNG,JPG,GIF
//Parameter 3: Kje je slika izpisana
ImageIO.piši(slike,"PNG",response.getOutputStream());
}
/**
*Produkcija4Bitni naključni niz
*/
VojnikString getCheckCode() {
Osnova strune ="0123456789ABCDEFGabcdefg";
intvelikost = osnova.dolžina(); Naključno r =novoNaključno(); StringBuffer sb =novoStringBuffer();
za(inti=1; i<=4; i++){
//Produkcija0doVelikost-1naključnih vrednosti
intindex = r.nextInt(velikost);
//naBazaniz dobi indeks kotkazaloLik
charc = base.charAt(kazalo);
//voljacVstaviStringBufferPojdi na sredino
sb.append(c);
}
Vrnitevsb.toString();
}
@Override
Javna prazninadoPost(HttpServletRequest request, HttpServletResponse odgovor) MetiServletException, IOException{
to.doGet(Prošnja, odgovor);
}
}
Kako to doseči?
|