亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

ssh生成隨機數字驗證碼操作步驟

2020-07-27 21:39:00
字體:
來源:轉載
供稿:網友
1、login.jsp頁面程序
復制代碼 代碼如下:

<script type="text/javascript">
function changeValidateCode(obj) {
//獲取當前的時間作為參數,無具體意義
var timenow = new Date().getTime();
//每次請求需要一個不同的參數,否則可能會返回同樣的驗證碼
//這和瀏覽器的緩存機制有關系,也可以把頁面設置為不緩存,這樣就不用這個參數了。
obj.src="rand.action?d="+timenow;
}
</script>

在表單中添加下面這句話:
復制代碼 代碼如下:

<s:text name="random"></s:text>:<s:textfield name="rand" size="5"></s:textfield><img src="rand.action" onclick="changeValidateCode(this)" title="點擊圖片刷新驗證碼"/>

2、RandomNumUtil.java 生成驗證碼的類文件
復制代碼 代碼如下:

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.imageio.stream.ImageOutputStream;
public class RandomNumUtil {
private ByteArrayInputStream image;//圖像
private String str;//驗證碼
private RandomNumUtil(){
init();//初始化屬性
}
/*
* 取得RandomNumUtil實例
*/
public static RandomNumUtil Instance(){
return new RandomNumUtil();
}
/*
* 取得驗證碼圖片
*/
public ByteArrayInputStream getImage(){
return this.image;
}
/*
* 取得圖片的驗證碼
*/
public String getString(){
return this.str;
}
private void init() {
// 在內存中創建圖象
int width=85, height=20;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 獲取圖形上下文
Graphics g = image.getGraphics();
// 生成隨機類
Random random = new Random();
// 設定背景色
g.setColor(getRandColor(200,250));
g.fillRect(0, 0, width, height);
// 設定字體
g.setFont(new Font("Times New Roman",Font.PLAIN,18));
// 隨機產生155條干擾線,使圖象中的認證碼不易被其它程序探測到
g.setColor(getRandColor(160,200));
for (int i=0;i<155;i++)
{
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x,y,x+xl,y+yl);
}
// 取隨機產生的認證碼(6位數字)
String sRand="";
for (int i=0;i<6;i++){
String rand=String.valueOf(random.nextInt(10));
sRand+=rand;
// 將認證碼顯示到圖象中
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
// 調用函數出來的顏色相同,可能是因為種子太接近,所以只能直接生成
g.drawString(rand,13*i+6,16);
}
//賦值驗證碼
this.str=sRand;
//圖象生效
g.dispose();
ByteArrayInputStream input=null;
ByteArrayOutputStream output = new ByteArrayOutputStream();
try{
ImageOutputStream imageOut = ImageIO.createImageOutputStream(output);
ImageIO.write(image, "JPEG", imageOut);
imageOut.close();
input = new ByteArrayInputStream(output.toByteArray());
}catch(Exception e){
System.out.println("驗證碼圖片產生出現錯誤:"+e.toString());
}
this.image=input;/* 賦值圖像 */
}
/*
* 給定范圍獲得隨機顏色
*/
private 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);
return new Color(r,g,b);
}
}

3、RandomAction.java 生成驗證碼的action程序
復制代碼 代碼如下:

import java.io.ByteArrayInputStream;
import com.mxl.util.RandomNumUtil;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class RandomAction extends ActionSupport{
private ByteArrayInputStream inputStream;
public String execute() throws Exception{
RandomNumUtil rdnu=RandomNumUtil.Instance();
this.setInputStream(rdnu.getImage());//取得帶有隨機字符串的圖片
ActionContext.getContext().getSession().put("random", rdnu.getString());//取得隨機字符串放入HttpSession
return SUCCESS;
}
public void setInputStream(ByteArrayInputStream inputStream) {
this.inputStream = inputStream;
}
public ByteArrayInputStream getInputStream() {
return inputStream;
}
}

4、LoginAction.java 驗證驗證碼的action
復制代碼 代碼如下:

private String rand; //表單中的rand
public String getRand() {
return rand;
}
public void setRand(String rand) {
this.rand = rand;
}
//從session中取出RandomAction.java 中生成的驗證碼random
String arandom=(String)(ActionContext.getContext().getSession().get("random"));
//下面就是將session中保存驗證碼字符串與客戶輸入的驗證碼字符串對比了
if(arandom.equals(this.getRand())) {
ActionContext.getContext().getSession().put("user", this.getUsername());
return SUCCESS;
}
else {
return ERROR;
}

5、配置struts.xml文件
復制代碼 代碼如下:

<!-- Random驗證碼 -->
<action name="rand" class="com.mxl.rand.RandomAction">
<result type="stream">
<param name="contentType">image/jpeg</param>
<param name="inputName">inputStream</param>
</result>
</action>

