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

您的位置:首頁技術文章
文章詳情頁

java后臺驗證碼生成的實現方法

瀏覽:2日期:2022-08-12 16:27:56

效果圖如下:

java后臺驗證碼生成的實現方法

1.適用需求

后臺生成驗證碼,用于登陸驗證。

2. 功能實現所需控件/文件:

無(普通標簽)

3.功能點實現思路

1)前臺思路:

(1)前臺一個<input>用于輸入驗證碼;一個<img>用于展示驗證碼。

(2)驗證碼生成以及展示,點擊刷新功能,可以為<img>綁定click事件。

(3)click事件里面寫ajax請求,通過后臺生成處理好的帶噪點的驗證碼圖片。

注意:后臺直接返回圖片,不是驗證碼的字符!若返回字符,則驗證碼就失去了意義(前臺很容易就可以獲取驗證碼字符,進行多次惡意訪問了)(這點考慮了系統安全性)

(4)關于返回的圖片如何在<img>標簽內展示

直接利用img的src屬性,屬性值為后臺生成驗證碼的方法請求路徑即可。當點擊驗證碼的時候,再動態設置src屬性即可(原訪問地址+隨機時間戳,防止同一路徑瀏覽器不另作訪問的問題)

前臺部分代碼:

/*驗證碼輸入框*/ <input name='verifyInput' placeholder='請輸入驗證碼'> /*驗證碼圖片*/ <img onclick='changeCode()' src='http://www.hdgsjgj.cn/bcjs/getVerifyCode'> //src的getVerifyCode是后臺訪問地址;項目為SSM框架。 /*點擊刷新驗證碼*/ function changeCode(){ var src = 'http://www.hdgsjgj.cn/bcjs/ getVerifyCode?'+new Date().getTime(); //加時間戳,防止瀏覽器利用緩存 $(’.verifyCode’).attr('src',src); //jQuery寫法 }

2)后臺思路:

后臺思路很簡單,利用BufferedImage類創建一張圖片,再用Graphics2D對圖片進行繪制(生成隨機字符,添加噪點,干擾線)即可。注意生成的驗證碼字符串要放到session中,用于接下來登陸的驗證碼驗證(當然也是后臺)。

部分代碼如下:

