В настоящее время в модули регистрации, входа или публикации информации многих систем добавлены функции случайного кода, чтобы избежать использования программ автоматической регистрации или программ автоматической публикации.
Код проверки фактически случайным образом выбирает некоторые символы и отображает их на странице в виде картинок. Если вы скачаете и отправите Tomato Garden, предоставленная информация будет считаться недействительной. Чтобы автоматические программы не могли анализировать и анализировать изображения, на изображении обычно случайным образом генерируются некоторые интерференционные линии или символы искажаются, что затрудняет автоматическое распознавание.
Скопируйте код кода следующим образом:
пакет com.servlet;
импортировать java.awt.Color;
импортировать java.awt.Font;
импортировать java.awt.Graphics2D;
импортировать java.awt.image.BufferedImage;
импортировать java.util.Random;
импортировать javax.imageio.ImageIO;
импортировать javax.servlet.ServletException;
импортировать javax.servlet.ServletOutputStream;
импортировать javax.servlet.http.HttpServlet;
импортировать javax.servlet.http.HttpServletRequest;
импортировать javax.servlet.http.HttpServletResponse;
импортировать javax.servlet.http.HttpSession;
/**
* Генерация случайного проверочного кода
* @author битилиу
*
*/
общедоступный класс ValidateCodeServlet расширяет HttpServlet
{
частный статический окончательный длинный сериалVersionUID = 1L;
//Ширина изображения кода проверки.
частная ширина int = 60;
//Высота изображения кода проверки.
частная высота int = 20;
//Количество символов в коде проверки
частный int codeCount = 4;
частный интервал х = 0;
//высота шрифта
частный int FontHeight;
частный int кодY;
char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
«К», «Л», «М», «Н», «О», «П», «Q», «R», «S», «Т», «U», «V», «W». ',
«X», «Y», «Z», «0», «1», «2», «3», «4», «5», «6», «7», «8», «9». ' };
/**
* Инициализация и проверка атрибутов изображения.
*/
public void init() выдает ServletException
{
//Получаем исходную информацию из web.xml
//ширина
String strWidth=this.getInitParameter("ширина");
//высокий
String strHeight=this.getInitParameter("высота");
//Количество символов
String strCodeCount=this.getInitParameter("codeCount");
//Преобразуем настроенную информацию в числовые значения
пытаться
{
if (strWidth!=null && strWidth.length()!=0)
{
ширина = Integer.parseInt(strWidth);
}
if (strHeight!=null && strHeight.length()!=0)
{
высота = Integer.parseInt(strHeight);
}
if (strCodeCount!=null && strCodeCount.length()!=0)
{
codeCount=Integer.parseInt(strCodeCount);
}
}
поймать (NumberFormatException е)
{}
х = ширина/(codeCount+1);
FontHeight = высота-2;
кодY=высота-4;
}
защищенная служба void (запрос HttpServletRequest, HttpServletResponse соответственно)
выдает ServletException, java.io.IOException {
//Определяем буфер изображения
BufferedImage buffImg = новый BufferedImage(
ширина, высота,BufferedImage.TYPE_INT_RGB);
Graphics2D g = buffImg.createGraphics();
//Создаем класс генератора случайных чисел
Случайный случайный = новый случайный();
//Заливаем изображение белым цветом
g.setColor(Цвет.БЕЛЫЙ);
g.fillRect(0, 0, ширина, высота);
//Создаем шрифт. Размер шрифта должен определяться в зависимости от высоты изображения.
Шрифт шрифта = новый шрифт("Fixedsys", Font.PLAIN, fontHeight);
//Установить шрифт.
г.setFont(шрифт);
//Рисуем границу.
g.setColor(Цвет.ЧЕРНЫЙ);
g.drawRect(0, 0, ширина — 1, высота — 1);
// Случайным образом генерируем 160 интерференционных линий, чтобы код аутентификации на изображении было трудно обнаружить другими программами.