<html页面>. .
<tr>
<TDclass="td_left">
<Plak şirketifor="Kontrol et">CAPTCHA</Plak şirketi>
</TD>
<TDclass="td_right çek">
<Giriştype="metin"id="Kontrol et"isim="Kontrol et"class="Kontrol et">
<imgsrc="checkCodeServlet"yükseklik="32px"alt=""onclick="changeCheckCode(Bu)">
<Senaryotype="metin/javascript">
//Resim tıklama etkinlikleri
FonksiyonchangeCheckCode(img) {
img.src="CodeServlet kontrol et?"+YeniDate().getTime();
}
</Senaryo>
</TD>
</tr>//验证码拼接部分Halk sınıfıCheckCodeServletUzanırHttpServlet{
@Override
Kamu BoşluğudoGet(HttpServletRequest request, HttpServletResponse response)AtışlarServletException, IOException{
//Sunucu, tarayıcıya önbelleklememesini bildirir
response.setHeader("Pragma","önbellek yok"); response.setHeader("önbellek kontrolü","önbellek yok"); response.setHeader("süresi doluyor","0");
//Hafızada uzun bir tane yarat80, geniş30Varsayılan siyah arka plan
//Parametre 1: Uzunluk
//Parametre 2: Genişlik
//Parametre 3: Renk
intgenişlik =80;
intboy =30; BufferedImage görüntüsü =YeniBufferedImage(genişlik, yükseklik, tamponlu Görüntü.TYPE_INT_RGB);
//Fırçayı al
Grafikler g = image.getGraphics();
//Fırça rengini griye ayarlayın
g.setColor(Renk.GRAY);
//Fotoğrafı doldur
g.fillRect(0,0, genişlik, yükseklik);
//Yapımcı4rastgele doğrulama kodu,12Ey
String checkCode = getCheckCode();
//Kodu girHttpSessionOrta
request.getSession().setAttribute("kod",checkCode);
//Fırça rengini sarıya ayarla
g.setColor(Renk.SARI);
//Fontun boyutunu ayarlayın
g.setFont(YeniFont("Siyah gövde",Font.KALIN,24));
//Görüntüye doğrulama kodu yaz
g.drawString(checkCode,15,25);
//Resmi bellekten tarayıcıya gönderin
//Parametre 1: Resim nesnesi
//Parametre 2: Fotoğrafın formatı, örneğin:PNG,JPG,GIF
//Parametre 3: Resmin çıktı olduğu yer
ImageIO.yaz(Görüntü,"PNG",response.getOutputStream());
}
/**
*Yapımcı4Bit rastgele dizisi
*/
özelString getCheckCode() {
Dizi tabanı ="0123456789ABCDEFGabcdefg";
intboyut = taban.uzunluk(); Rastgele r =YeniRastgele(); StringBuffer sb =YeniStringBuffer();
için(inti=1; i<=4; i++){
//Yapımcı0HedefSize-1rastgele değerlerin
intindex = r.nextInt(boyut);
//databandizisi alt indeksi şu şekilde alınDizinKarakterler
charc = base.charAt(Dizin);
//vasiyetcKoyunStringBufferOrtadan geç
sb.append(c);
}
Dönüşsb.toString();
}
@Override
Kamu BoşluğudoPost(HttpServletRequest request, HttpServletResponse response) AtışlarServletException, IOException{
Bu.doGet(Talep,Yanıt);
}
}
Bunu nasıl başarabilirim?
|