java制作簡單驗證碼功能
本文實例為大家分享了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>
<%!
//獲取隨機(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í)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于IDEA中spring-cloud-starter-alibaba-nacos-discovery 無法引入問題
這篇文章主要介紹了關(guān)于IDEA中spring-cloud-starter-alibaba-nacos-discovery 無法引入問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02
Java Swing組件單選框JRadioButton用法示例
這篇文章主要介紹了Java Swing組件單選框JRadioButton用法,結(jié)合具體實例形式分析了Swing單選框JRadioButton的使用方法及相關(guān)操作注意事項,需要的朋友可以參考下2017-11-11
Java中BufferedReader與Scanner讀入的區(qū)別詳解
這篇文章主要介紹了Java中BufferedReader與Scanner讀入的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
使用Spring的JAVA Mail支持簡化郵件發(fā)送功能
這篇文章主要為大家詳細(xì)介紹了使用Spring的JAVA Mail支持簡化郵件發(fā)送功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04
Java countDownLatch如何實現(xiàn)多線程任務(wù)阻塞等待
這篇文章主要介紹了Java countDownLatch如何實現(xiàn)多線程任務(wù)阻塞等待,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10
java8使用filter()取出自己所需數(shù)據(jù)
這篇文章主要介紹了java8使用filter()取出自己所需數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
Spring Web MVC和Hibernate的集成配置詳解
這篇文章主要介紹了Spring Web MVC和Hibernate的集成配置詳解,具有一定借鑒價值,需要的朋友可以參考下2017-12-12