/* 獲取驗證碼圖片*/ @RequestMapping('/getVerifyCode ') public void getVerificationCode(HttpServletResponse response,HttpServletRequest request) { try { int width=200; int height=69; BufferedImage verifyImg=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); //生成對應寬高的初始圖片 String randomText = VerifyCode.drawRandomText(width,height,verifyImg); //單獨的一個類方法,出于代碼復用考慮,進行了封裝。 //功能是生成驗證碼字符并加上噪點,干擾線,返回值為驗證碼字符 request.getSession().setAttribute('verifyCode', randomText); response.setContentType('image/png');//必須設置響應內容類型為圖片,否則前臺不識別 OutputStream os = response.getOutputStream(); //獲取文件輸出流 ImageIO.write(verifyImg,'png',os);//輸出圖片流 os.flush(); os.close();//關閉流 } catch (IOException e) { this.logger.error(e.getMessage()); e.printStackTrace(); } }

/*對圖片進行處理的類和方法*/ public class VerifyCode { public static String drawRandomText(int width,int height,BufferedImage verifyImg) { Graphics2D graphics = (Graphics2D)verifyImg.getGraphics(); graphics.setColor(Color.WHITE);//設置畫筆顏色-驗證碼背景色 graphics.fillRect(0, 0, width, height);//填充背景graphics.setFont(new Font('微軟雅黑', Font.BOLD, 40));//數字和字母的組合String baseNumLetter= = '123456789abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'; StringBuffer sBuffer = new StringBuffer();int x = 10; //旋轉原點的 x 坐標String ch = '';Random random = new Random();for(int i = 0;i < 4;i++){ graphics.setColor(getRandomColor()); //設置字體旋轉角度 int degree = random.nextInt() % 30; //角度小于30度 int dot = random.nextInt(baseNumLetter.length()); ch = baseNumLetter.charAt(dot) + ''; sBuffer.append(ch); //正向旋轉 graphics.rotate(degree * Math.PI / 180, x, 45); graphics.drawString(ch, x, 45); //反向旋轉 graphics.rotate(-degree * Math.PI / 180, x, 45); x += 48;}//畫干擾線for (int i = 0; i <6; i++) { // 設置隨機顏色 graphics.setColor(getRandomColor()); // 隨機畫線 graphics.drawLine(random.nextInt(width), random.nextInt(height), random.nextInt(width), random.nextInt(height));}//添加噪點for(int i=0;i<30;i++){ int x1 = random.nextInt(width); int y1 = random.nextInt(height); graphics.setColor(getRandomColor()); graphics.fillRect(x1, y1, 2,2); }return sBuffer.toString(); } /** * 隨機取色 */ private static Color getRandomColor() {Random ran = new Random();Color color = new Color(ran.nextInt(256),ran.nextInt(256), ran.nextInt(256));return color; }}4.功能實現心得:

驗證碼的功能實現思路很簡單,從系統安全性和代碼復用性這兩點考慮,驗證碼必須后臺生成,生成驗證碼的方法可以封裝到靜態工具類里。此外,后臺用到許多Java自帶的圖片處理類值得學習。

到此這篇關于java后臺驗證碼生成的實現方法的文章就介紹到這了,更多相關java 驗證碼生成內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 | 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 代做标书-代写标书-专业标书文件编辑-「深圳卓越创兴公司」 | 乐考网-银行从业_基金从业资格考试_初级/中级会计报名时间_中级经济师 | 低气压试验箱_高低温低气压试验箱_低气压实验箱 |林频试验设备品牌 | 珠海白蚁防治_珠海灭鼠_珠海杀虫灭鼠_珠海灭蟑螂_珠海酒店消杀_珠海工厂杀虫灭鼠_立净虫控防治服务有限公司 | 【星耀裂变】_企微SCRM_任务宝_视频号分销裂变_企业微信裂变增长_私域流量_裂变营销 | 低气压试验箱_高低温低气压试验箱_低气压实验箱 |林频试验设备品牌 | 标准件-非标紧固件-不锈钢螺栓-非标不锈钢螺丝-非标螺母厂家-三角牙锁紧自攻-南京宝宇标准件有限公司 | 紫外可见光分光度计-紫外分光度计-分光光度仪-屹谱仪器制造(上海)有限公司 | 首页|专注深圳注册公司,代理记账报税,注册商标代理,工商变更,企业400电话等企业一站式服务-慧用心 | 广州市哲铭油墨涂料有限公司,水性漆生产研发基地| 小小作文网_中小学优秀作文范文大全 | 苏州工作服定做-工作服定制-工作服厂家网站-尺品服饰科技(苏州)有限公司 | 算命免费_生辰八字_免费在线算命 - 卜算子算命网 | 【德信自动化】点胶机_全自动点胶机_自动点胶机厂家_塑料热压机_自动螺丝机-深圳市德信自动化设备有限公司 | 防爆电机_ybx3系列电机_河南省南洋防爆电机有限公司 | 山西3A认证|太原AAA信用认证|投标AAA信用证书-山西AAA企业信用评级网 | 聚氨酯催化剂K15,延迟催化剂SA-1,叔胺延迟催化剂,DBU,二甲基哌嗪,催化剂TMR-2,-聚氨酯催化剂生产厂家 | 户外-组合-幼儿园-不锈钢-儿童-滑滑梯-床-玩具-淘气堡-厂家-价格 | 玉米深加工设备|玉米加工机械|玉米加工设备|玉米深加工机械-河南成立粮油机械有限公司 | 煤矿支护网片_矿用勾花菱形网_缝管式_管缝式锚杆-邯郸市永年区志涛工矿配件有限公司 | 大行程影像测量仪-探针型影像测量仪-增强型影像测量仪|首丰百科 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 纯化水设备-纯水设备-超纯水设备-[大鹏水处理]纯水设备一站式服务商-东莞市大鹏水处理科技有限公司 | 致胜管家软件服务【在线免费体验】 | 粉末包装机-给袋式包装机-全自动包装机-颗粒-液体-食品-酱腌菜包装机生产线【润立机械】 | 焊锡丝|焊锡条|无铅锡条|无铅锡丝|无铅焊锡线|低温锡膏-深圳市川崎锡业科技有限公司 | 旋转滴界面张力仪(张力测定仪器)-百科| 电动葫芦|手拉葫芦|环链电动葫芦|微型电动葫芦-北京市凌鹰起重机械有限公司 | 耳模扫描仪-定制耳机设计软件-DLP打印机-asiga打印机-fitshape「飞特西普」 | 北京三友信电子科技有限公司-ETC高速自动栏杆机|ETC机柜|激光车辆轮廓测量仪|嵌入式车道控制器 | 过滤器_自清洗过滤器_气体过滤器_苏州华凯过滤技术有限公司 | 无锡门窗-系统门窗-阳光房-封阳台-断桥铝门窗厂[窗致美] | 安平县鑫川金属丝网制品有限公司,防风抑尘网,单峰防风抑尘,不锈钢防风抑尘网,铝板防风抑尘网,镀铝锌防风抑尘网 | 软瓷_柔性面砖_软瓷砖_柔性石材_MCM软瓷厂家_湖北博悦佳软瓷 | 算命免费_生辰八字_免费在线算命 - 卜算子算命网 | 膜结构停车棚-自行车棚-膜结构汽车棚加工安装厂家幸福膜结构 | 奇酷教育-Python培训|UI培训|WEB大前端培训|Unity3D培训|HTML5培训|人工智能培训|JAVA开发的教育品牌 | 高压绝缘垫-红色配电房绝缘垫-绿色高压绝缘地毯-上海苏海电气 | 编织人生 - 权威手工编织网站,编织爱好者学习毛衣编织的门户网站,织毛衣就上编织人生网-编织人生 | TTCMS自助建站_网站建设_自助建站_免费网站_免费建站_天天向上旗下品牌 |