. <html页面>. .
<tr>
<tdклас="td_left">
<Лейблfor="Шахка">CAPTCHA</Лейбл>
</td>
<tdклас="td_right чек">
<Вхідtype="текст"id="Шахка"ім'я="Шахка"клас="Шахка">
<imgsrc="перевіритиCodeServlet"висота ="32px"alt=""onclick="changeCheckCode(Ось це)">
<Сценарійtype="text/javascript">
//Події з кліком зображення
ФункціяchangeCheckCode(img) {
img.SRC="перевіритиCodeServlet?"+NewДата().getTime();
}
</Сценарій>
</td>
</tr>//验证码拼接部分Публічний класCheckCodeServletРозширюєтьсяHttpServlet{
@Override
Публічна порожнечаdoGet(HttpServletRequest request, відповідь HttpServletResponse)КидкиServletException, IOException{
//Сервер повідомляє браузеру не кешувати
response.setHeader(«прагма»,"Без кешу"); response.setHeader("Контроль кешу","Без кешу"); response.setHeader("Термін дії","0");
//Створіть довгий запис у пам'яті80, широко30Стандартний чорний фон
//Параметр 1: Довжина
//Параметр 2: Ширина
//Параметр 3: Колір
intширина =80;
intвисота =30; BufferedImage image =NewBufferedImage(ширина, висота, буферизоване зображення.TYPE_INT_RGB);
//Візьми щітку
Графіка g = image.getGraphics();
//Встановіть колір пензля на сірий
g.setColor(Колір.СІРИЙ);
//Заповніть картину
g.fillRect(0,0, ширина, висота);
//Виробництво4Код випадкової верифікації,12Ey
String checkCode = getCheckCode();
//Введіть кодHttpSessionСереднє
request.getSession().setАтрибут("код",перевіритиКод);
//Встановіть колір пензля на жовтий
g.setColor(Колір.ЖОВТИЙ);
//Встановіть розмір шрифту
g.setFont(NewШрифт("Чорне тіло",Шрифт.БОЛД,24));
//Запишіть код верифікації на зображенні
g.drawString(checkCode,15,25);
//Виведіть зображення з пам'яті в браузер
//Параметр 1: Об'єкт зображення
//Параметр 2: Формат зображення, наприклад:PNG, JPG, GIF
//Параметр 3: Де виводиться зображення
ImageIO.Пиши(зображення,"PNG",відповідь.getOutputStream());
}
/**
*Виробництво4Бітова випадкова струна
*/
ПриватString getCheckCode() {
Основа струни ="0123456789ABCDEFGabcdefg";
intрозмір = base.length(); Випадкове r =NewВипадковість(); StringBuffer sb =NewStringBuffer();
для(inti=1; i<=4; i++){
//Виробництво0доРозмір-1випадкових значень
intindex = r.nextInt(розмір);
//приБазаString отримують індекс якіндексПерсонажі
charc = base.charAt(індекс);
//воляcВставляйStringBufferІди посередині
sb.append(c);
}
Поверненняsb.toString();
}
@Override
Публічна порожнечаdoPost(HttpServletRequest request, відповідь HttpServletResponse) КидкиServletException, IOException{
Ось це.doGet(Запит, відповідь);
}
}
Як це досягти?
|