天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

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

jsp技術ssh生成隨機數字驗證碼操作步驟,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 成人毛片免费观看视频大全 | 我的好妈妈8高清在线观看WWW | 日韩精品无码久久一区二区三 | 国产精品系列在线观看 | 办公室激情在线观看 | 国产午夜久久影院 | 办公室沙发口爆12P 办公室日本肉丝OL在线 | 97超碰在线视频人人av | 伊人影院综合在线 | 一手揉着乳头一手模仿抽插视频 | 精品国产中文字幕在线视频 | 亚洲高清在线天堂精品 | 亚洲欧美一区二区久久 | 被室友C哭调教双性 | 寂寞夜晚视频高清观看免费 | 60老妇性xxxxhd| 国产精品色无码AV在线观看 | 免费韩国伦理2017最新 | 青青草国产自偷拍 | 樱桃视频高清免费观看在线播放 | 日本高清片免费观看 | 午夜理伦大片一级 | 亚洲蜜桃AV永久无码精品放毛片 | 久久精品热老司机 | 26uuu老色哥| 国产啪视频在线播放观看 | 亚洲精品高清AV在线播放 | 在线播放成人无码日 | 99久久久精品免费观看国产 | 夜夜躁婷婷AV蜜桃视频 | 怡春院国产精品视频 | 娇喘嗯嗯 轻点啊视频福利 娇喘高潮教室h | 99久久精品免费看国产一区二区 | 脱jk裙的美女露小内内无遮挡 | 久久精品在现线观看免费15 | 亚洲中文字幕在线第六区 | hd性欧美俱乐部中文 | 男女无遮挡吃奶gift动态图 | 伦理片飘花免费影院 | 久久视频精品3线视频在线观看 | 98国产精品人妻无码免费 |