package Ġcom . li ud ong Ċ Ċ import Ġjava . awt . Color Ċ import Ġjava . awt . Font Ċ import Ġjava . awt . Graphics Ċ import Ġjava . awt . Graphics 2 D Ċ import Ġjava . awt . Window Ċ import Ġjava . awt . image . Buffered Image Ċ import Ġjavax . image io . Image IO Ċ import Ġjavax . servlet . annotation . Web Servlet Ċ import Ġjavax . servlet . http . HttpServlet Ċ import Ġjavax . servlet . http . HttpServletRequest Ċ import Ġjavax . servlet . http . HttpServletResponse Ċ import Ġkotlin . random . Random Ċ Ċ /** Ċ Ġ* Ġ@ description ĠçĶŁæĪĲ åĽ¾çīĩ éªĮè¯ģçłģ Ċ Ġ* Ċ Ġ* Ġ@ author Ġli ud ong Ġ( li ud ong @ rd . net ease . com ) Ċ Ġ* Ġ@ date Ġ 2 0 2 0 / 8 / 2 9 Ġ 8 : 3 5 Ġä¸Ĭ åįĪ Ċ Ġ*/ Ċ @ Web Servlet ("/ verify code ") Ċ class ĠVerify Code Servlet Ġ: ĠHttpServlet () Ġ{ ĊĊĠĠĠ Ġval ĠWIDTH Ġ= Ġ 1 5 0 ĊĠĠĠ Ġval ĠHEIGHT Ġ= Ġ 3 0 ĊĊĊĠĠĠ Ġoverride Ġfun Ġdo Post ( request : ĠHttpServletRequest , Ġresponse : ĠHttpServletResponse ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġtype Ġ= Ġrequest . getParameter (" create Type Flag ") Ġ?: Ġ" nl " ĊĠĠĠĠĠĠĠ Ġvar Ġparameter Ġ= Ġrequest . getParameter (" id ") ĊĠĠĠĠĠĠĠ Ġif Ġ( parameter . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . send Error ( HttpServletResponse . SC _ BAD _ REQUEST ," ç¡® å°ĳ id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġbi Ġ= ĠBufferedImage ( WIDTH , ĠHEIGHT , ĠBufferedImage . TYPE _ INT _ RGB ) ĊĠĠĠĠĠĠĠ Ġval Ġgraphics Ġ= Ġbi . graphics ĊĠĠĠĠĠĠĠ Ġgraphics . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfill Rect ( 0 , Ġ 0 , ĠWIDTH , ĠHEIGHT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . BLUE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Rect ( 1 , Ġ 1 , ĠWIDTH Ġ- Ġ 2 , ĠHEIGHT Ġ- Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . GREEN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRandom . Default . nextInt ( WIDTH ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRandom . Default . nextInt ( HEIGHT ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRandom . Default . nextInt ( WIDTH ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRandom . Default . nextInt ( HEIGHT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġrandom Number Ġ= Ġdraw Random Number ( graphics Ġas ĠGraphics 2 D , ĠlistOf ( type )) ĊĠĠĠĠĠĠĠ Ġrequest . session . setAttribute ( parameter , random Number ) ĊĠĠĠĠĠĠĠ Ġresponse . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcontentType Ġ= Ġ" image / jpeg " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Date Header (" ex pri es ", - 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Header (" Pr agma "," no - cache ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage IO . write ( bi ," jpg ", response . output Stream ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Random Number ( graphics : ĠGraphics 2 D , Ġtypes : ĠList < String >): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( types . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġgraphics . color Ġ= ĠColor . RED ĊĠĠĠĠĠĠĠ Ġgraphics . font Ġ= ĠFont (" å® ĭ ä½ĵ ", ĠFont . BOLD , Ġ 2 0 ) ĊĠĠĠĠĠĠĠ Ġ// å¸¸ çĶ¨çļĦ ä¸ŃåĽ½ æ±ī åŃĹ ĊĠĠĠĠĠĠĠ Ġval Ġbase Chinese Char Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ u 7 6 8 4 \ u 4 e 0 0 \ u 4 e 8 6 \ u 6 6 2 f \ u 6 2 1 1 \ u 4 e 0 d \ u 5 7 2 8 \ u 4 eba \ u 4 eec \ u 6 7 0 9 \ u 6 7 6 5 \ u 4 ed 6 \ u 8 fd 9 \ u 4 e 0 a \ u 7 7 4 0 \ u 4 e 2 a \ u 5 7 3 0 \ u 5 2 3 0 \ u 5 9 2 7 \ u 9 1 cc \ u 8 bf 4 \ u 5 c 3 1 \ u 5 3 bb \ u 5 b 5 0 \ u 5 f 9 7 \ u 4 e 5 f \ u 5 4 8 c \ u 9 0 a 3 \ u 8 9 8 1 \ u 4 e 0 b \ u 7 7 0 b \ u 5 9 2 9 \ u 6 5 f 6 \ u 8 fc 7 \ u 5 1 fa \ u 5 c 0 f \ u 4 e 4 8 \ u 8 d 7 7 \ u 4 f 6 0 \ u 9 0 fd \ u 6 2 8 a \ u 5 9 7 d \ u 8 fd 8 \ u 5 9 1 a \ u 6 ca 1 \ u 4 e 3 a \ u 5 3 c 8 \ u 5 3 ef \ u 5 bb 6 \ u 5 b 6 6 \ u 5 3 ea \ u 4 ee 5 \ u 4 e 3 b \ u 4 f 1 a \ u 6 8 3 7 \ u 5 e 7 4 \ u 6 0 f 3 \ u 7 5 1 f \ u 5 4 0 c \ u 8 0 0 1 \ u 4 e 2 d \ u 5 3 4 1 \ u 4 ece \ u 8 1 ea \ u 9 7 6 2 \ u 5 2 4 d \ u 5 9 3 4 \ u 9 0 5 3 \ u 5 b 8 3 \ u 5 4 0 e \ u 7 1 3 6 \ u 8 d 7 0 \ u 5 f 8 8 \ u 5 0 cf \ u 8 9 c 1 \ u 4 e 2 4 \ u 7 5 2 8 \ u 5 9 7 9 \ u 5 6 fd \ u 5 2 a 8 \ u 8 fdb \ u 6 2 1 0 \ u 5 6 de \ u 4 ec 0 \ u 8 fb 9 \ u 4 f 5 c \ u 5 bf 9 \ u 5 f 0 0 \ u 8 0 0 c \ u 5 df 1 \ u 4 e 9 b \ u 7 3 b 0 \ u 5 c 7 1 \ u 6 c 1 1 \ u 5 0 1 9 \ u 7 ecf \ u 5 3 d 1 \ u 5 de 5 \ u 5 4 1 1 \ u 4 e 8 b \ u 5 4 7 d \ u 7 ed 9 \ u 9 5 7 f \ u 6 c 3 4 \ u 5 1 e 0 \ u 4 e 4 9 \ u 4 e 0 9 \ u 5 8 f 0 \ u 4 e 8 e \ u 9 ad 8 \ u 6 2 4 b \ u 7 7 e 5 \ u 7 4 0 6 \ u 7 7 3 c \ u 5 fd 7 \ u 7 0 b 9 \ u 5 fc 3 \ u 6 2 1 8 \ u 4 e 8 c \ u 9 5 ee \ u 4 f 4 6 \ u 8 eab \ u 6 5 b 9 \ u 5 b 9 e \ u 5 4 0 3 \ u 5 0 5 a \ u 5 3 eb \ u 5 f 5 3 \ u 4 f 4 f \ u 5 4 2 c \ u 9 7 6 9 \ u 6 2 5 3 \ u 5 4 6 2 \ u 7 7 1 f \ u 5 1 6 8 \ u 6 2 4 d \ u 5 6 db \ u 5 df 2 \ u 6 2 4 0 \ u 6 5 4 c \ u 4 e 4 b \ u 6 7 0 0 \ u 5 1 4 9 \ u 4 ea 7 \ u 6 0 c 5 \ u 8 def \ u 5 2 0 6 \ u 6 0 3 b \ u 6 7 6 1 \ u 7 6 7 d \ u 8 bdd \ u 4 e 1 c \ u 5 e 2 d \ u 6 b 2 1 \ u 4 eb 2 \ u 5 9 8 2 \ u 8 8 ab \ u 8 2 b 1 \ u 5 3 e 3 \ u 6 5 3 e \ u 5 1 3 f \ u 5 e 3 8 \ u 6 c 1 4 \ u 4 e 9 4 \ u 7 b 2 c \ u 4 f 7 f \ u 5 1 9 9 \ u 5 1 9 b \ u 5 4 2 7 \ u 6 5 8 7 \ u 8 fd 0 \ u 5 1 8 d \ u 6 7 9 c \ u 6 0 0 e \ u 5 b 9 a \ u 8 bb 8 \ u 5 feb \ u 6 6 0 e \ u 8 8 4 c \ u 5 6 e 0 \ u 5 2 2 b \ u 9 8 de \ u 5 9 1 6 \ u 6 8 1 1 \ u 7 2 6 9 \ u 6 d 3 b \ u 9 0 e 8 \ u 9 5 e 8 \ u 6 5 e 0 \ u 5 f 8 0 \ u 8 2 3 9 \ u 6 7 1 b \ u 6 5 b 0 \ u 5 e 2 6 \ u 9 6 1 f \ u 5 1 4 8 \ u 5 2 9 b \ u 5 b 8 c \ u 5 3 7 4 \ u 7 ad 9 \ u 4 ee 3 \ u 5 4 5 8 \ u 6 7 3 a \ u 6 6 f 4 \ u 4 e 5 d \ u 6 0 a 8 \ u 6 bcf \ u 9 8 ce \ u 7 ea 7 \ u 8 ddf \ u 7 b 1 1 \ u 5 5 4 a \ u 5 b 6 9 \ u 4 e 0 7 \ u 5 c 1 1 \ u 7 6 f 4 \ u 6 1 0 f \ u 5 9 1 c \ u 6 bd 4 \ u 9 6 3 6 \ u 8 fde \ u 8 f 6 6 \ u 9 1 cd \ u 4 fbf \ u 6 5 9 7 \ u 9 a 6 c \ u 5 4 ea \ u 5 3 1 6 \ u 5 9 2 a \ u 6 3 0 7 \ u 5 3 d 8 \ u 7 9 3 e \ u 4 f 3 c \ u 5 8 eb \ u 8 0 0 5 \ u 5 e 7 2 \ u 7 7 f 3 \ u 6 ee 1 \ u 6 5 e 5 \ u 5 1 b 3 \ u 7 6 7 e \ u 5 3 9 f \ u 6 2 ff \ u 7 fa 4 \ u 7 a 7 6 \ u 5 4 0 4 \ u 5 1 6 d \ u 6 7 2 c \ u 6 0 1 d \ u 8 9 e 3 \ u 7 acb \ u 6 cb 3 \ u 6 7 5 1 \ u 5 1 6 b \ u 9 6 be \ u 6 5 e 9 \ u 8 bba \ u 5 4 1 7 \ u 6 8 3 9 \ u 5 1 7 1 \ u 8 ba 9 \ u 7 6 f 8 \ u 7 8 1 4 \ u 4 eca \ u 5 1 7 6 \ u 4 e 6 6 \ u 5 7 5 0 \ u 6 3 a 5 \ u 5 e 9 4 \ u 5 1 7 3 \ u 4 fe 1 \ u 8 9 c 9 \ u 6 b 6 5 \ u 5 3 cd \ u 5 9 0 4 \ u 8 bb 0 \ u 5 c 0 6 \ u 5 3 4 3 \ u 6 2 7 e \ u 4 e 8 9 \ u 9 8 8 6 \ u 6 2 1 6 \ u 5 e 0 8 \ u 7 ed 3 \ u 5 7 5 7 \ u 8 dd 1 \ u 8 c 0 1 \ u 8 3 4 9 \ u 8 d 8 a \ u 5 b 5 7 \ u 5 2 a 0 \ u 8 1 1 a \ u 7 d 2 7 \ u 7 2 3 1 \ u 7 b 4 9 \ u 4 e 6 0 \ u 9 6 3 5 \ u 6 0 1 5 \ u 6 7 0 8 \ u 9 7 5 2 \ u 5 3 4 a \ u 7 0 6 b \ u 6 cd 5 \ u 9 8 9 8 \ u 5 efa \ u 8 d 7 6 \ u 4 f 4 d \ u 5 5 3 1 \ u 6 d 7 7 \ u 4 e 0 3 \ u 5 9 7 3 \ u 4 efb \ u 4 ef 6 \ u 6 1 1 f \ u 5 1 c 6 \ u 5 f 2 0 \ u 5 6 e 2 \ u 5 c 4 b \ u 7 9 bb \ u 8 2 7 2 \ u 8 1 3 8 \ u 7 2 4 7 \ u 7 9 d 1 \ u 5 0 1 2 \ u 7 7 5 b \ u 5 2 2 9 \ u 4 e 1 6 \ u 5 2 1 a \ u 4 e 1 4 \ u 7 5 3 1 \ u 9 0 0 1 \ u 5 2 0 7 \ u 6 6 1 f \ u 5 bfc \ u 6 6 5 a \ u 8 8 6 8 \ u 5 9 1 f \ u 6 5 7 4 \ u 8 ba 4 \ u 5 4 cd \ u 9 6 ea \ u 6 d 4 1 \ u 6 7 2 a \ u 5 7 3 a \ u 8 be 5 \ u 5 e 7 6 \ u 5 e 9 5 \ u 6 df 1 \ u 5 2 3 b \ u 5 e 7 3 \ u 4 f 1 f \ u 5 fd 9 \ u 6 3 d 0 \ u 7 8 6 e \ u 8 fd 1 \ u 4 eae \ u 8 f 7 b \ u 8 bb 2 \ u 5 1 9 c \ u 5 3 e 4 \ u 9 ed 1 \ u 5 4 4 a \ u 7 5 4 c \ u 6 2 c 9 \ u 5 4 0 d \ u 5 4 4 0 \ u 5 7 1 f \ u 6 e 0 5 \ u 9 6 3 3 \ u 7 1 6 7 \ u 5 2 9 e \ u 5 3 f 2 \ u 6 5 3 9 \ u 5 3 8 6 \ u 8 f 6 c \ u 7 5 3 b \ u 9 0 2 0 \ u 5 6 3 4 \ u 6 b 6 4 \ u 6 cbb \ u 5 3 1 7 \ u 5 fc 5 \ u 6 7 0 d \ u 9 6 e 8 \ u 7 a 7 f \ u 5 1 8 5 \ u 8 bc 6 \ u 9 a 8 c \ u 4 f 2 0 \ u 4 e 1 a \ u 8 3 dc \ u 7 2 2 c \ u 7 7 6 1 \ u 5 1 7 4 \ u 5 f 6 2 \ u 9 1 cf \ u 5 4 b 1 \ u 8 9 c 2 \ u 8 2 e 6 \ u 4 f 5 3 \ u 4 f 1 7 \ u 9 0 1 a \ u 5 1 b 2 \ u 5 4 0 8 \ u 7 8 3 4 \ u 5 3 cb \ u 5 ea 6 \ u 6 7 2 f \ u 9 9 6 d \ u 5 1 6 c \ u 6 5 c 1 \ u 6 2 3 f \ u 6 7 8 1 \ u 5 3 5 7 \ u 6 7 aa \ u 8 bfb \ u 6 c 9 9 \ u 5 c 8 1 \ u 7 ebf \ u 9 1 ce \ u 5 7 5 a \ u 7 a 7 a \ u 6 5 3 6 \ u 7 b 9 7 \ u 8 1 f 3 \ u 6 5 3 f \ u 5 7 ce \ u 5 2 b 3 \ u 8 4 3 d \ u 9 4 b 1 \ u 7 2 7 9 \ u 5 6 f 4 \ u 5 f 1 f \ u 8 0 dc \ u 6 5 5 9 \ u 7 0 ed \ u 5 c 5 5 \ u 5 3 0 5 \ u 6 b 4 c \ u 7 c 7 b \ u 6 e 1 0 \ u 5 f 3 a \ u 6 5 7 0 \ u 4 e 6 1 \ u 5 4 7 c \ u 6 0 2 7 \ u 9 7 f 3 \ u 7 b 5 4 \ u 5 4 e 5 \ u 9 6 4 5 \ u 6 5 e 7 \ u 7 9 5 e \ u 5 ea 7 \ u 7 ae 0 \ u 5 e 2 e \ u 5 5 6 6 \ u 5 3 d 7 \ u 7 cfb \ u 4 ee 4 \ u 8 df 3 \ u 9 7 5 e \ u 4 f 5 5 \ u 7 2 5 b \ u 5 3 d 6 \ u 5 1 6 5 \ u 5 cb 8 \ u 6 5 6 2 \ u 6 3 8 9 \ u 5 ffd \ u 7 9 cd \ u 8 8 c 5 \ u 9 8 7 6 \ u 6 0 2 5 \ u 6 7 9 7 \ u 5 0 5 c \ u 6 0 6 f \ u 5 3 e 5 \ u 5 3 3 a \ u 8 8 6 3 \ u 8 2 2 c \ u 6 2 a 5 \ u 5 3 f 6 \ u 5 3 8 b \ u 6 1 6 2 \ u 5 3 d 4 \ u 8 0 cc \ u 7 ec 6 "; ĊĠĠĠĠĠĠĠ Ġ// æķ°åŃĹ åĴĮ åŃĹ æ¯į çļĦ ç»ĦåĲĪ ĊĠĠĠĠĠĠĠ Ġval Ġbase Num Letter Ġ= Ġ" 0 1 2 3 4 5 6 7 8 9 ABCDEF GH J KL MN OP Q RST UV W XYZ "; ĊĠĠĠĠĠĠĠ Ġ// çº ¯ æķ°åŃĹ ĊĠĠĠĠĠĠĠ Ġval Ġbase Num Ġ= Ġ" 0 1 2 3 4 5 6 7 8 9 "; ĊĠĠĠĠĠĠĠ Ġ// çº ¯ åŃĹ æ¯į ĊĠĠĠĠĠĠĠ Ġval Ġbase Letter Ġ= Ġ" ABCDEF GH J KL MN OP Q RST UV W XYZ "; ĊĠĠĠĠĠĠĠ Ġtypes . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ch " Ġ-> Ġreturn Ġcreate Random Char ( graphics , Ġbase Chinese Char ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" nl " Ġ-> Ġreturn Ġcreate Random Char ( graphics , Ġbase Num Letter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" n " Ġ-> Ġreturn Ġcreate Random Char ( graphics , Ġbase Num ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" l " Ġ-> Ġreturn Ġcreate Random Char ( graphics , Ġbase Letter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Random Char ( graphics , Ġbase Num Letter ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ 1 4 3 ĠĠĠĠĠ Ġ* ĠåĪĽå»º éļıæľº åŃĹç¬¦ ĊĠĠĠĠ 1 4 4 ĠĠĠĠĠ Ġ* Ġ@ param Ġg ĊĠĠĠĠ 1 4 5 ĠĠĠĠĠ Ġ* Ġ@ param Ġbase Char ĊĠĠĠĠ 1 4 6 ĠĠĠĠĠ Ġ* Ġ@ return Ġ éļıæľº åŃĹç¬¦ ĊĠĠĠĠ 1 4 7 ĠĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcreate Random Char ( g : ĠGraphics 2 D , Ġbase Char : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuffer (); ĊĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġvar Ġch Ġ= Ġ""; ĊĠĠĠĠĠĠĠ Ġ// Ġ æİ§åĪ¶ åŃĹ æķ° ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® åŃĹ ä½ĵ æĹ ĭ è½¬ è§Ĵ åº¦ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdegree Ġ= ĠRandom . Default . nextInt () Ġ% Ġ 3 0 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġch Ġ= Ġbase Char [( Random . nextInt ( base Char . count ())) ] Ġ+ Ġ""; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( ch ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æŃ£ åĲĳ è§Ĵ åº¦ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg . rotate ( degree Ġ* ĠMath . PI Ġ/ Ġ 1 8 0 , Ġx . toDouble (), Ġ 2 0 . toDouble ()); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg . draw String ( ch , Ġx , Ġ 2 0 ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åıį åĲĳ è§Ĵ åº¦ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg . rotate (- degree Ġ* ĠMath . PI Ġ/ Ġ 1 8 0 , Ġx . toDouble (), Ġ 2 0 . toDouble ()); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġ 3 0 ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsb . toString (); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo Get ( req : ĠHttpServletRequest , Ġresp : ĠHttpServletResponse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Post ( req , Ġresp ) ĊĊ Ċ // ĠĠĠĠĠĠĠ Ġresp . setHeader (" refresh ", Ġ" 5 ") Ċ // ĠĠĠĠĠĠĠ Ġval Ġimage Ġ= ĠBufferedImage ( 8 0 , Ġ 2 0 , ĠBufferedImage . TYPE _ INT _ RGB ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġgraphics Ġ= Ġimage . graphics Ġas ĠGraphics 2 D Ċ // ĠĠĠĠĠĠĠ Ġgraphics . run Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . WHITE Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġfill Rect ( 0 , Ġ 0 , Ġ 8 0 , Ġ 2 0 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . BLUE Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġfont Ġ= ĠFont ( null , ĠFont . BOLD , Ġ 2 0 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġdraw String ( make Num (), Ġ 0 , Ġ 2 0 ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġresp . run Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠcontentType Ġ= Ġ" image / jpeg " Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġset Date Header (" ex pri es ", - 1 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġset Header (" Cache - Control "," no - cache ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġset Header (" Pr agma "," no - cache ") Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ ĠImage IO . write ( image ," jpg ", resp . output Stream ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmake Num (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġrandom Ġ= ĠRandom . Default . nextInt ( 9 9 9 9 9 9 9 ). toString () ĊĠĠĠĠĠĠĠ Ġval Ġprefix Ġ= ĠStringBuffer () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġ( 7 Ġ- Ġrandom . length )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefix . append (" 0 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġprefix . toString () Ġ+ Ġrandom ĊĠĠĠ Ġ} ĊĊ Ċ }