酒吧德州扑克娱乐小程序Java开发实战
2026/5/16 7:22:04
{ "msg": "操作成功", "code": 200, "data": { "uuid": "b71fafb1a91b4961afb27372bd3af77c", "captcha": "data:image/png;base64,iVBORw0KGgoAAAA", "code": "nrew" } }<!-- 验证码 --> <dependency> <groupId>com.github.whvcse</groupId> <artifactId>easy-captcha</artifactId> <version>${captcha.version}</version> </dependency><!--工具包--> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>${hutool.version}</version> </dependency><!--redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>spring: redis: host: 127.0.0.1 port: 6379 database: 0实现方式 | 核心特点 |
继承 HashMap | 基于 Map 结构,通过 put 方法动态添加字段,灵活但无类型约束,依赖键值对操作 |
泛型类(POJO) | 固定字段(code/message/data 等),通过泛型约束数据类型,结构规范、类型安全 |
package com.qcby.community_sp.util; import java.util.HashMap; public class Result extends HashMap<String,Object> { public static Result ok(){ Result result = new Result(); result.put("code", 200); result.put("msg", "操作成功"); return result; } public static Result error(String msg){ Result result = new Result(); result.put("code", 500); result.put("msg", msg); return result; } @Override public Result put(String key, Object value) { super.put(key, value); return this; } }package com.qcby.community_sp.controller; import cn.hutool.core.util.IdUtil; import cn.hutool.crypto.SecureUtil; import com.qcby.community_sp.util.Result; import com.wf.captcha.SpecCaptcha; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.util.HashMap; import java.util.concurrent.TimeUnit; //登录相关业务功能的Controller //统一回调方式,全部返回json到前端 @RestController public class LoginController { @Autowired private RedisTemplate redisTemplate; /** * 获取验证码 * @return */ @GetMapping("/captcha") public Result getCaptcha() { //生成一个验证码 SpecCaptcha specCaptcha = new SpecCaptcha(130,48,4); //获取工具类生成的验证码图片的验证码,并转成大写 String code = specCaptcha.text().toUpperCase(); //用uuid生成一个唯一的key(Redis里面的key),用来在Redis里面存取验证码 String uuid = IdUtil.simpleUUID(); //向Redis里面存数据 redisTemplate.opsForValue().set(uuid,code,120, TimeUnit.SECONDS); HashMap<String,String> res = new HashMap<>(); res.put("uuid",uuid); res.put("captcha",specCaptcha.toBase64()); res.put("code",code); return Result.ok().put("data",res); } }业务场景 | 对应 Redis 数据结构 | RedisTemplate 操作入口 |
单键单值(如 uuid→验证码) | 字符串(String) | opsForValue() |
单键多字段(如 user→name/age) | 哈希(Hash) | opsForHash() |
有序可重复列表(如消息队列) | 列表(List) | opsForList() |