Today compiled a Java implementation of the Chinese character input verification code
Mainly contains two classes, one is to generate a verification code, one is to determine whether the verification code input is correct
The realization principle is very simple, the Chinese character and the interference line generation picture and saves the Chinese character to the session, the foreground obtains each time generates the verification code picture and compares with the text box value and the session value, the function is how simple.
Generate Chinese character verification code source code display
1 PackageXwcms.net.service;2 ImportJava.awt.Color;3 ImportJava.awt.Font;4 ImportJava.awt.Graphics;5 ImportJava.awt.Graphics2D;6 ImportJava.awt.image.BufferedImage;7 Importjava.io.IOException;8 ImportJava.util.Random;9 ImportJavax.imageio.ImageIO;Ten Importjavax.servlet.ServletException; One ImportJavax.servlet.http.HttpServlet; A Importjavax.servlet.http.HttpServletRequest; - ImportJavax.servlet.http.HttpServletResponse; - /** the * Generate random characters - * - * @authorXW Material Network provides - * + */ - Public classDrawImageextendsHttpServlet { + Public Static Final intWIDTH = 120; A Public Static Final intHEIGHT = 30; at Public voiddoget (httpservletrequest request, httpservletresponse response) - throwsservletexception, IOException { - This. DoPost (request, response); - } - Public voidDoPost (httpservletrequest request, httpservletresponse response) - throwsservletexception, IOException { inRequest.setcharacterencoding ("Utf-8"); -Response.setcontenttype ("Text/html;charset=utf-8"); to //Create Cache +BufferedImage bi =Newbufferedimage (WIDTH, HEIGHT, - Bufferedimage.type_int_rgb); the //Get Canvas *Graphics g =bi.getgraphics (); $ //Set Back ColorPanax Notoginseng SetBackground (g); - //Set Border the SetBorder (g); + //Draw Interference Lines A Drawrandomline (g); the //Write random number +String random =Drawrandomnum ((graphics2d) g); - //the existence of random Chinese characters in the session $Request.getsession (). SetAttribute ("Checkcode", random); $ //writing a graphic to a browser -Response.setcontenttype ("Image/jpeg"); - //Header control Browser do not cache theResponse.setdateheader ("Expries", 1); -Response.setheader ("Cache-control", "No-cache");WuyiResponse.setheader ("Pragma", "No-cache"); the //write a picture to a browser -Imageio.write (BI, "JPG", Response.getoutputstream ()); Wu } - /** About * Set Background color $ * - * @paramg - */ - Private voidSetBackground (Graphics g) { A //Set Color + G.setcolor (color.white); the //Fill Area -G.fillrect (0, 0, WIDTH, HEIGHT); $ } the /** the * Set Border the * the * @paramg - */ in Private voidSetBorder (Graphics g) { the //Set Border color the G.setcolor (color.blue); About //border Area theG.drawrect (1, 1, WIDTH-2, HEIGHT-2); the } the /** + * Draw Random lines - * the * @paramgBayi */ the Private voidDrawrandomline (Graphics g) { the //Set Color - G.setcolor (color.green); - //set the number of lines and draw lines the for(inti = 0; I < 5; i++) { the intX1 =NewRandom (). Nextint (WIDTH); the intY1 =NewRandom (). Nextint (HEIGHT); the intx2 =NewRandom (). Nextint (WIDTH); - inty2 =NewRandom (). Nextint (HEIGHT); the g.drawline (x1, y1, x2, y2); the } the }94 /** the * Draw random characters the * the * @paramg98 * @return About */ - PrivateString Drawrandomnum (graphics2d g) {101StringBuffer SB =NewStringBuffer ();102 //Set Color103 G.setcolor (color.red);104 //Set Font theG.setfont (NewFont ("Arial", Font.Bold, 20));106 //prepare common Chinese character sets107 String base = "\u7684\u4e00\u4e86\u662f\u6211\u4e0d\u5728\u4eba\u4eec\u6709\u6765\u4ed6\u8fd9\u4e0a\u7740\u4e2a\u 5730\u5230\u5927\u91cc\u8bf4\u5c31\u53bb\u5b50\u5f97\u4e5f\u548c\u90a3\u8981\u4e0b\u770b\u5929\u65f6\u8fc7\ U51fa\u5c0f\u4e48\u8d77\u4f60\u90fd\u628a\u597d\u8fd8\u591a\u6ca1\u4e3a\u53c8\u53ef\u5bb6\u5b66\u53ea\u4ee5\ U4e3b\u4f1a\u6837\u5e74\u60f3\u751f\u540c\u8001\u4e2d\u5341\u4ece\u81ea\u9762\u524d\u5934\u9053\u5b83\u540e\ U7136\u8d70\u5f88\u50cf\u89c1\u4e24\u7528\u5979\u56fd\u52a8\u8fdb\u6210\u56de\u4ec0\u8fb9\u4f5c\u5bf9\u5f00\ U800c\u5df1\u4e9b\u73b0\u5c71\u6c11\u5019\u7ecf\u53d1\u5de5\u5411\u4e8b\u547d\u7ed9\u957f\u6c34\u51e0\u4e49\ U4e09\u58f0\u4e8e\u9ad8\u624b\u77e5\u7406\u773c\u5fd7\u70b9\u5fc3\u6218\u4e8c\u95ee\u4f46\u8eab\u65b9\u5b9e\ U5403\u505a\u53eb\u5f53\u4f4f\u542c\u9769\u6253\u5462\u771f\u5168\u624d\u56db\u5df2\u6240\u654c\u4e4b\u6700\ U5149\u4ea7\u60c5\u8def\u5206\u603b\u6761\u767d\u8bdd\u4e1c\u5e2d\u6b21\u4eb2\u5982\u88ab\u82b1\u53e3\u653e\ u513f\u5e38\u6c14\u4e94\u7b2c\u4f7f\u5199\u519b\u5427\u6587\u8fd0\u518d\u679c\u600e\u5b9a\u8bb8\u5feb\u660e\u884c\u56e0\u522b \u98de\u5916\u6811\u7269\u6d3b\u90e8\u95e8\u65e0\u5f80\u8239\u671b\u65b0\u5e26\u961f\u5148\u529b\u5b8c\u5374\ u7ad9\u4ee3\u5458\u673a\u66f4\u4e5d\u60a8\u6bcf\u98ce\u7ea7\u8ddf\u7b11\u554a\u5b69\u4e07\u5c11\u76f4\u610f\ U591c\u6bd4\u9636\u8fde\u8f66\u91cd\u4fbf\u6597\u9a6c\u54ea\u5316\u592a\u6307\u53d8\u793e\u4f3c\u58eb\u8005\ U5e72\u77f3\u6ee1\u65e5\u51b3\u767e\u539f\u62ff\u7fa4\u7a76\u5404\u516d\u672c\u601d\u89e3\u7acb\u6cb3\u6751\ U516b\u96be\u65e9\u8bba\u5417\u6839\u5171\u8ba9\u76f8\u7814\u4eca\u5176\u4e66\u5750\u63a5\u5e94\u5173\u4fe1\ U89c9\u6b65\u53cd\u5904\u8bb0\u5c06\u5343\u627e\u4e89\u9886\u6216\u5e08\u7ed3\u5757\u8dd1\u8c01\u8349\u8d8a\ U5b57\u52a0\u811a\u7d27\u7231\u7b49\u4e60\u9635\u6015\u6708\u9752\u534a\u706b\u6cd5\u9898\u5efa\u8d76\u4f4d\ U5531\u6d77\u4e03\u5973\u4efb\u4ef6\u611f\u51c6\u5f20\u56e2\u5c4b\u79bb\u8272\u8138\u7247\u79d1\u5012\u775b\ U5229\u4e16\u521a\u4e14\u7531\u9001\u5207\u661f\u5bfc\u665a\u8868\u591f\u6574\u8ba4\u54cd\u96ea\u6d41\u672a\u573a\u8be5\u5e76\u5e95\ U6df1\u523b\u5e73\u4f1f\u5fd9\u63d0\u786e\u8fd1\u4eae\u8f7b\u8bb2\u519c\u53e4\u9ed1\u544a\u754c\u62c9\u540d\ U5440\u571f\u6e05\u9633\u7167\u529e\u53f2\u6539\u5386\u8f6c\u753b\u9020\u5634\u6b64\u6cbb\u5317\u5fc5\u670d\ U96e8\u7a7f\u5185\u8bc6\u9a8c\u4f20\u4e1a\u83dc\u722c\u7761\u5174\u5f62\u91cf\u54b1\u89c2\u82e6\u4f53\u4f17\ u901a\u51b2\u5408\u7834\u53cb\u5ea6\u672f\u996d\u516c\u65c1\u623f\u6781\u5357\u67aa\u8bfb\u6c99\u5c81\u7ebf\ U91ce\u575a\u7a7a\u6536\u7b97\u81f3\u653f\u57ce\u52b3\u843d\u94b1\u7279\u56f4\u5f1f\u80dc\u6559\u70ed\u5c55\ U5305\u6b4c\u7c7b\u6e10\u5f3a\u6570\u4e61\u547c\u6027\u97f3\u7b54\u54e5\u9645\u65e7\u795e\u5ea7\u7ae0\u5e2e\ U5566\u53d7\u7cfb\u4ee4\u8df3\u975e\u4f55\u725b\u53d6\u5165\u5cb8\u6562\u6389\u5ffd\u79cd\u88c5\u9876\u6025\ U6797\u505c\u606f\u53e5\u533a\u8863\u822c\u62a5\u53f6\u538b\u6162\u53d4\u80cc\u7ec6 ";108 intx = 5;109 //Control Word Count the for(inti = 0; I < 4; i++) {111 //Set font rotation angle the intdegree =NewRandom (). Nextint ()% 30;113 //interception of Chinese characters theString ch = base.charat (NewRandom (). Nextint (Base.length ())) + ""; the sb.append (CH); the //Forward Angle117G.rotate (Degree * math.pi/180, X, 20);118g.DrawString (CH, x, 20);119 //Reverse Angle -G.rotate (-degree * math.pi/180, X, 20);121x + = 30;122 }123 returnsb.tostring ();124 } the}
Java Chinese character Verification code Source:
- Chinese character verification code. rar
Java Verification Code-Chinese character Verification code