您好,登錄后才能下訂單哦!
本文實例為大家分享了java制作簡單驗證碼的具體代碼,供大家參考,具體內(nèi)容如下
在這里我們需要用到j(luò)ava的畫筆工具,所以我們需要導(dǎo)入以下包
import="java.util.*,java.awt.*,java.awt.image.*,javax.imageio.*"
然后我就使用java腳本來實現(xià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>驗證碼</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> <%! //獲取隨機顏色 public Color getColor(){ Random random = new Random(); //使用rgb()隨機產(chǎn)生顏色 int r = random.nextInt(256); int g = random.nextInt(256); int b = random.nextInt(256); return new Color(r,g,b); } //獲取隨機數(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); //隨機產(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è)置隨機顏色 g.setColor(getColor()); //畫出來 g.drawLine(x, y, x1, y1); } //字的顏色和數(shù)字 g.setFont(new Font("Microsoft YaHei",Font.BOLD,16)); g.setColor(Color.BLACK); //獲取隨機數(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í)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。