JavaWeb购物系统(三)登陆页面添加验证码

登陆页面添加验证码

这里我们的验证码使用了simplecaptcha这个开源的组件

jar包下载

simplecaptcha.jar下载地址

基本使用

simplecaptcha提供了四种形式的验证码。

  1. StickyCaptchaServlet:在这里插入图片描述

  2. SimpleCaptchaServlet:在这里插入图片描述

  3. ChineseCaptchaServlet:这个验证码还没测试 _

  4. ``AudioCaptchaServlet`:可以为视障用户提供音频验证码

这里我用的是SimpleCaptchaServletStickyCaptchaServlet在页面刷新的时候,他不会刷新验证码,而且我加的js(点击验证码刷新也对SimpleCaptchaServlet不生效)

配置Servlet

根据上面提到的,根据自己的需要的验证码来配置相应的Servlet。

我们这里以SimpleCaptchaServlet为例:

  • 配置web.xml
<servlet>
    <servlet-name>SimpleCaptchaServlet</servlet-name>
    <servlet-class>nl.captcha.servlet.SimpleCaptchaServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>SimpleCaptchaServlet</servlet-name>
    <url-pattern>/simpleImg</url-pattern>
</servlet-mapping>
  • jsp页面或者html
// 在你的html页面引入img标签,src地址是你Servlet中配的地址
<img src="simpleImg" title="看不清,换一张" id="securityCode"/>
  • js刷新代码
// 这里用的jquery
$("#securityCode").click(
        function () {
          // 刷新验证码,加随机数是为了防止缓存
          $(this).attr('src', 'simpleImg?' + Math.floor(Math.random() * 100))
        })
// JavaScript代码
var sc = document.getElementById("securityCode");
sc.onclick = function () {
    sc.setAttribute("src","simpleImg?" + Math.floor(Math.random() * 100))
}
  • 这里给src属性设置属性值的时候,加上Math.floor(Math.random() * 100是为了防止缓存,导致刷新不起作用。
  • js和jquery只需要有一个就行,当然前提是你得懂点前端的基础。
  • tab java代码
package com.securityCode;
import com.google.gson.Gson;
import nl.captcha.Captcha;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;

public class CheckSecurityCode extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /**
         * 处理验证码
         */
        HttpSession session = req.getSession();
        Captcha captcha = (Captcha) session.getAttribute(Captcha.NAME);
        String answer = req.getParameter("answer");
        resp.setContentType("text/html;charset=utf-8");
        if (captcha.isCorrect(answer)) {
            Systom.out.println("验证码正确");
        }else {
            Systom.out.println("验证码错误");
        }
    }
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }
}

在这里插入图片描述

当然simplecaptcha的功能还不止这么简单。除此之外它还支持自定义验证码,详细的内容请移步simplecaptcha官网

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艺术留白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值