首先,导入jedis依赖,springboot内置了jedis,所以无需指定jedis版本
<!--jedis依赖 使用redis-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
redis相关环境: redis-5.0.0
redis客户端:redis-desktop-manager-0.8.2.3849(1)
在java里使用jedis步骤
做一个jedis配置
@Configuration
public class RedisConfig {
@Value("${spring.redis.port}")
private int port;
@Value("${spring.redis.jedis.pool.max-idle}")
private int maxIdle;
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.password}")
private String password;
@Bean
public JedisPool jedisPool() {
// 连接池配置参数
GenericObjectPoolConfig config = new GenericObjectPoolConfig();
config.setMaxIdle(maxIdle);
// 连接池
JedisPool jedisPool = new JedisPool(config, host, port, 2000, password);
return jedisPool;
}
}
创建一个JedisUtils工具类,主要用于获取jedis资源和释放jedis
@Component
public class JedisUtils {
@Autowired
private JedisPool jedisPool;
/**
* 获取jedis资源
*
* @return
*/
public Jedis getJedis() {
Jedis jedis = jedisPool.getResource();
return jedis;
}
/**
* 释放jedis
*
* @param jedis
*/
public void close(Jedis jedis) {
if (jedis != null) {
jedis.close();
}
}
}
controller层,实现随机生成验证码,检查验证码是否正确
@Controller
public class CodeController {
@Autowired
private JedisUtils jedisUtils;
/**
* 判断验证码是否一致,同时做安全防护处理
* @param code
* @param inputCode
* @return 1正确,-1错误,-2连续输入错误五次,限制两分钟
*/
@ResponseBody
@RequestMapping("checkCode")
public String checkCode(String code, String inputCode) {
if (!code.equals(inputCode)) {
Jedis jedis = jedisUtils.getJedis();
if (jedis.get("checkNum") == null) {
jedis.set("checkNum", "0");
jedis.expire("checkNum", 120);
}
jedis.incr("checkNum");
if (Integer.parseInt(jedis.get("checkNum")) == 5) {
jedis.del("checkNum");
return "-2";
}
return "-1";
} else {
return "1";
}
}
/**
* 返回六位数字验证码,同时做安全防护处理
* @return
*/
@ResponseBody
@RequestMapping("sendCode")
public String sendCode() {
String code = getRandomCode();
Jedis jedis = jedisUtils.getJedis();
// 判断num是否存在 不存在就创建 并设置过期时间60秒
if (jedis.get("num") == null) {
jedis.set("num", "0");
jedis.expire("num", 60);
}
jedis.incr("num");
// 一分钟内输入三次 限制获取验证码 两分钟
if (Integer.parseInt(jedis.get("num")) == 3) {
jedis.del("num");
return "-1";
}
jedis.setex("code", 20, code);
return code;
}
/**
* 随机生成六位数验证码
* @return
*/
public String getRandomCode() {
Random random = new Random();
String code = String.valueOf(random.nextInt(1000000));
if (code.length() != 6) {
getRandomCode();
}
return code;
}
}
在页面上通过ajax发送请求
function binding() {
var inputCode = $("#code1").val();
$.ajax({
url: "checkCode",
type: "POST",
data: {"code": code, "inputCode": inputCode},
success: function (data) {
......
省略逻辑处理
}
}