栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

redis验证码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

redis验证码

redis验证码的实现
  1. 输入手机号,点击发送后随机生成6位数字码,3分钟有效
  2. 输入验证码,点击验证,返回成功或者失败
  3. 每个手机号每天只能输入3次
    实现思路:
  4. 在0号数据库创建手机号,时间以及次数
    我们在进行验证码发送的时候,首先考虑的是这个手机号是否存在
    存在 —今日发送了几次了 大于3次
    小于3次,生成验证码
    不存在,就创建这个手机号 ,并且生成验证码
  5. 在1号数据库创建手机号,以及验证码
    代码如下
    index.jsp
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>



   JSP - Hello World
   //需要引入jquery
   


<%= "Hello World!" %>


Hello Servlet


sevlet代码如下

package com.example.servlet;

import com.alibaba.fastjson.JSON;
import redis.clients.jedis.Jedis;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;

@WebServlet(name = "Servlet2", value = "/Servlet2")
public class Servlet2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setCharacterEncoding("utf-8");
        request.setCharacterEncoding("utf-8");
        //设置时间格式
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        //获取当前一个时间
        String date = simpleDateFormat.format(new Date());
        Map map = new HashMap<>();
        PrintWriter writer = response.getWriter();
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        jedis.auth("123");


        String type = request.getParameter("type");
        if(type!=null&&type.equals("login")){
           String phone2 =request.getParameter("phone");
           String yz=request.getParameter("yz");
           jedis.select(6);
           String s1 = jedis.get(phone2);
           if(s1==null){
               map.put("msg","验证码过期了");
               System.out.println("验证码过期了");
           }else if (s1.equals(yz)){
               map.put("msg","登录成功");
               System.out.println("登录成功");
           }else{
               map.put("msg","验证码错误");
               System.out.println("验证码错误");
           }
           String s2=JSON.toJSonString(map);
           writer.print(s2);
           writer.flush();
        }
        else{
            jedis.select(5);
            String phone = request.getParameter("phone");
            System.out.println(phone+"1111111111111111111111111111111");
            Boolean exists = jedis.exists(phone);
            if(exists){
                String lindex1 = jedis.lindex(phone, 0);
                if (lindex1.equals(date)){
                    int lindex = Integer.parseInt(jedis.lindex(phone, 1));
                    if(lindex>=3){
                        map.put("msg","今日次数已超过三次,请明天在发送");
                        //转换为json
                        String s1 = JSON.toJSonString(map);
                        //写出
                        writer.print(s1);
                        writer.flush();

                        System.out.println("今日次数已超过三次,请明天在发送");
                        //必须加上return,超过三次下面的代码就无需执行了
                        return;
                    }else{
                        lindex ++;
                        jedis.lset(phone,1,lindex+"");
                    }
                }else {
                    jedis.del(phone);
                    jedis.rpush(phone,date,"1");
                }

            }else {
                jedis.rpush(phone,date,"1");
            }
            Random random = new Random();
            String code="";
            for (int i=0;i<6;i++){
                code += random.nextInt(10);
            }
            jedis.select(6);
            jedis.set(phone,code);
            jedis.expire(phone,60);
            map.put("msg",code);
            String s =JSON.toJSonString(map);
            writer.print(s);
            writer.flush();
        }
    }
}

依赖引入

  
      com.alibaba
      fastjson
      1.2.60
  
  
      redis.clients
      jedis
      3.2.0
  
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/324872.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号