java制作簡單驗證碼功能
本文實例為大家分享了java制作簡單驗證碼的具體代碼,供大家參考,具體內(nèi)容如下
在這里我們需要用到java的畫筆工具,所以我們需要導入以下包
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"%>
<!-- 以上導入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();
//設置矩形框的顏色
g.setColor(new Color(200,200,200));
//設置坐標和寬高
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);
//設置隨機顏色
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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
解決Test類中不能使用Autowired注入bean的問題
這篇文章主要介紹了解決Test類中不能使用Autowired注入bean的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
JDK動態(tài)代理之ProxyGenerator生成代理類的字節(jié)碼文件解析
這篇文章主要為大家詳細介紹了JDK動態(tài)代理之ProxyGenerator生成代理類的字節(jié)碼文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02
git stash 和unstash的使用操作,git unstash failed
這篇文章主要介紹了git stash 和unstash的使用操作,git unstash failed,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02
java線程池:獲取運行線程數(shù)并控制線程啟動速度的方法
下面小編就為大家?guī)硪黄猨ava線程池:獲取運行線程數(shù)并控制線程啟動速度的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05
劍指Offer之Java算法習題精講鏈表與數(shù)組專項訓練
跟著思路走,之后從簡單題入手,反復去看,做過之后可能會忘記,之后再做一次,記不住就反復做,反復尋求思路和規(guī)律,慢慢積累就會發(fā)現(xiàn)質(zhì)的變化2022-03-03
Redis Java Lettuce驅(qū)動框架原理解析
這篇文章主要介紹了Redis Java Lettuce驅(qū)動框架原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-12-12
Java設計模式之責任鏈模式的概念、實現(xiàn)以及netty中的責任鏈模式
這篇文章主要給大家介紹了關于設計模式之責任鏈模式的概念、實現(xiàn)以及netty中的責任鏈模式的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12

