电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

java實現(xiàn)動態(tài)驗證碼

瀏覽:49日期:2022-08-15 16:18:33

java動態(tài)實現(xiàn)驗證碼,供大家參考,具體內(nèi)容如下

【實現(xiàn)效果】

點擊圖片或者文字可以更換驗證碼 驗證碼隨機生成,由大小寫字母和數(shù)字組成 驗證碼字體顏色隨機生成,字母角度有偏轉(zhuǎn) 干擾線隨機分布

java實現(xiàn)動態(tài)驗證碼

java實現(xiàn)動態(tài)驗證碼

驗證碼的功能: 防止惡意的表單注冊

VerificationCode.java 驗證碼功能實現(xiàn)

package com.iqqcode.servlet.checkcode;import javax.imageio.ImageIO;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.awt.*;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Random;/** * @Author: Mr.Q * @Date: 2020-02-12 10:12 * @Description:驗證碼生成 */@WebServlet('/VerificationCode')public class VerificationCode extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int width = 120; int height = 50; //1.創(chuàng)建對象,驗證碼圖片對象 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); //2.美化圖片 //2.1填充背景色 //Graphics g = image.getGraphics(); Graphics2D g = (Graphics2D) image.getGraphics();//畫筆對象,2D來旋轉(zhuǎn)驗證碼字母 g.setColor(Color.WHITE);//設(shè)置畫筆顏色 g.fillRect(0, 0, width, height); //2.2畫邊框 g.setColor(Color.BLUE); g.drawRect(0, 0, width - 1, height - 1); //2.3生成驗證碼 String str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; //生成隨機角標(biāo) Random random = new Random(); //改變字體 g.setFont(new Font('宋體',Font.BOLD,35)); //將驗證碼偏轉(zhuǎn)并寫到畫布上 for (int i = 1; i <= 4; i++) { int x = width/5 * i; int y = height/2; String msg = ''; int index = random.nextInt(str.length()); //獲取字符 char ch = str.charAt(index);//隨機字符 //獲取正負(fù)30的角度 int angle = random.nextInt(60) - 30; double radian = angle * Math.PI/180; //設(shè)置驗證碼中的字體顏色 //g.setColor(Color.BLUE); int red = 0; int green = 0; int blue = 0; int codeY = 32; // 得到隨機產(chǎn)生的驗證碼數(shù)字 // 產(chǎn)生隨機的顏色分量來構(gòu)造顏色值,使輸出的每位數(shù)字的顏色值都不同 red = random.nextInt(255); green = random.nextInt(255); blue = random.nextInt(255); // 用隨機產(chǎn)生的顏色將驗證碼繪制到圖像中 g.setColor(new Color(red, green, blue)); //寫驗證碼 g.rotate(radian, x, y); //把字母畫在畫布上 //g.drawString(ch+'', x, y); g.drawString(String.valueOf(ch)+'', x, codeY); //把每次旋轉(zhuǎn)的再旋轉(zhuǎn)回來 g.rotate(-radian, x, y); //每次向右移動20像素 x += 15; msg += ch; } //2.4隨機產(chǎn)生20條干擾線,使圖象中的認(rèn)證碼不易被其它程序探測到 g.setColor(Color.MAGENTA); //隨機生成坐標(biāo)點 for (int i = 0; i < 20; i++) { int x1 = random.nextInt(width); int x2 = random.nextInt(width); int y1 = random.nextInt(height); int y2 = random.nextInt(height); g.drawLine(x1, x2, y1, y2); } //3.將圖片輸出到頁面展示 //將圖片對象寫入流中 ImageIO.write(image, 'jpg', response.getOutputStream()); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); }}insex.jsp 前臺頁面展示

分析:

點擊超鏈接或者圖片,需要換一張 給超鏈接和圖片綁定單擊事件 重新設(shè)置圖片的src屬性值

生成的圖片先要緩存在本地,每次請求是不會修改,所以驗證碼圖片不會切換;將圖片路徑后添加時間戳,通過錯誤的路徑來欺騙服務(wù)器重新請求

