javaweb案例-验证码功能的实现

版权声明:转发者请注明地址哦-----kuls的博客-一个正在疯狂学习的大学生- https://blog.csdn.net/qq_36547531/article/details/82250477

最近学javaweb,来做个笔记记录一下。

创建一个code.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>切换验证码</title>
</head>
<body>

</body>
<center>

    <h2>切换验证码</h2>

    <script>
        // 获取identity元素
        // 为了让浏览器发送请求到servlet, 所以一定要改变src
        function changeImageCode() {
            document.getElementById('identity').src='code?ts='+new Date().getTime();

        }
    </script>

    <image src="code" id="identity"></image>
    <input type="button"  value="看不清验证码" id="btn" onclick="changeImageCode()"/>
</center>

</html>

然后创建一个servlet

package cn.kuls.demo1;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

@WebServlet(name = "yzmServlet",urlPatterns = "/code")
public class yzmServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        int width = 100;
        int height = 30;
        String data = "asdsdsd1212f5fd";
        Random random = new Random();

        BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
        Graphics graphics = image.getGraphics();
        graphics.setColor(Color.gray);//这一次设置矩形颜色
        graphics.fillRect(0,0,width,height);//矩形绘制
        graphics.setColor(Color.BLACK);//这一次设置即将绘制的字符颜色
        for(int i = 0;i<4;i++){
            int position = random.nextInt(data.length());
            String substring = data.substring(position, position + 1);//随机截取字符串
            graphics.drawString(substring,width/5*(i+1),15); //调用drawString,在图片上绘制字符
        }
        ImageIO.write(image,"jpg", response.getOutputStream()); //将图片格式化到输出流中
    }
}

然后就实现了!
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_36547531/article/details/82250477