6、生成的驗證碼圖片演示(實現的6位數字的驗證碼)
說明:
如果想修改驗證碼生成的個數,需要修改以下幾個地方:
第一點:
int width=85, height=20; int width=85, height=20;
第二點: for (int i=0;i<6;i++) for (int i=0;i<6;i++)
數字6,修改成你想生成的位數就可以了~
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲aa在线观看| 成人羞羞国产免费| 91成人免费观看网站| 久久99国产综合精品女同| 亚洲国产精品一区二区三区| 亚洲精品国产拍免费91在线| 国产精品亚洲片夜色在线| 久久影院资源站| 亚洲男人天堂久| 亚洲福利在线看| 国产色视频一区| 国产一区二区美女视频| 亚洲国产成人91精品| 色吧影院999| 日韩在线视频线视频免费网站| 精品亚洲夜色av98在线观看| 国产美女久久精品香蕉69| 国产日韩欧美综合| 国产精品美女视频网站| 国产精品黄色影片导航在线观看| 国产日本欧美视频| 欧美一区二区视频97| 亚洲人午夜色婷婷| 成人欧美在线视频| 亚洲国产精品久久精品怡红院| 久久久电影免费观看完整版| 91超碰中文字幕久久精品| 亚洲精品欧美一区二区三区| 不卡在线观看电视剧完整版| 亚洲少妇激情视频| 国产日产欧美精品| 亚洲伦理中文字幕| 久久久精品影院| 另类视频在线观看| 成人黄色av网站| 亚洲综合在线做性| 亚洲va欧美va在线观看| 中文字幕亚洲图片| 九九精品视频在线观看| 色偷偷av亚洲男人的天堂| 国产成+人+综合+亚洲欧美丁香花| www.xxxx欧美| 91视频国产一区| 精品高清美女精品国产区| 高清欧美性猛交| 亚洲综合成人婷婷小说| 国产日本欧美在线观看| 成人精品一区二区三区电影免费| 91在线高清视频| 在线看片第一页欧美| 久久免费观看视频| 国产丝袜一区二区三区| 久久久久久久久久久免费精品| 3344国产精品免费看| 亚洲人午夜精品| 九九热这里只有精品免费看| 亚洲视频axxx| 欧美最猛性xxxxx(亚洲精品)| 亚洲色图五月天| 国产午夜精品麻豆| 在线播放日韩av| 国产一区二区美女视频| 午夜精品一区二区三区在线播放| 国产精品视频一区二区三区四| 91欧美激情另类亚洲| 日本午夜在线亚洲.国产| 欧美日韩国产专区| 亚洲性生活视频在线观看| 亚洲日本成人网| 亚洲色图在线观看| 伊人伊成久久人综合网站| 亚洲视频综合网| 亚洲白拍色综合图区| 俺去了亚洲欧美日韩| 久久综合88中文色鬼| 国内外成人免费激情在线视频网站| 不卡av在线播放| 亚洲国产精品人久久电影| 97在线视频免费| 国产精品都在这里| 欧美精品www在线观看| 欧美日韩黄色大片| 综合网日日天干夜夜久久| 亚洲国产91色在线| 久久亚洲精品毛片| 欧美一区深夜视频| 久久视频免费在线播放| 久久影院中文字幕| 国产精品老女人精品视频| 九九九热精品免费视频观看网站| 欧美激情视频在线观看| 免费91在线视频| 国产一区二区三区在线看| 国内精品模特av私拍在线观看| 欧美一区在线直播| 在线视频中文亚洲| 一区二区在线视频| 日韩精品在线播放| 久久久久久久久91| 91产国在线观看动作片喷水| 国产精品成久久久久三级| 在线播放国产一区二区三区| 国产精品露脸av在线| 日韩免费在线视频| 在线播放国产一区中文字幕剧情欧美| 国产精品免费一区| 亚洲美女视频网| 国产免费一区视频观看免费| 国自产精品手机在线观看视频| 久久精品国产久精国产一老狼| 亚洲女在线观看| 亚洲视频在线免费观看| 久久视频在线观看免费| 亚洲bt欧美bt日本bt| 中文字幕亚洲精品| 91色p视频在线| 揄拍成人国产精品视频| 九色精品免费永久在线| 成人免费大片黄在线播放| 久久久欧美一区二区| 欧美精品videos另类日本| 97久久精品人人澡人人爽缅北| 欧美视频不卡中文| 国产精品观看在线亚洲人成网| 欧美另类69精品久久久久9999| 亚洲性av在线| 中文字幕成人精品久久不卡| 久久躁狠狠躁夜夜爽| 欧美日韩亚洲一区二区| 日韩最新中文字幕电影免费看| 国产精品久久久久7777婷婷| 欧美视频13p| 亚洲性猛交xxxxwww| 欧美日韩国产丝袜美女| 性欧美激情精品| 亚洲高清一区二| 国产成人在线播放| 日韩中文字幕久久| 国产精品免费视频久久久| 日韩毛片在线观看| 欧美性xxxx极品hd满灌| 精品女同一区二区三区在线播放| 国产精品劲爆视频| 日韩中文字幕在线观看| 亚洲欧美在线磁力| 在线视频欧美日韩| 亚洲字幕一区二区| 欧美精品一本久久男人的天堂| 川上优av一区二区线观看| 日韩在线视频免费观看| 亚洲综合av影视| 欧美大片欧美激情性色a∨久久| 亚洲香蕉av在线一区二区三区| 日韩中文字幕网址| 欧美在线视频免费| 91久久综合亚洲鲁鲁五月天| 欧美巨大黑人极品精男| 国产精品偷伦视频免费观看国产| 91高清在线免费观看| 欧美国产日韩一区二区在线观看| 日韩亚洲成人av在线| 亚洲女人初尝黑人巨大| 久久亚洲精品成人| 精品国产999|