. <html页面>.
<tr>
<tdkelas="td_left">
<labeluntuk="memeriksa">CAPTCHA</label>
</td>
<tdkelas="td_right periksa">
<masukanjenis="teks"id="memeriksa"nama="memeriksa"kelas="memeriksa">
<imgsrc="checkCodeServlet"tinggi ="32px"alt=""aktifklik="changeCheckCode(ini)">
<naskahjenis="teks/javascript">
//Peristiwa klik gambar
FungsichangeCheckCode(img) {
img.src="periksaKodeServlet?"+baruTanggal().Dapatkan Waktu();
}
</naskah>
</td>
</tr>//验证码拼接部分Kelas UmumServlet Kode PeriksamemperluasServlet (dalam bahasa Inggris){
@Override
kekosongan publikdoDapatkan(Permintaan HttpServletRequest, respons HttpServletResponse)lemparanServletException, IOException{
//Server memberi tahu browser untuk tidak meng-cache
response.setHeader("pragma","tanpa cache"); response.setHeader("kontrol cache","tanpa cache"); response.setHeader("kedaluwarsa","0");
//Buat yang panjang dalam memori80, lebar30Latar belakang hitam default
//Parameter 1: Panjang
//Parameter 2: Lebar
//Parameter 3: Warna
intlebar =80;
inttinggi =30; Gambar BufferedImage =baruBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
//Dapatkan kuas
Grafik g = image.getGraphics();
//Atur warna kuas ke abu-abu
g.setWarna(Warna.ABU-ABU);
//Isi gambar
g.fillRect(0,0, lebar, tinggi);
//Diproduksi4kode verifikasi acak,12Ey
Kode pemeriksaan string = getCheckCode();
//Masukkan kodeSesi HttpSedang
request.getSession().setAtribut("kode",kode periksa);
//Atur warna kuas ke kuning
g.setWarna(Warna.KUNING);
//Atur ukuran font
g.setFont(baruFont("Tubuh hitam",Font.BERANI,24));
//Tulis kode verifikasi ke gambar
g.drawString(kode periksa,15,25);
//Keluarkan gambar dari memori ke browser
//Parameter 1: Objek gambar
//Parameter 2: Format gambar, seperti:PNG, JPG, GIF
//Parameter 3: Di mana gambar dikeluarkan
GambarIO.Tulis(gambar,"PNG",response.getOutputStream());
}
/**
*Diproduksi4String acak bit
*/
pribadiString getCheckCode() {
Basis string ="0123456789ABCDEFGabcdefg";
intukuran = dasar.panjang(); Acak r =baruAcak(); StringBuffer sb =baruStringBuffer();
untuk(inti=1; saya<=4; i++){
//Diproduksi0untukUkuran-1nilai acak
intindeks = r.nextInt(tingginya);
//diDasarstring get subscript sebagaiIndekskarakter
arangc = base.charAt(Indeks);
//kehendakcMasukkanStringBufferPergi ke tengah
sb.menambahkan(c);
}
Kembalisb.keString();
}
@Override
kekosongan publikdoPosting(Permintaan HttpServletRequest, respons HttpServletResponse) lemparanServletException, IOException{
ini.doDapatkan(permintaan, tanggapan);
}
}
Bagaimana cara mencapainya?
|