. <html页面>. .
<tr>
<tdклас="td_left">
<Лейбълfor="проверено">CAPTCHA</Лейбъл>
</td>
<tdклас="td_right чек">
<Входтип="съобщение"id="проверено"име="проверено"клас="проверено">
<imgsrc="checkCodeServlet"височина="32px"alt=""onclick="changeCheckCode(Това)">
<Сценарийтип="текст/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().setАтрибут("код",checkCode);
//Настройте цвета на четката на жълто
g.setColor(Цвят.ЖЪЛТО);
//Задайте размера на шрифта
g.setFont(НовШрифт("Черно тяло",Шрифт.БОЛД,24));
//Запишете код за проверка на изображението
g.drawString(checkCode,15,25);
//Изведи изображението от паметта в браузъра
//Параметър 1: Обект с изображение
//Параметър 2: Форматът на картината, като:PNG, JPG, GIF
//Параметър 3: Където се изводи изображението
ImageIO.Пиши(изображение,"ПНГ",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(Молба, отговор);
}
}
Как да го постигна?
|