Package com. banding. Web. util;
Import java. AWT. color;
Import java. AWT. Font;
Import java. AWT. graphics;
Import java. AWT. image. bufferedimage;
Import java. Io. ioexception;
Import java. util. Random;
Import javax. servlet. servletexception;
Import javax. servlet. http. httpservlet;
Import javax. servlet. http. httpservletrequest;
Import javax. servlet. http. httpservletresponse;
Import com.sun.image.codec.jpeg. Unzip codec;
Import com.sun.image.codec.jpeg. encode imageencoder;
Public class image extends httpservlet {
// Public static final long serialversionuid = 1l;
// Private Static final string content_type = "text/html; charset = GBK ";
Public color getrandcolor (int fc, int BC) {// obtain a random color from a given range
Random random = new random ();
'If (FC> 255 ){
Fc = 255;
}
If (BC & gt; 255 ){
BC = 255;
}
Int r = FC + random. nextint (BC-Fc );
Int G = FC + random. nextint (BC-Fc );
Int B = FC + random. nextint (BC-Fc );
Return new color (R, G, B );
}
// Initialize global variables
Public void Init () throws servletexception {
}
// Process the http get request
Public void doget (httpservletrequest request, httpservletresponse response) throws
Servletexception, ioexception {
// Set the page not to cache
Response. setheader ("Pragma", "No-Cache ");
Response. setheader ("cache-control", "No-Cache ");
Response. setdateheader ("expires", 0 );
// Create an image in memory
Int width = 60, Height = 20;
Bufferedimage image = new bufferedimage (width, height,
Bufferedimage. type_int_rgb );
// Obtain the image Context
Graphics G = image. getgraphics ();
// Generate a random class
Random random = new random ();
// Set the background color
G. setcolor (getrandcolor (200,250 ));
G. fillrect (0, 0, width, height );
// Set the font
G. setfont (new font ("Times New Roman", Font. Plain, 18 ));
// Draw a border
// G. setcolor (new color ());
// G. drawrect (0, 0, width-1, height-1 );
// Generates 155 random interference lines, making the authentication code in the image hard to be detected by other programs.
G. setcolor (getrandcolor (160,200 ));
For (INT I = 0; I <155; I ++ ){
Int x = random. nextint (width );
Int y = random. nextint (height );
Int XL = random. nextint (12 );
Int yl = random. nextint (12 );
G. drawline (X, Y, x + XL, Y + yl );
}
// Obtain the random ID code (4 digits)
String srand = "";
For (INT I = 0; I <4; I ++ ){
String Rand = string. valueof (random. nextint (10 ));
Srand + = rand;
// Display the authentication code to the image
G. setcolor (new color (20 + random. nextint (110 ),
20 + random. nextint (110 ),
20 + random. nextint (110 )));
// The Color of the called function is the same. It may be because the seed is too close and can only be directly generated.
G. drawstring (RAND, 13 * I + 6, 16 );
}
// Save the authentication code to the session
Request. getsession (). setattribute ("RAND", srand );
// The image takes effect
G. Dispose ();
// Output the image to the page
// ImageIO. Write (image, "Jpeg", response. getoutputstream ());
Required imageencoder encode = Response codec. createjpegencoder (response.
Getoutputstream ());
Encode. encode (image );
}
// Clean up resources
Public void destroy (){
}
}
The above code can be used directly. After being configured in Web. XML, you can access this servlet in the browser to get the following results:
To use this verification code on the JSP page, you only need to use the
That's all.