java制作简单验证码功能
程序员文章站
2023-12-21 11:27:58
本文实例为大家分享了java制作简单验证码的具体代码,供大家参考,具体内容如下
在这里我们需要用到java的画笔工具,所以我们需要导入以下包
import="java....
本文实例为大家分享了java制作简单验证码的具体代码,供大家参考,具体内容如下
在这里我们需要用到java的画笔工具,所以我们需要导入以下包
import="java.util.*,java.awt.*,java.awt.image.*,javax.imageio.*"
然后我就使用java脚本来实现一个小小的验证码
<%@ 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()随机产生颜色 int r = random.nextint(256); int g = random.nextint(256); int b = random.nextint(256); return new color(r,g,b); } //获取随机数字 产生一个4位数 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); //产生矩形框 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); //随机产生干扰线 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); } //字的颜色和数字 g.setfont(new font("microsoft yahei",font.bold,16)); g.setcolor(color.black); //获取随机数字 string checknum = getnum(); //给字拼接空格 stringbuffer sb = new stringbuffer(); for(int i = 0;i < checknum.length();i++){ sb.append(checknum.charat(i) + " "); } //画出数字 g.drawstring(sb.tostring(), 15, 20); //存入session域中 session.setattribute("checknum", checknum); //例如1010 //将图像以jpeg的形式通过字节流输出 imageio.write(image, "jpeg", response.getoutputstream()); //清除缓存 out.clear(); //放入body中 out = pagecontext.pushbody(); %> </body> </html>
结果如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。