1。序文
検証コードは、私たちの生活の中で非常に一般的であると言えます。 Webサイトやアプリにはこの機能がありますが、なぜこれが必要なのですか?それをする方法は?以下では、編集者は全員がJavaを使用して検証コードの機能を完了するように導きます。
2。検証コードの関数
一般に、人々がロボットを使用してバッチに自動的に登録し、特定のプログラムを使用してブルートフォースクラッキング方法を使用して特定の登録ユーザーに継続的にログインすることを防ぐことができます。検証コードは数字とシンボルを混ぜる写真であるため、人間の目が認識するのは難しいように見え、マシンが認識することはさらに困難です。
3。Javaの実装
3.1検証コードのサーブレットクラスを確立します。
パッケージcom.bjpowernode.drp.util.servlet; import java.awt.color; import java.awt.font; import java.awt.graphics; import java.awt.image.bufferedimage; Import java.io.ioexception; Import java.util.util.util.imageio; javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.htttpservletrequest; import javax.servlet.http.httpservletResponse; Import javax.http.httpssissions; ares * */public class authimageはhttpservletを拡張します{private static final string content_type = "text/html; charset = gb2312"; //文字のサイズを設定し、サイズのプライベートフォントmfont = new Font( "Times New Roman"、font.plain、17); public void init()throws servletexception {super.init(); } color getRandColor(int fc、int bc){random random = new Random(); if(fc> 255)fc = 255; if(bc> 255)bc = 255; int r = fc+random.nextint(bc-fc); int g = fc+random.nextint(bc-fc); int b = fc+random.nextint(bc-fc); int b = fc+random.nextint(bc-fc);新しい色(r、g、b)を返します。 } public void service(httpservletrequest request、httpservletResponse応答)servletexception、ioexception {respons.setheader( "pragma"、 "no-cache"); Response.setheader( "Cache-Control"、 "no-cache"); Response.setDateHeader( "Expires"、0); //生成された応答が画像Response.setContentType( "Image/jpeg")であることを示します。 int width = 100、height = 18; bufferedimage image = new BufferedImage(幅、高さ、bufferedimage.type_int_rgb);グラフィックg = image.getGraphics(); RANDOM RANDOM = new Random(); G.SetColor(GetRandColor(200,250)); g.fillrect(1、1、width-1、height-1); G.SetColor(新しい色(102,102,102)); G.drawrect(0、0、width-1、height-1); g.setfont(mfont); G.SetColor(GetRandColor(160,200)); //(int i = 0; i <155; i ++){int x = random.nextint(width -1);のランダム行を描画します。 int y = random.nextint(height -1); int xl = random.nextint(6) + 1; int yl = random.nextint(12) + 1; G.drawline(x、y、x + xl、y + yl); } //(int i = 0; i <70; i ++){int x = random.nextint(width -1); int y = random.nextint(height -1); int xl = random.nextint(12) + 1; int yl = random.nextint(6) + 1; G.drawline(x、y、x -xl、y -yl); } //乱数を生成し、乱数を文字列srand = ""に変換します。 for(int i = 0; i <6; i ++){int itmp = random.nextint(26)+65; char ctmp =(char)itmp; srand += string.valueof(ctmp); g.setColor(新しい色(20+random.nextint(110)、20+random.nextint(110)、20+random.nextint(110))); G.DrawString(String.ValueOf(CTMP)、15*I+10,16); } httpsession session = request.getSession(true); session.setattribute( "rand"、srand); g.dispose(); Imageio.write(image、 "jpeg"、Response.getOutputStream()); } public void Destroy(){}}3.2 web-infファイルの下のweb.xmlでサーブレットの構成
//サーブレット名と場所<Servlet> <Servlet-Name> authimage </servlet-name> <servlet-class> com.bjpowernode.drp.util.servlet.authimage </servlet-class> </servlet> //サーブレットは、それらのマッピング<サーブレットマッピング> <サーブレット - マッピング> </servlet-name> <url-pattern>/servlet/login/authimage </url-pattern> </servlet-mapping>
3.3フロントデスクはサーブレットを呼び出します
JSPコード:
<img id = "img" style = "cursor:pointer;" src = "$ {pagecontext.request.contextpath}/servlet/login/authimage" onclick = "changeimg()">JS:
//検証コードをクリックして画像関数changeimg(){var img = document.getElementById( "img"); img.src = "$ {pagecontext.request.contextpath}/servlet/login/authimage?d ="+math.random(); falseを返します;}4。概要
この検証コードの学習を通じて、サーブレット全体とフロントエンドコードの間の相互作用についても特定の理解を得ており、データの伝送も大幅に改善されています。したがって、私はまだこれらのスキルについてさらに学び、将来それらを要約する必要があります。この方法でのみ、知識はしっかりしています。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。