<%@ page contentType='text/html;charset=UTF-8' language='java' %><html><head> <title>驗證碼</title> <script> window.onload = function () { //1.獲取圖片對象 var img = document.getElementById('checkCode'); //2.綁定圖片單擊事件 img.onclick = function () { //加時間戳 var date = new Date().getTime(); //加時間戳,防止瀏覽器利用緩存 img.src = 'http://www.hdgsjgj.cn/ServletResponse/VerificationCode?' + date; } //綁定鏈接點擊事件 var ahref = document.getElementById('change'); ahref.onclick = function () { var date = new Date().getTime(); img.src = 'http://www.hdgsjgj.cn/ServletResponse/VerificationCode?' + date; } } </script></head><body><h2>驗證碼動態(tài)實現(xiàn)</h2><img src='http://www.hdgsjgj.cn/ServletResponse/VerificationCode'><a href='http://www.hdgsjgj.cn/bcjs/5074.html'>看不清?換一張</a></body></html>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: BAUER减速机|ROSSI-MERSEN熔断器-APTECH调压阀-上海爱泽工业设备有限公司 | 快速门厂家-快速卷帘门-工业快速门-硬质快速门-西朗门业 | 气象监测系统_气象传感器_微型气象仪_气象环境监测仪-山东风途物联网 | 游泳池设计|设备|配件|药品|吸污机-东莞市太平洋康体设施有限公司 | 液压升降货梯_导轨式升降货梯厂家_升降货梯厂家-河南东圣升降设备有限公司 | 澳威全屋定制官网|极简衣柜十大品牌|衣柜加盟代理|全屋定制招商 百度爱采购运营研究社社群-店铺托管-爱采购代运营-良言多米网络公司 | 膜结构车棚|上海膜结构车棚|上海车棚厂家|上海膜结构公司 | 桨叶搅拌机_螺旋挤压/方盒旋切造粒机厂家-无锡市鸿诚输送机械有限公司 | 杭州公司变更法人-代理记账收费价格-公司注销代办_杭州福道财务管理咨询有限公司 | 桁架机器人_桁架机械手_上下料机械手_数控车床机械手-苏州清智科技装备制造有限公司 | 纯化水设备-纯水设备-超纯水设备-[大鹏水处理]纯水设备一站式服务商-东莞市大鹏水处理科技有限公司 | 贵州水玻璃_-贵阳花溪闽兴水玻璃厂 | 高低温试验箱-模拟高低温试验箱订制-北京普桑达仪器科技有限公司【官网】 | 标准光源箱|对色灯箱|色差仪|光泽度仪|涂层测厚仪_HRC大品牌生产厂家 | 合肥角钢_合肥槽钢_安徽镀锌管厂家-昆瑟商贸有限公司 | 生物风-销售载体,基因,质粒,ATCC细胞,ATCC菌株等,欢迎购买-百风生物 | 培训中心-翰香原香酥板栗饼加盟店总部-正宗板栗酥饼技术 | 不锈钢闸阀_球阀_蝶阀_止回阀_调节阀_截止阀-可拉伐阀门(上海)有限公司 | 成都中天自动化控制技术有限公司 | 釜溪印象网络 - Powered by Discuz! | 电机铸铝配件_汽车压铸铝合金件_发动机压铸件_青岛颖圣赫机械有限公司 | 密封圈_泛塞封_格莱圈-[东莞市国昊密封圈科技有限公司]专注密封圈定制生产厂家 | 水性漆|墙面漆|木器家具漆|水漆涂料_晨阳水漆官网| 呼末二氧化碳|ETCO2模块采样管_气体干燥管_气体过滤器-湖南纳雄医疗器械有限公司 | 诗词大全-古诗名句 - 古诗词赏析 | LED太阳能中国结|发光红灯笼|灯杆造型灯|节日灯|太阳能灯笼|LED路灯杆装饰造型灯-北京中海轩光电 | 亿诺千企网-企业核心产品贸易| 不锈钢水箱厂家,不锈钢保温水箱-山东桑特供水设备 | 【连江县榕彩涂料有限公司】官方网站 | 六自由度平台_六自由度运动平台_三自由度摇摆台—南京全控科技 | 仓储货架_南京货架_钢制托盘_仓储笼_隔离网_环球零件盒_诺力液压车_货架-南京一品仓储设备制造公司 | 干式变压器厂_干式变压器厂家_scb11/scb13/scb10/scb14/scb18干式变压器生产厂家-山东科锐变压器有限公司 | CE认证_产品欧盟ROHS-REACH检测机构-商通检测 | 钢板仓,大型钢板仓,钢板库,大型钢板库,粉煤灰钢板仓,螺旋钢板仓,螺旋卷板仓,骨料钢板仓 | NMRV减速机|铝合金减速机|蜗轮蜗杆减速机|NMRV减速机厂家-东莞市台机减速机有限公司 | 专注提供国外机电设备及配件-工业控制领域一站式服务商-深圳市华联欧国际贸易有限公司 | 颚式破碎机,圆锥破碎机,制砂机-新乡市德诚机电制造有限公司 | 飞飞影视_热门电影在线观看_影视大全 | 金属波纹补偿器厂家_不锈钢膨胀节价格_非金属伸缩节定制-庆达补偿器 | 仿真茅草_人造茅草瓦价格_仿真茅草厂家_仿真茅草供应-深圳市科佰工贸有限公司 | 佛山市钱丰金属不锈钢蜂窝板定制厂家|不锈钢装饰线条|不锈钢屏风| 电梯装饰板|不锈钢蜂窝板不锈钢工艺板材厂家佛山市钱丰金属制品有限公司 |