. <html页面>. .
<TR>
<TDklasa="td_left">
<Wytwórniadla="Sprawdź">CAPTCHA</Wytwórnia>
</TD>
<TDklasa="td_right sprawdzone">
<Wkładtype="tekst"id="Sprawdź"imię="Sprawdź"klasa="Sprawdź">
<imgsrc="checkCodeServlet"wysokość="32px"alt=""onclick="changeCheckCode(to)">
<Scenariusztype="tekst/javascript">
//Wydarzenia kliknięcia obrazów
FunkcjachangeCheckCode(img) {
IMG.SRC="checkCodeServlet?"+NowyData().getTime();
}
</Scenariusz>
</TD>
</TR>//验证码拼接部分Klasa publicznaCheckCodeServletrozszerzaHttpServlet{
@Override
publiczna pustkadoGet(HttpServletRequest request, odpowiedź HttpServletResponse)rzutyServletException, IOException{
//Serwer informuje przeglądarkę, aby nie zapisywała pamięci podręcznej
response.setHeader("pragma","bez cache"); response.setHeader("kontrola pamięci podręcznej","bez cache"); response.setHeader("wygasa","0");
//Stwórz długą w pamięci80, szeroki30Domyślne czarne tło
//Parametr 1: Długość
//Parametr 2: Szerokość
//Parametr 3: Kolor
intszerokość =80;
intWysokość =30; Obraz BufferedImage =NowyBufferedImage(szerokość, wysokość, obraz buforowany.TYPE_INT_RGB);
//Weź szczotkę
Graphics g = image.getGraphics();
//Ustaw kolor pędzla na szary
g.setColor(Kolor.SZARY);
//Wypełnij obraz
g.fillRect(0,0, szerokość, wysokość);
//Wyprodukowane4Kod weryfikacyjny losowy,12Ey
String checkCode = getCheckCode();
//Wprowadź kodHttpSessionŚredni
request.getSession().setAttribute("kod",checkCode);
//Ustaw kolor pędzla na żółty
g.setColor(Kolor.ŻÓŁTY);
//Ustaw rozmiar czcionki
g.setFont(NowyChrzcielnica("Czarne ciało",Font.ODWAŻ,24));
//Napisz kod weryfikacyjny do obrazu
g.drawString(checkCode,15,25);
//Wyślij obraz z pamięci do przeglądarki
//Parametr 1: Obiekt obrazu
//Parametr 2: Format obrazu, taki jak:PNG,JPG,GIF
//Parametr 3: Gdzie obraz jest wyprowadzany
ImageIO.Napisz(obraz,"PNG",response.getOutputStream());
}
/**
*Wyprodukowane4Ciąg bitowy losowy
*/
PrywatnyCiąg getCheckCode() {
Baza struny ="0123456789ABCDEFGabcdefg";
introzmiar = podstawa.długość(); Losowe r =NowyLosowo(); StringBuffer sb =NowyStringBuffer();
dla(inti=1; i<=4; i++){
//Wyprodukowane0dorozmiar-1wartości losowych
intindex = r.nextInt(rozmiar);
//przyBazaCiąg otrzymuje indeks dolny jakoindeksPostacie
charc = base.charAt(indeks);
//wolacWłóżStringBufferIdź na środek
sb.append(c);
}
powrótsb.toString();
}
@Override
publiczna pustkadoPost(HttpServletRequest request, odpowiedź HttpServletResponse) rzutyServletException, IOException{
to.doGet(Prośba, odpowiedź);
}
}
Jak to osiągnąć?
|