JavaWeb验证码的生成与判断

验证码的生成

首先需要hutool.jar插件 可以去官网下载

hutool官网

先写出一个路径,用于存储验证码图片

package cn.hxl.servlet;

import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.CircleCaptcha;

import javax.servlet.annotation.WebServlet;
import java.io.IOException;

/**
 * @author Admin
 */
@WebServlet("/getCode")
public class GetCodeServlet extends javax.servlet.http.HttpServlet {
    @Override
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        doGet(request, response);
    }

    @Override
    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        // 新建一个captcha验证码图片
        CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(200, 100, 4, 20);
        // 获取图片中的验证码内容
        String code = captcha.getCode();
        // 把验证码存在session中
        request.getSession().setAttribute("code", code);
        // 将图片验证码发送给前端
        captcha.write(response.getOutputStream());

    }
}

然后写jsp页面

<%--
  Created by IntelliJ IDEA.
  User: Admin
  Date: 2021/1/21
  Time: 20:23
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>$Title$</title>
    <script src="js/jquery-3.3.1.js"></script>
</head>
<body>
<input type="text" placeholder="请输入验证码" id="code" name="code"/>
<img src="getCode"><br><br>
<button id="btn">确定</button>

<script>
    $("#btn").click(function(){
        $.ajax({
            url:'/login',
            type:'get',
            data: {"code": $("#code").val()},
            success:function(data){
                alert(data);
            }
        });
    });

</script>
</body>
</html>

这里用到了ajax 用于验证码的比较

新建一个servlet 然后写入一下的来判断

package cn.hxl.servlet;

import cn.hutool.json.JSONUtil;

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.io.IOException;

/**
 * @author Admin
 */
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取用户请求的参数  用户名 密码 验证码
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        // 验证验证码 查看验证码输入的是否正确
        String code = request.getParameter("code");
        String sessionCode = (String) request.getSession().getAttribute("code"); // 获取存储在session里的验证码
        if(code.equals(sessionCode)){
            response.getWriter().println("正确");
        }else{
            response.getWriter().println("错误");
        }
    }
}

效果展示

在这里插入图片描述

在这里插入图片描述

点击切换

在js里面添加以下代码 然后在img中添加一个onclick点击事件就可以实现点击切换验证码了

<img src="getCode" id="img" onclick="getCode()">
function getCode(code){
        $("#img").attr("src", "/getCode?date=" + new Date().getTime());
    }

在这里插入图片描述
然后就完成了!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值