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

首頁 > 編程 > JSP > 正文

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

2024-09-05 00:17:38
字體:
來源:轉載
供稿:網友
1、login.jsp頁面程序
復制代碼 代碼如下:www.CuoXIn.com

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

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

<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 生成驗證碼的類文件
復制代碼 代碼如下:www.CuoXIn.com

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程序
復制代碼 代碼如下:www.CuoXIn.com

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
復制代碼 代碼如下:www.CuoXIn.com

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文件
復制代碼 代碼如下:www.CuoXIn.com

<!-- 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
国产亚洲欧美日韩一区二区| 9.1国产丝袜在线观看| 亚洲欧美精品中文字幕在线| 亚洲自拍偷拍区| 欧美精品一区二区免费| 日韩av在线影院| 国内精品久久久久影院 日本资源| 黄色精品在线看| 日韩精品一区二区三区第95| 欧美性猛交99久久久久99按摩| 国产一区二区三区毛片| 日韩少妇与小伙激情| 91av在线影院| 夜夜狂射影院欧美极品| 国产精品视频免费在线| 国产精品777| 神马久久久久久| 福利二区91精品bt7086| 亚洲欧美中文日韩在线| 国精产品一区一区三区有限在线| 一级做a爰片久久毛片美女图片| 韩国国内大量揄拍精品视频| 久久国产精品亚洲| 日本不卡高字幕在线2019| 欧美性猛交xxxx乱大交3| 精品亚洲精品福利线在观看| 日韩精品在线观看视频| 日本精品性网站在线观看| 日韩精品免费视频| 亚洲奶大毛多的老太婆| 国产日韩在线看片| 日韩在线小视频| 精品成人国产在线观看男人呻吟| 丝袜亚洲欧美日韩综合| 亚洲伊人一本大道中文字幕| 日韩成人av在线播放| 欧美日韩国产一区二区| 欧美激情一级精品国产| 91色视频在线观看| 中文字幕亚洲自拍| 欧美成人午夜影院| 9.1国产丝袜在线观看| 欧美亚洲视频在线观看| 欧美激情在线视频二区| 亚洲激情国产精品| 这里精品视频免费| 亚洲成人久久一区| 国自在线精品视频| 国产有码一区二区| 精品久久久国产精品999| 日韩在线视频导航| 久久精品国产69国产精品亚洲| 91精品中国老女人| 久久精品国产久精国产思思| 国产精品视频yy9099| 欧美激情影音先锋| 国产香蕉一区二区三区在线视频| 午夜剧场成人观在线视频免费观看| 狠狠躁夜夜躁久久躁别揉| 久久精品这里热有精品| 国产精品极品美女粉嫩高清在线| 中文字幕少妇一区二区三区| 欧美福利视频在线观看| 国产精品视频内| 色妞色视频一区二区三区四区| 性欧美长视频免费观看不卡| 日韩成人小视频| 欧美性色19p| 一本色道久久综合狠狠躁篇怎么玩| 欧美成人免费全部观看天天性色| 欧美福利视频在线观看| 日韩欧美一区二区三区| 国产精品va在线| 亚洲男子天堂网| 国产亚洲aⅴaaaaaa毛片| 亚洲视频综合网| 亚洲日韩中文字幕| 久久久久国产一区二区三区| 日韩中文字幕视频| 国产日本欧美在线观看| 日韩美女免费线视频| 国产在线观看不卡| 国产精品视频地址| 国产精品劲爆视频| 欧美大片免费看| 欧美福利视频在线| 久久久精品国产一区二区| 国产精品久久久久久中文字| 欧美亚洲另类在线| 国模吧一区二区三区| 福利一区福利二区微拍刺激| 在线观看欧美日韩国产| 欧美在线一级视频| 国产亚洲欧洲高清一区| 久久久久久久999| 欧洲精品在线视频| 久久在线免费视频| 日韩欧美成人网| 日韩精品在线观看一区| 国产97在线观看| 日韩在线欧美在线| 国产精品99久久久久久人| 欧美一区视频在线| 亚洲国产精品久久精品怡红院| 一区二区三区日韩在线| 国产精品一区二区电影| 国产成人精品久久久| 精品视频在线播放色网色视频| 欧美综合第一页| 97在线精品国自产拍中文| www.日韩不卡电影av| 国产精品69精品一区二区三区| 欧美激情免费观看| 国产91在线播放| 成人网在线免费看| 91伊人影院在线播放| 亚洲色图25p| 国语自产偷拍精品视频偷| 午夜免费在线观看精品视频| 久久这里有精品视频| 一道本无吗dⅴd在线播放一区| 亚洲欧美在线一区| 国产精品一区av| 97精品一区二区三区| 成人女保姆的销魂服务| 午夜精品久久久久久久99热浪潮| 日韩国产激情在线| 日韩成人激情视频| 97精品国产97久久久久久春色| 韩国日本不卡在线| 国产在线观看精品| 久久色精品视频| 亚洲成人黄色网| 久久久亚洲福利精品午夜| 亚洲视屏在线播放| 久久成人av网站| 亚洲国产精品资源| 97人人爽人人喊人人模波多| 国产午夜精品理论片a级探花| 日韩精品在线私人| 日韩欧美a级成人黄色| 国产精品小说在线| 68精品国产免费久久久久久婷婷| 成人午夜激情免费视频| 日韩精品视频观看| 亚洲欧美三级在线| 国产国语videosex另类| 精品露脸国产偷人在视频| 国产v综合v亚洲欧美久久| 少妇久久久久久| 91在线观看免费观看| 日韩欧美中文字幕在线播放| 欧美成人精品h版在线观看| 欧美性少妇18aaaa视频| 国产91精品久久久久久| 2019中文字幕免费视频| 国产精品久久久久国产a级| 国产欧美久久一区二区| 欧美在线视频在线播放完整版免费观看| 欧美一级淫片aaaaaaa视频| 亚洲国产成人久久| 亚洲人成网站免费播放| 精品偷拍各种wc美女嘘嘘| 国产精品xxxxx|