1.简单的验证码-java

验证码

1 手写验证码

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @author : code1997
 * @date :2020-09-2020/9/11 12:14
 */
public class Demo01 {
    public static void main(String[] args) throws IOException {
        //1.创建一个画板
        BufferedImage bufferedImage = new BufferedImage(200, 40, BufferedImage.TYPE_INT_RGB);
        //2.创建一个笔
        Graphics2D graphics = (Graphics2D)bufferedImage.getGraphics();
        //3.选背景色
        graphics.setColor(Color.WHITE);
        //4.画背景
        graphics.fillRect(1, 1, 198, 38);
        //5.选字体颜色
        graphics.setColor(Color.black);
        //6.创建font指定字体样式
        Font font = new Font(null, Font.BOLD, 30);
        graphics.setFont(font);
        //7.设置要显示的信息
        String yzm="中国";
        for (int i = 0; i < yzm.length(); i++) {
            //7.1将字写到画板上去
            graphics.drawString(yzm.charAt(i)+"",50+i*40 , 30);
            //7.2画干扰线
            graphics.drawLine(20, 5, 160, 35);
        }
        //8.创建一个文件输出流
        FileOutputStream fileOutputStream = new FileOutputStream("e:/yzm.jpg");
        //9.将内存中的图输出到目的文件中
        ImageIO.write(bufferedImage, "JPEG", fileOutputStream);
    }
}

显示效果:

image-20201103170213234

2 使用谷歌的验证码-推荐使用

1 导入jar包: kaptcha-2.3.2.jar

2 配置servlet

<servlet>
    <servlet-name>KaptchaServlet</servlet-name>
    <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>KaptchaServlet</servlet-name>
    <url-pattern>/kaptcha.jpg</url-pattern>
</servlet-mapping>

3 前端页面+验证

<img id="codeImg" alt="验证码"  style="float: right; margin-right: 40px;width: 110px;height: 30px" src="<c:url value="/kaptcha.jpg"/>">

//点击切换图片,加上时间防止缓存
$("#codeImg").click(function () {
	this.src="<c:url value="/kaptcha.jpg?times="/>"+new Date();
})

4 访问:http://localhost:8080/16_temp/kaptcha.jpg

image-20201103170301699

5 后台获取验证码的值:

String code = (String)session.getAttribute(Constants.KAPTCHA_SESSION_KEY);

5 过程分析:

image-20201103170321884

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值