国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

二、java-常用java驗證碼

2019-11-06 07:34:02
字體:
來源:轉載
供稿:網友

二、java-常用java驗證碼

本節常用講java驗證碼的使用

使用ValidateCode.java的工具類進行驗證碼的生成

驗證碼生成源碼

public class ValidateCode {	// 圖片的寬度。	PRivate int width = 120;	// 圖片的高度。	private int height = 40;	// 驗證碼字符個數	private int codeCount = 4;	// 驗證碼干擾線數	private int lineCount = 20;	// 驗證碼	private String code = null;	// 驗證碼圖片Buffer	private BufferedImage buffImg=null;	private char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'H', 'J',			'K', 'M', 'N',  'P', 'R', 'S', 'T', 'U', 'V', 'W',			'X', 'Y', '2', '3', '4', '5', '6', '7', '8' };	public  ValidateCode() {		this.createCode();	}	/**	 * 	 * @param width 圖片寬	 * @param height 圖片高	 */	public  ValidateCode(int width,int height) {		this.width=width;		this.height=height;		this.createCode();	}	/**	 * 	 * @param width 圖片寬	 * @param height 圖片高	 * @param codeCount 字符個數	 * @param lineCount 干擾線條數	 */	public  ValidateCode(int width,int height,int codeCount,int lineCount) {		this.width=width;		this.height=height;		this.codeCount=codeCount;		this.lineCount=lineCount;		this.createCode();	}		public void createCode() {		int x = 0,fontHeight=0,codeY=0;		int red = 0, green = 0, blue = 0;				x = width / (codeCount +2);//每個字符的寬度		fontHeight = height - 2;//字體的高度		codeY = height - 4;				// 圖像buffer		buffImg = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);		Graphics2D g = buffImg.createGraphics();		// 生成隨機數		Random random = new Random();		// 將圖像填充為白色		g.setColor(Color.WHITE);		g.fillRect(0, 0, width, height);		// 創建字體		ImgFontByte imgFont=new ImgFontByte();		Font font =imgFont.getFont(fontHeight);		g.setFont(font);				for (int i = 0; i < lineCount; i++) {			int xs = random.nextInt(width);			int ys = random.nextInt(height);			int xe = xs+random.nextInt(width/8);			int ye = ys+random.nextInt(height/8);			red = random.nextInt(255);			green = random.nextInt(255);			blue = random.nextInt(255);			g.setColor(new Color(red, green, blue));			g.drawLine(xs, ys, xe, ye);		}				// randomCode記錄隨機產生的驗證碼		StringBuffer randomCode = new StringBuffer();		// 隨機產生codeCount個字符的驗證碼。		for (int i = 0; i < codeCount; i++) {			String strRand = String.valueOf(codeSequence[random.nextInt(codeSequence.length)]);			// 產生隨機的顏色值,讓輸出的每個字符的顏色值都將不同。			red = random.nextInt(255);			green = random.nextInt(255);			blue = random.nextInt(255);			g.setColor(new Color(red, green, blue));			g.drawString(strRand, (i + 1) * x, codeY);			// 將產生的四個隨機數組合在一起。			randomCode.append(strRand);		}		// 將四位數字的驗證碼保存到session中。		code=randomCode.toString();			}		public void write(String path) throws IOException {		OutputStream sos = new FileOutputStream(path);			this.write(sos);	}		public void write(OutputStream sos) throws IOException {			ImageIO.write(buffImg, "png", sos);			sos.close();	}	public BufferedImage getBuffImg() {		return buffImg;	}		public String getCode() {		return code;	}}我后端采用的ssm框架

所以我們寫一個共用的controller類在其中寫個驗證碼獲取的接口好讓前端能夠獲取到驗證碼

接口:我通過ValidateCode類獲取驗證碼的字符串保存到session中去

/**	 * 方法描述:驗證碼	 *@return	 * @throws IOException 	 */	@RequestMapping("/code")	public void Code() throws IOException{		ValidateCode code=new ValidateCode(110, 40, 4, 5);		request.getSession().setAttribute("code", code.getCode());		code.write(response.getOutputStream());	}驗證接口:獲取已保存在session中的驗證碼字符串獲取出來與傳入的字符串進行比較

	/**	 * 方法描述:驗證正確	 *@return	 * @throws IOException 	 */	@RequestMapping("/codev")	@ResponseBody	public ResResult Codev(String code){		String c=(String) request.getSession().getAttribute("code");		if(c.equals(code.toUpperCase())){			return ResResult.ok(true);		}else{			return ResResult.ok(false);		}	}

驗證碼接口效果圖:

前端我用的jq validate進行表單驗證

前端驗證源碼:

$("#form-article-add").validate({					//出錯時添加的標簽 					errorElement : "span", 		rules: {			name: {				required: true,				minlength: 4,				maxlength: 12,			},			passWord: {				required: true,				minlength: 6,				maxlength: 16			},			code: {				required: true,				remote: {					type: "post",					url: "/wwwydl/s/comm/codev",					data: {code:$("#code").val()},					dataType: "json",					dataFilter: function(result, type) {						var json = eval('(' + result + ')'); 						if(json.data){							return true;						}else{							return false;							changeCode();						}																}				}			},		},		success: function(label) {			//正確時的樣式			label.text(" ").addClass("success");		},		messages: {			code: {				required: "輸入驗證碼",				remote: "驗證碼錯誤"			}		},		onkeyup:false,		focusCleanup:true,		success:"valid",		submitHandler:function(form){			submit();		}	});前端效果圖:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 麻城市| 乐陵市| 黑水县| 阿拉善右旗| 固阳县| 舞阳县| 孝感市| 中西区| 东乌珠穆沁旗| 建瓯市| 辛集市| 昔阳县| 周至县| 南投县| 崇文区| 石嘴山市| 邵东县| 辽宁省| 鲁山县| 乐亭县| 桃源县| 茶陵县| 竹山县| 克拉玛依市| 永新县| 库伦旗| 合水县| 和硕县| 涟水县| 永定县| 特克斯县| 嘉祥县| 奎屯市| 西昌市| 托克托县| 泰顺县| 公主岭市| 泰安市| 唐海县| 手机| 同仁县|