import java.awt.color;import java.awt.font;import java.awt.graphics;import java.awt.graphics2d;import java.awt.image.bufferedimage;import java.io.ioexception;import java.io.printwriter;import java.util.random;import javax.imageio.imageio;import javax.servlet.servletexception;import javax.servlet.http.httpservlet;import Javax.servlet.http.httpservletrequest;import javax.servlet.http.httpservletresponse;public class ImageProduceServlet extends HttpServlet {private static final int width = 120;private static final int hight = 35;public void Doget (httpservletrequest request, httpservletresponse response) throws ServletException, ioexception {bufferedimage image = new bufferedimage (WIDTH, HIGHT, BUFFEREDIMAGE.TYPE_INT_RGB); Graphics g = image.getgraphics ();//Set backScene color Setbackgroud (g);//Set Border SetBorder (g);//Draw Interference line drawrandomline (g);//write random number and deposit sessionstring random = drawrandomnum ((graphics2d) g); Request.getsession (). SetAttribute ("Imagecode", random);// Graphics to Browser response.setcontenttype ("Image/jpeg"); Imageio.write (image, "JPG", response.getoutputstream ()) ;} Private void setbackgroud (graphics g) {g.setcolor (Color.gray); G.fillRect (0, 0, Width, hight);} Private void setborder (graphics g) {g.setcolor (Color.Blue); G.drawrect (1,1,WIDTH-2,HIGHT-2) ;} Private void drawrandomline (graphics g) {g.setcolor (Color.green); for (int i=0;i<5;i + +) {int x1 = new random (). Nextint (WIDTH); Int y1 = new random (). nextInt (HIGHT); Int x2 = new random (). Nextint (WIDTH); Int y2 = new random (). Nextint (HIGHT); G.drawline (X1,y1,x2,y2);}} Private string drawrandomnum (graphics2d g) {g.setcolor (CoLor. RED); G.setfont (New font ("The song Body", font.bold,20)); string base = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; Stringbuffer sb = new stringbuffer (); Int x =5;for (int i=0; i<4;i++) {int degree = new random (). Nextint ()%30; //-30 degrees ~30 degrees string ch = base.charat (New random (). Nextint (Base.length ())) + ""; sb.append (ch); G.rotate (degree*math.pi/180,x,20) ; g.drawstring (ch, x, 20); g.rotate (-degree*math.pi/180,x,20); //ensure rotation is not additive x+=30;} Return sb.tostring ();} Public void dopost (Httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {doget (Request, response);}} |