震惊:一个简单的验证码实现(附源码,直接上手)

想着做一个验证码,自己之前用前端做出一个, 现在后端搭出一个简单的验证码,

小白一个,大佬可指教

前端界面代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <script>
        /*
            分析:
                点击超链接或者图片,需要换一张
                1.给超链接和图片绑定单击事件
                2.重新设置图片的src属性值

         */
    window.onload = function(){
        //1.获取图片对象
        var img = document.getElementById("checkCode");
        //2.绑定单击事件
        img.onclick = function(){
            //加时间戳:这样的话就可以所更换的图片不会重复
            var date = new Date().getTime();
            img.src = "/day15/checkCodeServlet?"+date;//
        }

    }


    </script>


</head>
<body>
    <img id="checkCode" src="/day15/Servletdemo4" />
    <a id="change" href="">看不清换一张?</a>
</body>
</html>

Java后端的代码,具体什么样式根据自己喜欢而改

package Servlet;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
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("/Servletdemo4")
public class Servletdemo4 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//        response.setContentType("text/html; charset=UTF-8");//如果页面出现乱码,则是字节输出流与浏览器的码表不一致

        ServletOutputStream sos = response.getOutputStream();
        int height = 50;
        int width = 80;
        BufferedImage Image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

        Graphics graphics = Image.getGraphics();//创建一个画笔对象
        graphics.setColor(Color.PINK);//给画笔添加颜色
        graphics.fillRect(0, 0, width, height);//用画笔填充颜色

        graphics.setColor(Color.BLUE);
        graphics.drawRect(0, 0, width - 1, height - 1);

        String str="QWERTYUIOPLKJHGFDSAZXCVBNMqwertyuioplkjhgfdsazxcvbnm0123654789";
//生成随机角标
        graphics.setColor(Color.RED);
        Random random = new Random();
        for (int i = 1; i <=4 ; i++) {
            int index = random.nextInt(str.length());
            char c = str.charAt(index);
            graphics.drawString(c+"", width/6*i,height/2);

        }
        graphics.setColor(Color.green);

        for (int i = 0; i < 10; i++) {
            int x1=random.nextInt(50);
            int x2=random.nextInt(50);
            int y1=random.nextInt(80);
            int y2=random.nextInt(80);
            graphics.drawLine(x1,x2,y1,y2);
        }
        ImageIO.write(Image, "jpg", sos);
        System.out.println("demo4.....");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

你可能感兴趣的:(Java)