ページに表示される二次元コードを呼び出すために、二次元コードのインターフェースを生成する、フロントエンドインターフェース

メイン数字と文字は、二次元コード4が生成されます

我々は有効期限があり、キャッシュに入れた二次元コードを生成します。2次元コードの検証は、コードが正しく入力され、ページコードかのように、キーの値に基づいて、2次元コードの値を取得し、キャッシュ上を通過する必要がある場合。

(値= "/ getImgCode")@RequestMapping 
公共ボイドgetImgCode(HttpServletRequestのリクエスト、HttpServletResponseの応答、@RequestParam(はdefaultValue = "")文字列電話)は例外{スロー

//设置响应的类型格式为图片格式
画像response.setContentTypeを( " / JPEG ");
//禁止图像缓存。
response.setHeader( "プラグマ"、 "キャッシュなし")。
response.setHeader( "のCache-Control"、 "キャッシュなし")。
response.setDateHeader( "有効期限"、0);
HttpSessionのセッション=でrequest.getSession();

ValidateCode vCode =新しいValidateCode(140、50、4、0);
ストリングキー= String.Formatの(KConstants.Key.IMGCODE、telephone.trim())。
。SKBeanUtils.getRedisCRUD()セット(キー、vCode.getCode());


session.setAttribute( "コード"、vCode.getCode())。
// session.setMaxInactiveInterval(10 * 60)。
System.out.println( "getImgCode電話===>" +電話+ "コード" + vCode.getCode())。
vCode.write(response.getOutputStream())。
}

/ ** 
*
* @param広い画像幅
* @param高い像高
の文字* @param codeCount番号
* @param干渉LINECOUNT線の数
* /
パブリックValidateCode(INT幅、int型の高さ、INT codeCount、INTラインカウント){
この。幅=幅;
this.height =高;
this.codeCount = codeCount;
this.lineCount = LINECOUNT;
this.createCode();
}

公共ボイドcreateCode(){
int型X = 0、FontHeight = 0、= 0、codeY;
赤INT 0 =、= 0緑、青= 0、

X =幅/(codeCount); //各文字幅のため
fontHeight =高-4;フォントの//高さ
、codeY =高- 8;

//画像バッファ
buffImg =新しいBufferedImageの(幅、高さ、BufferedImage.TYPE_INT_RGB)。
Graphics2D G = buffImg.createGraphics()。
//生成随机数
ランダムランダム=新しいランダム();
//将图像填充为白色
g.setColor(Color.WHITE)。
g.fillRect(0、0、幅、高さ)。
//创建字体
ImgFontByte imgFont =新しいImgFontByte();
フォントのフォント= imgFont.getFont(fontHeight)。
g.setFont(フォント)。

以下のために(INT i = 0; I <LINECOUNT; iは++){
int型XS =にRandom.nextInt(幅)。
INT YS =にRandom.nextInt(高さ)。
INT XE = XS +にRandom.nextInt(幅/ 8)。
INTがた= YS +にRandom.nextInt(高さ/ 8)。
赤=にRandom.nextInt(255)。
=にRandom.nextIntグリーン(255);
青=にRandom.nextInt(255);
g.setColor(新新色(赤、緑、青));
g.drawLine(XS、YS、XE、YE);
}

// randomCode生成されたランダムコードを記録し
、StringBufferの新しい新=()StringBufferのrandomCode
// codeCountランダムに生成された文字コードが。
以下のために(INT I = 0; IはcodeCountを<; Iは++){
文字列strRand = String.valueOf(codeSequence【にRandom.nextInt(codeSequence.length)]);
//、ランダムカラー値を生成するように、出力色の各文字値が異なっています。
0 =赤、
緑= 0;
青= 0;
g.setColor(新新色(赤、緑、青));
g.drawString(strRand、(I)* X ,, codeY);
// 4は、ランダムに生成一緒に組み合わせの数。
randomCode.append(strRand);
}
//セッションに4桁のコードを保存します。
= randomCode.toStringコード();
}

ページ:そう二次元コード生成を与えます。
VaRのURL = "?/ getImgCode電話=" +アカウント+ "&タイムスタンプ=" +新しいDate()getTime(); 

$( "#のgetImgCode")ショー();
$( "#getImgCode")のattr( "SRC"、URL)。

おすすめ

転載: www.cnblogs.com/echo777/p/11549382.html
おすすめ