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

首頁 > 編程 > JSP > 正文

ssh怎樣生成隨機數字驗證碼

2024-09-05 00:18:58
字體:
來源:轉載
供稿:網友

我們在使用jsp編程的時候經常會需要用ssh來生成隨機數字驗證碼,那么你知道ssh怎樣生成隨機數字驗證碼嗎?接下來的內容中我們就一起去看看ssh生成隨機數字驗證碼的方法。

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,修改成你想生成的位數就可以了~

上文就是小編介紹ssh怎樣生成隨機數字驗證碼的內容,其實ssh生成隨機數字驗證碼的方法還有很多,感興趣的小伙伴們可以參考一下。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品国产视频| 精品久久久久久久久久久| 在线观看欧美成人| 国产精品入口夜色视频大尺度| 性欧美xxxx视频在线观看| 亚洲精品一区二区三区婷婷月| 亚洲天堂男人天堂女人天堂| 精品国产福利视频| 久久久久久国产精品三级玉女聊斋| 青青青国产精品一区二区| 96国产粉嫩美女| 久久久女人电视剧免费播放下载| 日本久久精品视频| 精品视频中文字幕| 亚洲男人第一av网站| 69久久夜色精品国产69乱青草| 久久亚洲国产精品成人av秋霞| 亚洲色图五月天| 久久中文字幕在线视频| 91精品国产色综合久久不卡98口| 啪一啪鲁一鲁2019在线视频| 亚洲色图综合久久| 亚洲人在线观看| 成人欧美一区二区三区黑人| 欧美天天综合色影久久精品| 久久91精品国产91久久跳| www高清在线视频日韩欧美| 国内伊人久久久久久网站视频| 91麻豆国产语对白在线观看| 一区二区欧美在线| 日韩中文字幕第一页| 97热在线精品视频在线观看| 国产精品入口夜色视频大尺度| 欧美成人精品一区| 一本一道久久a久久精品逆3p| 亚洲激情免费观看| 国产91成人在在线播放| 久久精品国产久精国产一老狼| 国产免费观看久久黄| 国产精品丝袜白浆摸在线| 久久综合国产精品台湾中文娱乐网| 国产精品丝袜一区二区三区| 日韩在线视频二区| 亚洲欧美第一页| 国产精品高清网站| 日韩欧美在线视频观看| 日韩精品在线观看一区二区| 有码中文亚洲精品| 亚洲国产小视频| 疯狂蹂躏欧美一区二区精品| 草民午夜欧美限制a级福利片| 亚洲精品videossex少妇| 亚洲97在线观看| 国内精品一区二区三区四区| 日韩精品日韩在线观看| 中文字幕久久精品| 精品国产福利视频| 欧美在线一区二区视频| 亚洲欧洲国产伦综合| 日韩欧美亚洲综合| 在线中文字幕日韩| 国产精品第一视频| 日韩在线观看免费高清| 久久久精品2019中文字幕神马| 欧美成人黑人xx视频免费观看| 福利视频导航一区| 国产日产久久高清欧美一区| 国产亚洲精品久久久久久| 欧美视频一二三| 68精品久久久久久欧美| 国产精品视频导航| 日韩精品在线第一页| 国产成人精品一区| 欧美日韩精品在线视频| 国产成人a亚洲精品| 欧美最猛性xxxxx(亚洲精品)| 成人97在线观看视频| 伊人青青综合网站| 欧美精品免费在线观看| 亚洲综合成人婷婷小说| 亚洲成人免费网站| 91最新国产视频| 欧美综合激情网| 日韩极品精品视频免费观看| 亚洲国产日韩欧美在线动漫| 国产精品欧美日韩一区二区| 亚洲一区二区三区毛片| 国内精品久久久久影院 日本资源| 精品久久香蕉国产线看观看gif| 久久精品美女视频网站| 欧美亚洲国产精品| 亚洲黄在线观看| 91精品久久久久久久久不口人| www亚洲欧美| 欧美日韩国产丝袜美女| 青青a在线精品免费观看| 国产精品白嫩初高中害羞小美女| 亚洲精品久久久一区二区三区| 日韩成人av网| 97视频免费观看| 国产精品久久久久久久app| 国产精品美女免费视频| 国产不卡精品视男人的天堂| 国产精品久久久| 国产国语videosex另类| 国产成人精品免费久久久久| 97福利一区二区| 亚洲男人天堂久| 在线观看国产精品日韩av| 成人中文字幕在线观看| 欧美成人免费在线视频| 国产精品久久综合av爱欲tv| 久久这里只有精品99| 亚洲女在线观看| 国产精品久久久久久久久男| 91精品久久久久久久| 久久夜色精品亚洲噜噜国产mv| 亚洲国产中文字幕在线观看| 日韩不卡在线观看| 亚洲人高潮女人毛茸茸| 综合av色偷偷网| 最近2019年日本中文免费字幕| 超碰91人人草人人干| 中文字幕一区电影| 18一19gay欧美视频网站| 亚洲欧美激情在线视频| 亚洲一品av免费观看| 欧美性xxxxx极品| 麻豆国产精品va在线观看不卡| 国产成人aa精品一区在线播放| 91精品久久久久久久久青青| 欧美巨猛xxxx猛交黑人97人| 91精品国产九九九久久久亚洲| 欧美视频在线看| 亚洲天堂影视av| 久久69精品久久久久久久电影好| 乱亲女秽乱长久久久| 亚洲激情自拍图| 国产成人综合精品在线| 岛国视频午夜一区免费在线观看| 国产91精品不卡视频| 国产精品高潮视频| 国产精品久久婷婷六月丁香| 国产男人精品视频| 国产精品久久久久久av下载红粉| 国产乱人伦真实精品视频| 国产日本欧美一区| 成人免费视频网址| 久久99亚洲热视| 亚洲欧美自拍一区| 亚洲国产精品va在线看黑人动漫| 亚洲香蕉成视频在线观看| 91精品国产91久久久久| 国产婷婷成人久久av免费高清| 97国产精品视频人人做人人爱| 国产精品免费一区二区三区都可以| 亚洲成人久久电影| 亚洲精品456在线播放狼人| 日韩在线观看你懂的| 国产欧美一区二区白浆黑人| 国产亚洲精品久久久久动| 久久久亚洲欧洲日产国码aⅴ| 欧美性猛交xxxx黑人| 欧美乱妇高清无乱码|