java制作簡單驗(yàn)證碼功能
本文實(shí)例為大家分享了java制作簡單驗(yàn)證碼的具體代碼,供大家參考,具體內(nèi)容如下
在這里我們需要用到j(luò)ava的畫筆工具,所以我們需要導(dǎo)入以下包
import="java.util.*,java.awt.*,java.awt.image.*,javax.imageio.*"
然后我就使用java腳本來實(shí)現(xiàn)一個小小的驗(yàn)證碼
<%@ page contentType="image/jpeg; charset=utf-8" language="java" import="java.util.*,java.awt.*,java.awt.image.*,javax.imageio.*" pageEncoding="UTF-8"%> <!-- 以上導(dǎo)入awt和awt.image包 --> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>" rel="external nofollow" > <title>驗(yàn)證碼</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> </head> <body> <%! //獲取隨機(jī)顏色 public Color getColor(){ Random random = new Random(); //使用rgb()隨機(jī)產(chǎn)生顏色 int r = random.nextInt(256); int g = random.nextInt(256); int b = random.nextInt(256); return new Color(r,g,b); } //獲取隨機(jī)數(shù)字 產(chǎn)生一個4位數(shù) public String getNum(){ String str = ""; Random random = new Random(); for(int i = 0;i < 4;i++){ str += random.nextInt(10); //0-9 } return str; } %> <% /* 清除緩存 */ response.setHeader("pragma", "mo-cache"); response.setHeader("cache-control", "no-cache"); response.setDateHeader("expires", 0); //產(chǎn)生矩形框 BufferedImage image = new BufferedImage(80,30,BufferedImage.TYPE_INT_RGB); //獲取畫筆工具 Graphics g = image.getGraphics(); //設(shè)置矩形框的顏色 g.setColor(new Color(200,200,200)); //設(shè)置坐標(biāo)和寬高 g.fillRect(0, 0, 80, 30); //隨機(jī)產(chǎn)生干擾線 for(int i = 0;i < 30;i++){ Random random = new Random(); int x = random.nextInt(80); int y = random.nextInt(30); int x1 = random.nextInt(x + 10); int y1 = random.nextInt(y + 10); //設(shè)置隨機(jī)顏色 g.setColor(getColor()); //畫出來 g.drawLine(x, y, x1, y1); } //字的顏色和數(shù)字 g.setFont(new Font("Microsoft YaHei",Font.BOLD,16)); g.setColor(Color.BLACK); //獲取隨機(jī)數(shù)字 String checkNum = getNum(); //給字拼接空格 StringBuffer sb = new StringBuffer(); for(int i = 0;i < checkNum.length();i++){ sb.append(checkNum.charAt(i) + " "); } //畫出數(shù)字 g.drawString(sb.toString(), 15, 20); //存入session域中 session.setAttribute("CHECKNUM", checkNum); //例如1010 //將圖像以jpeg的形式通過字節(jié)流輸出 ImageIO.write(image, "jpeg", response.getOutputStream()); //清除緩存 out.clear(); //放入body中 out = pageContext.pushBody(); %> </body> </html>
結(jié)果如下:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- java登錄驗(yàn)證碼實(shí)現(xiàn)代碼
- java 圖片驗(yàn)證碼的實(shí)現(xiàn)代碼
- Java實(shí)現(xiàn)驗(yàn)證碼具體代碼
- Java 隨機(jī)生成驗(yàn)證碼(支持大小寫字母、數(shù)字、隨機(jī)字體)的實(shí)例
- Java隨機(jī)生成手機(jī)短信驗(yàn)證碼的方法
- Java實(shí)現(xiàn)仿淘寶滑動驗(yàn)證碼研究代碼詳解
- Java Web開發(fā)之圖形驗(yàn)證碼的生成與使用方法
- java實(shí)現(xiàn)驗(yàn)證碼類生成中文驗(yàn)證碼
- JAVA實(shí)現(xiàn)利用第三方平臺發(fā)送短信驗(yàn)證碼
- java生成圖片驗(yàn)證碼示例程序
相關(guān)文章
解決Test類中不能使用Autowired注入bean的問題
這篇文章主要介紹了解決Test類中不能使用Autowired注入bean的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09JDK動態(tài)代理之ProxyGenerator生成代理類的字節(jié)碼文件解析
這篇文章主要為大家詳細(xì)介紹了JDK動態(tài)代理之ProxyGenerator生成代理類的字節(jié)碼文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02git stash 和unstash的使用操作,git unstash failed
這篇文章主要介紹了git stash 和unstash的使用操作,git unstash failed,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02java線程池:獲取運(yùn)行線程數(shù)并控制線程啟動速度的方法
下面小編就為大家?guī)硪黄猨ava線程池:獲取運(yùn)行線程數(shù)并控制線程啟動速度的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05劍指Offer之Java算法習(xí)題精講鏈表與數(shù)組專項(xiàng)訓(xùn)練
跟著思路走,之后從簡單題入手,反復(fù)去看,做過之后可能會忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會發(fā)現(xiàn)質(zhì)的變化2022-03-03Redis Java Lettuce驅(qū)動框架原理解析
這篇文章主要介紹了Redis Java Lettuce驅(qū)動框架原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-12-12Java設(shè)計(jì)模式以虹貓藍(lán)兔的故事講解代理模式
代理模式是Java常見的設(shè)計(jì)模式之一。所謂代理模式是指客戶端并不直接調(diào)用實(shí)際的對象,而是通過調(diào)用代理,來間接的調(diào)用實(shí)際的對象2022-04-04Java設(shè)計(jì)模式之責(zé)任鏈模式的概念、實(shí)現(xiàn)以及netty中的責(zé)任鏈模式
這篇文章主要給大家介紹了關(guān)于設(shè)計(jì)模式之責(zé)任鏈模式的概念、實(shí)現(xiàn)以及netty中的責(zé)任鏈模式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12