この記事では、参照用のJava実装ログイン検証コードの特定のコードを共有しています。特定のコンテンツは次のとおりです
1。validatecode.java
import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.IOException;import java.io.OutputStream;import java.util.Random;import javax.imageio.ImageIO;import javax.servlet.ServletException;import org.springframework.stereotype.service;/***ログイン検証コード**/public class validAtecode {/***検証コード画像を取得* @param out* @param out* @throws servletexception* @throws ioexception*/public void getimage(outputstrere out)空白の画像を作成するbufferedimage image = new BufferedImage(100,30、bufferedimage.type_int_rgb); // 1。画像ブラシグラフィックスG = image.getGraphics()を取得します。ランダムr = new Random(); // 2。ランダムクラスのブラシカラー(nextInt(n)は、nよりも等以上のランダム数をnよりも小さいランダム数を返します)g.setcolor(r.nextint(255)、r.nextint(255)、r.nextint(255))); // 3。長方形g.fillrect(0、0、100、30)の背景を描画します。 // 4。カスタムメソッドを呼び出して、長さ4 gの英数字の組み合わせの文字列を取得します。 g.setFont(new Font(null、font.bold、24)); // 5。色フォントを設定した後、文字列(x/y、左端の文字の位置)を描画します。 // 6。 (int i = 0; i <8; i ++){g.setcolor(new Color(R.Nextint(255)、R.Nextint(255)、R.Nextint(255)、R.Nextint(255)))の8つの干渉線(透明性)を描画します。 G.Drawline(R.Nextint(100)、R.Nextint(30)、R.Nextint(100)、R.Nextint(30)); } imageio.write(image、 "jpeg"、out); } //長さのサイズの英数字の組み合わせの文字列を取得するカスタムメソッドpublic string getNumber(int size){string str = "abcdefghijklmnopqrstuvwxyz0123456789";文字列番号= "";ランダムr = new Random(); for(int i = 0; i <size; i ++){number+= str.charat(r.nextint(str.length()); } return number; }}2。コントローラー
@RequestMapping(value = "/check"、method= {requestmethod.get})@responsebody public void check(httpservletrequest req){try {httpservletResponse response = this.getResponse(); Response.setContentType( "Application/Octet-Stream"); Response.Addheader( "Content-Disposition"、 "Attachment; filename =" + "vcode.jpeg");文字列番号= validAtecode.getNumber(4); validAtecode.getImage(respons.getOutputStream()、number); } catch(例外e){}}3。HTML
<img src = "http://127.0.0.1:8080/test/check">
複製図
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。