java验证码制作思路_Java实现验证码制作之一自己动手

以前弄验证码都是现找现用,下面是自己跟着敲代码弄好的,记录一下,分享给大家。

我这里用的是Servlet ,Servlet代码如下

import java.awt.Color;

import java.awt.Graphics;

import java.awt.image.BufferedImage;

import java.io.IOException;

import java.util.Random;

import javax.imageio.ImageIO;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class ImageServlet extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

BufferedImage bi=new BufferedImage(68,22, BufferedImage.TYPE_INT_RGB);

Graphics g=bi.getGraphics();

Color c=new Color(200,150,255);

g.setColor(c);

g.fillRect(0, 0, 68, 22);//宽高

//设定验证码的字符

char[] ch="QWERTYUIOPASDFGHJKLZXCVBNM0123456789".toCharArray();

Random r=new Random();

int len=ch.length,index;

StringBuffer sb=new StringBuffer();

for(int i=0;i<4;i++){

index=r.nextInt(len);

//设置每个字体的颜色都不一样

g.setColor(new Color(r.nextInt(88),r.nextInt(188),r.nextInt(255)));

g.drawString(ch[index]+"", (i*15)+3,18);//画图

sb.append(ch[index]);//记录验证码

}

req.getSession().setAttribute("piccode", sb.toString());//保存到session作用域当中

ImageIO.write(bi, "JPG", resp.getOutputStream()); //写入到对应的页面

super.doGet(req, resp);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

doGet(req, resp);

}

}

//上面servlet 中把每次生成的验证码都保存在session中

// req.getSession().setAttribute("piccode", sb.toString());

//当用户提交的我们就可以通过

//String code=req.getSession().getAttribute("piccode");

//来取得生成的验证码和用户填写的验证码来对比

//web.xml中的配置

ImageServlet

com.test.servlet.ImageServlet

ImageServlet

/image.do

index.jsp

//index.jsp页面代码

验证码:

  验证码

function relodCode(obj,url){

var time=new Date();

obj.src="/"+url+"?time="+time;

}

效果图(点击验证码刷新)

wPnZCoB55XoFQAAAABJRU5ErkJggg==

上面介绍的是自己来写,但是我们一般用要用的验证码的时候一般都会用一些插件,下一篇来介绍一下 kaptcha验证码的使用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值