Hoje em dia, os módulos de registro, login ou publicação de informações de muitos sistemas possuem funções de código aleatório adicionadas para evitar o uso de programas de registro automático ou programas de publicação automática.
O código de verificação seleciona aleatoriamente alguns caracteres e os exibe na página na forma de imagens. Se você baixar e enviar o Tomato Garden, as informações enviadas serão consideradas inválidas. Para evitar que programas automáticos analisem e analisem imagens, algumas linhas de interferência geralmente são geradas aleatoriamente na imagem ou caracteres são distorcidos, dificultando o reconhecimento automático.
Copie o código do código da seguinte forma:
pacote com.servlet;
importar java.awt.Color;
importar java.awt.Font;
importar java.awt.Graphics2D;
importar java.awt.image.BufferedImage;
importar java.util.Random;
importar javax.imageio.ImageIO;
importar javax.servlet.ServletException;
importar javax.servlet.ServletOutputStream;
importar javax.servlet.http.HttpServlet;
importar javax.servlet.http.HttpServletRequest;
importar javax.servlet.http.HttpServletResponse;
importar javax.servlet.http.HttpSession;
/**
* Gere código de verificação aleatório
* @autor bitiliu
*
*/
classe pública ValidateCodeServlet estende HttpServlet
{
privado estático final longo serialVersionUID = 1L;
//A largura da imagem do código de verificação.
largura interna privada = 60;
//A altura da imagem do código de verificação.
altura interna privada=20;
//O número de caracteres no código de verificação
private int codeCount=4;
privado int x = 0;
//altura da fonte
private int fontHeight;
privado int códigoY;
char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W ',
'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9 ' };
/**
* Inicialize e verifique os atributos da imagem
*/
public void init() lança ServletException
{
//Obter informações iniciais de web.xml
//largura
String strWidth=this.getInitParameter("largura");
//alto
String strHeight=this.getInitParameter("altura");
//Número de caracteres
String strCodeCount=this.getInitParameter("codeCount");
//Converte as informações configuradas em valores numéricos
tentar
{
if (strWidth!=null && strWidth.length()!=0)
{
largura=Integer.parseInt(strWidth);
}
if (strHeight!=null && strHeight.length()!=0)
{
altura=Integer.parseInt(strHeight);
}
if (strCodeCount!=null && strCodeCount.length()!=0)
{
codeCount=Integer.parseInt(strCodeCount);
}
}
catch(NumberFormatException e)
{}
x=largura/(códigoCount+1);
fontHeight=altura-2;
códigoY=altura-4;
}
serviço nulo protegido (req HttpServletRequest, HttpServletResponse resp)
lança ServletException, java.io.IOException {
//Definir buffer de imagem
BufferedImage buffImg = new BufferedImage(
largura, altura,BufferedImage.TYPE_INT_RGB);
Gráficos2D g = buffImg.createGraphics();
//Cria uma classe geradora de números aleatórios
Aleatório aleatório = new Aleatório();
//Preenche a imagem com branco
g.setColor(Cor.BRANCO);
g.fillRect(0, 0, largura, altura);
//Crie uma fonte O tamanho da fonte deve ser determinado de acordo com a altura da imagem.
Fonte fonte = new Font("Fixedsys", Font.PLAIN, fontHeight);
//Definir fonte.
g.setFont(fonte);
//Desenhe uma borda.
g.setColor(Color.BLACK);
g.drawRect(0, 0, largura - 1, altura - 1);
// Gera aleatoriamente 160 linhas de interferência para dificultar a detecção do código de autenticação na imagem por outros programas.