Heutzutage verfügen die Registrierungs-, Anmelde- oder Informationsveröffentlichungsmodule vieler Systeme über Zufallscodefunktionen, um die Verwendung automatischer Registrierungsprogramme oder automatischer Veröffentlichungsprogramme zu vermeiden.
Der Bestätigungscode wählt tatsächlich zufällig einige Zeichen aus und zeigt sie auf der Seite in Form von Bildern an. Wenn Sie den Tomato Garden herunterladen und übermitteln, gelten die übermittelten Informationen als ungültig. Um zu verhindern, dass automatische Programme Bilder analysieren und analysieren, werden normalerweise einige Interferenzlinien zufällig auf dem Bild erzeugt oder Zeichen sind verzerrt, was die automatische Erkennung erschwert.
Kopieren Sie den Codecode wie folgt:
Paket com.servlet;
import java.awt.Color;
java.awt.Font importieren;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Generieren Sie einen zufälligen Bestätigungscode
* @author bitiliu
*
*/
Die öffentliche Klasse ValidateCodeServlet erweitert HttpServlet
{
private static final long serialVersionUID = 1L;
//Die Breite des Verifizierungscodebildes.
private int width=60;
//Die Höhe des Verifizierungscodebildes.
private int height=20;
//Die Anzahl der Zeichen im Bestätigungscode
private int codeCount=4;
private int x=0;
//Schrifthöhe
private int FontHeight;
privater int codeY;
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“. ' };
/**
* Bildattribute initialisieren und überprüfen
*/
public void init() löst eine ServletException aus
{
// Erste Informationen aus web.xml abrufen
//Breite
String strWidth=this.getInitParameter("width");
//hoch
String strHeight=this.getInitParameter("height");
//Anzahl der Zeichen
String strCodeCount=this.getInitParameter("codeCount");
// Konfigurierte Informationen in numerische Werte umwandeln
versuchen
{
if (strWidth!=null && strWidth.length()!=0)
{
width=Integer.parseInt(strWidth);
}
if (strHeight!=null && strHeight.length()!=0)
{
height=Integer.parseInt(strHeight);
}
if (strCodeCount!=null && strCodeCount.length()!=0)
{
codeCount=Integer.parseInt(strCodeCount);
}
}
Catch(NumberFormatException e)
{}
x=width/(codeCount+1);
FontHeight=height-2;
codeY=height-4;
}
geschützter leerer Dienst (HttpServletRequest req, HttpServletResponse resp.)
wirft ServletException, java.io.IOException {
//Bildpuffer definieren
BufferedImage buffImg = new BufferedImage(
Breite, Höhe,BufferedImage.TYPE_INT_RGB);
Graphics2D g = buffImg.createGraphics();
//Erstelle eine Zufallszahlengeneratorklasse
Zufällig random = new Random();
//Das Bild mit Weiß füllen
g.setColor(Color.WHITE);
g.fillRect(0, 0, Breite, Höhe);
//Erstelle eine Schriftart. Die Größe der Schriftart sollte entsprechend der Höhe des Bildes bestimmt werden.
Schriftart Schriftart = neue Schriftart("Fixedsys", Font.PLAIN, fontHeight);
//Schriftart festlegen.
g.setFont(font);
//Zeichne einen Rand.
g.setColor(Color.BLACK);
g.drawRect(0, 0, Breite – 1, Höhe – 1);
// Generiere nach dem Zufallsprinzip 160 Interferenzlinien, um die Erkennung des Authentifizierungscodes im Bild durch andere Programme zu erschweren.