. <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="checkCodeServlet?"+Новые функцииДата().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 =Новые функцииBufferedImage(ширина, высота, буферизованное изображение.TYPE_INT_RGB);
//Возьми щётку
Графика g = image.getGraphics();
//Установить цвет кисти на серый
g.setColor(Цвет.СЕРЫЙ);
//Заполните картинку
g.fillRect(0,0, ширина, высота);
//Продюсировано4случайный код проверки,12Ey
String checkCode = getCheckCode();
//Введите кодHttpSessionТерпимая
request.getSession().setAttribute(«код»,checkCode);
//Установить цвет кисти на жёлтый
g.setColor(Цвет.ЖЁЛТЫЙ);
//Задайте размер шрифта
g.setFont(Новые функцииШрифт("Чёрное тело",Шрифт.БОЛД,24));
//Запишите код проверки на изображение
g.drawString(checkCode,15,25);
//Выводите изображение из памяти в браузер
//Параметр 1: Объект изображения
//Параметр 2: Формат изображения, например:PNG, JPG, GIF
//Параметр 3: Где выводится изображение
ImageIO.Писать(изображение,«PNG»,response.getOutputStream());
}
/**
*Продюсировано4Битовая случайная строка
*/
ЧастныйСтрока getCheckCode() {
Основа струны ="0123456789ABCDEFGabcdefg";
intразмер = основание. длина(); Случайное r =Новые функцииСлучайность(); StringBuffer sb =Новые функцииStringBuffer();
для(inti=1; i<=4; i++){
//Продюсировано0КомуРазмер-1случайных значений
intindex = r.nextInt(размер);
//уБазастрока получает индекс какиндексПерсонажи
Чарc = base.charAt(индекс);
//воляcПоставьStringBufferИди в центр
sb.append(c);
}
Возвращениеsb.toString();
}
@Override
Публичная пустотаdoPost(HttpServletRequest request, ответ HttpServletResponse) БроскиServletException, IOException{
это.doGet(Запрос, ответ);
}
}
Как этого добиться?
|