- 输入手机号,点击发送后随机生成6位数字码,3分钟有效
- 输入验证码,点击验证,返回成功或者失败
- 每个手机号每天只能输入3次
实现思路: - 在0号数据库创建手机号,时间以及次数
我们在进行验证码发送的时候,首先考虑的是这个手机号是否存在
存在 —今日发送了几次了 大于3次
小于3次,生成验证码
不存在,就创建这个手机号 ,并且生成验证码 - 在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 fastjson1.2.60 redis.clients jedis3.2.0



