検証コードの起源
Webプロジェクト開発では、一部の人々が自動ツール(自動登録マシンなど)を使用してバッチデータを処理するのを防ぐために、さまざまな機能ノードで検証するために検証コードが追加され、自動ソフトウェアのブロックの効果を実現する
最も古典的なアプリケーションは次のとおりです。ウェブサイト登録グラフィック検証コード。次に、Servletと組み合わせたJava Technologyを通じて、参照のためにWebサイト登録に必要なグラフィック検証コードプログラムが実装されます。
2。登録ページのグラフィック検証コード効果を実装する
1. Webプロジェクトの作成:java_servlet_verifyimg
2。グラフ検証コードを自動的に生成するコントローラーを作成-VeriyimgServlet
パッケージcom.phome.util; import java.awt.color; import java.awt.font; import java.awt.graphics2d; import java.awt.image.bufferedimage; import java.io.ioexception; Import Java.util.random; Import.Javax.Servletelet.Servleteletexception; javax.servlet.servletoutputStream; Import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import.servlet.http.httpservletresponse; Import com.sun.sun.codec.codec.jpeg.jpegcecceced com.sun.image.codec.jpeg.jpegimageEncoder; public class verifyimgservletはhttpservlet { / ** * * * / private static final long serialversionuid = 1l; //ランダムな文字辞書を設定します。 0、o、1、iなど's'、 't'、 'u' '、' v '、' w '、' x '、' y '、' z '' '' '、' b '、' c '、' d '、' e '、' g '、' h '、' j '' '' '' '' '' '' 'x'、 'y'、 'z'}; public static random = new Random(); //ランダム数オブジェクトpublic static string getRandomString(){stringbuffer buffer = new StringBuffer(); //文字列for(int i = 0; i <6; i ++)// 6つのループを取得するための6つのループ{buffer.append(chars [random.nextint(chars.length)]); //一度に1つの文字をランダムに取得} return buffer.tostring(); } public static color getRandomColor(){return new Color(random.nextint(255)、random.nextint(255)、random.nextint(255)); } public static color getReverseColor(color c){return new Color(255 -c.getRed()、255 -c.getGreen()、255 -c.getblue()); } public static color getReverseColor(color c){return new Color(255 -c.getRed()、255 -c.getGreen()、255 -c.getblue()); } public void doget(httpservletrequest request、httpservletResponse応答)servletexception、ioexception {respons.setContentType( "Image/jpeg"); // string randomstring = getRandomString()を省略しないように出力タイプを設定します。 //ランダムな文字列を生成するメソッドを呼び出して、ランダムな文字列request.getSession(true)を取得して受け入れます。 //セッションに文字列を保存int width = 100; //画像幅int height = 30; //画像の高さの色= getRandomColor(); //背景色のランダムな色を取得する色逆= getReverseColor(color); //フォアグラウンドの色の色素bufferedimage bi = new bufferedimage(幅、高さ、bufferedimage.type_int_rgb); //カラーイメージGraphics2d g = bi.creategraphics()を作成する; //描画オブジェクトを取得しますg.setfont(new Font(font.sans_serif、font.bold、16)); // font g.setcolor(color); //色G.FillRect(0、0、幅、高さ)を設定します。 //背景G.SetColor(逆)を描画します。 // g.drawstringの色を設定します(Randomstring、18、20); //(int i = 0、n = random.nextint(100); i <n; i ++)のランダム文字を描画します。 //ランダムノイズポイント} servletoutputStream out = respons.getOutputStream(); //出力ストリームjpegimageencoder encoder = jpegcodec.createjpegencoder(out)を取得しているようです。 // encoder encoder.encode(bi); //画像をエンコードout.flush(); //クライアントへの出力} public void dopost(httpservletrequest request、httpservletresponse応答)は、servletexception、ioexception {this.doget(request、response); }}3.レジスタコントローラーを作成 - RegistSvellet
パッケージcom.phome.servlet; import java.io.ioexception; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; Import javax.servlet.http.httpservletResponse; javax.servlet.http.httpservletResponse;インポートjavax.servlet.http.httpsession;/** *登録コントローラー * @author zuoyi * * */public class registervletは、httpservlet {/** * * */private station long serialsionuid = 1l; @Override Protected void doget(httpservletrequest req、httpservletresponse rep)servletexception、ioexception {this.dopost(req、rep); } @Override Protected void dopost(httpservletrequest req、httpservletresponse rep)sersexception {//セッションhttpsession session = req.getSession()から登録ランダム検証コードを取得します。文字列randomstring =(string)session.getAttribute( "randomstring"); //ユーザー入力検証コード文字列inputRandomString = req.getParameter( "randomsstr");を取得します。 //検証コードが渡されていることを確認し、登録してください(randomstring.equals(inputrandomstring)){req.setattribute( "resinfo"、 "おめでとうございます!登録が成功しました!"); } else {req.setAttribute( "resinfo"、 "検証コードは誤って入力されます。もう一度確認して登録してください!"); } //登録が成功または失敗した場合は、result.jspページにジャンプして登録結果を表示します。 。 。 req.getRequestDispatcher( "result.jsp")。フォワード(req、rep); }}4.サーブレットを構成します
<?xml version = "1.0" encoding = "utf-8"?> <web-app xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml/nns/javaee xsi:schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/ns/javaee/web-app_0.0.0.xsd" "id" "id" id "id" webaee/wweb-app_0.xsdd <display-name> simg </display-name> <! - ユーザー登録サーブレットを構成 - > <servlet> <servlet-name> registervlet </servlet-name> <servlet-class> com.phome.servlet.registervlet </servlet-class> </servlet> <servlet-name>レジスタブレット</サーブレット - マッピング> <url-pattern>/regist.action </url-pattern> </servlet-mapping> <! - グラフ検証コードサーブレット - > <servlet> <servlet-name> verifeimg </servlet-namg> <servlet-class> com.phome.servlet.veriemgservlet </servlet-> <servlet mapping> <servlet mapping> <Servlet-name> verifiemg </servlet-name> <url-pattern>/verifyimg.action </url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file> index.html </welcome-file> <welcome-file> index.htm </welcome-file> welcome </welcomefile> <welcome-file> default.htm </welcome-file> <welcome-file> default.jsp </welcome-file> </welcome-file-list> </web-app>
5.登録ビューテストページを作成 - regist.jsp
<%@ページ言語= "java" import = "java.util。*" pageencoding = "gb18030"%> <%string path = request.getcontextpath(); string basepath = request.getscheme()+"://"+request.getservername()+":"+requestserverport.+path+" " - // w3c // dtd HTML 4.01 Transitional // En"> <HTML> <head> <head> <base href = "<%= basepath%>" rel = "leats nofollow" rel = "external nofollow"> <title> my jsp 'index.jsp'スタートページhttp-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "content =" 0 "> <meta http-equiv =" keyword1、keyword3 "keyword3"> <meta http-equiv = "content =" type = "text/css" href = "styles.css" rel = "external nofollow" rel = "external nofollow"> - > </head> <body> <form action = "$ {pagecontext.request.contextpath}/regist.action" method "method =" post」 name = "password"/> <br/>確認コードを入力して登録してください:<img src = "$ {pagecontext.request.contextpath}/verifiemg.action"/> <input type = "text" name = "randomst"/> <br/> <inputタイプ= "" submit "" regist "/> </> </film> 5.1登録結果ページを作成-sults.jsp
<%@ページ言語= "java" import = "java.util。*" pageencoding = "gb18030"%> <%string path = request.getcontextpath(); string basepath = request.getscheme()+"://"+request.getservername()+":"+requestserverport.+path+" " - // w3c // dtd HTML 4.01 Transitional // En"> <HTML> <head> <head> <base href = "<%= basepath%>" rel = "leats nofollow" rel = "external nofollow"> <title> my jsp 'index.jsp'スタートページhttp-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "content =" 0 "> <meta http-equiv =" keyword1、keyword3 "keyword3"> <meta http-equiv = "content =" type = "text/css" href = "styles.css" rel = "external nofollow" rel = "external nofollow"> - > </head> <body> $ {requestscope.resinfo} </body> </html> </html>6。テスト
(1)a。ブラウザを開き、テストアドレスを入力してください:http:// localhost:8080/java_servlet_verifimg;以下の図に示すページが表示されます
b。登録アカウント、パスワード、検証コードを入力し、[レジスト]をクリックして送信します
c。テスト結果、転送登録ページにジャンプして、登録が成功するように促します
(2)登録ページを開きます
エラー登録コードを入力します
テスト結果ページ
以上!
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。