import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.wf.captcha.utils.CaptchaUtil;
import cn.ctg.admin.service.TUserService;
import cn.ctg.common.response.ResponseCode;
import cn.ctg.common.response.ResponseData;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
/**
* @author:dongjing.chen
* @Description:
* @date:2022年8月17日
*/
@RestController
@RequestMapping("tCaptcha")
@Slf4j
public class TCaptchaController {
@Autowired
private TUserService tUserService;
@ApiOperation(value = "获取后台登录验证码", notes = "获取后台登录验证码")
@GetMapping("captcha")
public void captcha(HttpServletRequest request, HttpServletResponse response) throws Exception {
//防刷验证码限制,一分钟内刷超过30次限制访问
if (!tUserService.isLimit(request,30)) {
ResponseData<Object> responseData = ResponseData.error(ResponseCode.IS_LIMIT_ACC.getCode(),
ResponseCode.IS_LIMIT_ACC.getMessage());
tUserService.resNoPermiss(response, responseData);
return ;
}
// 设置位数
// CaptchaUtil.out(4, request, response);
// 设置宽、高、位数
CaptchaUtil.out(130, 48, 4, request, response);
// 使用gif验证码
//GifCaptcha gifCaptcha = new GifCaptcha(130, 48, 4);
response.setContentType("image/gif"); //设置请求以及响应的内容类型以及编码方式
response.setCharacterEncoding("UTF-8");
//CaptchaUtil.out(gifCaptcha, request, response);
String captcha = (String) request.getSession().getAttribute("captcha");
log.info("本次生成验证码成功:"+captcha);
}
}
这里可以生成动态的gif图验证码也可以生成静态的验证码
效果:
验证验证码是否正确:
if (!CaptchaUtil.ver(verCode, request)) {
log.info("验证码验证失败");
return ResponseData.error(TUserConstant.VERCODE_ERROE);
}
上面的代码有防刷的逻辑,需要屏蔽掉。才能使用。
需要引用的maven包
<!--验证码 -->
<dependency>
<groupId>com.github.whvcse</groupId>
<artifactId>easy-captcha</artifactId>
<version>1.6.2</version>
</dependency>
Java开发中常用的工具类有很多,以下是20个常用的工具类的简单介绍:
- Apache Commons Lang: 提供了很多用于操作和处理字符串、基础数据类型和集合的工具类。
- Apache Commons IO: 提供了一系列用于处理IO操作的实用程序和工具类。
- Google Guava: 提供了大量的实用工具类,包括缓存、并发库、字符串处理、I/O操作等。
- Joda-Time: 一个强大的日期和时间库,用于处理日期、时间、日期时间等。
- Apache Commons Collections: 提供了很多用于操作和处理集合的实用程序和工具类。
- SLF4J (Simple Logging Facade for Java): 是一个简单日志记录门面,为各种日志框架提供统一接口。
- Logback: 是SLF4J的一个实现,提供了强大的日志功能。
- Apache Commons Validator: 提供了数据验证的功能,如电子邮件、URL、IP地址等。
- Apache Commons CSV: 用于读取和写入CSV文件。
- Jackson: 用于处理JSON数据的库。
- JSON-simple: 另一个处理JSON数据的库。
- Junit: Java单元测试框架,用于编写和执行测试用例。
- Mockito: 一个模拟框架,用于创建和操作模拟对象。
- PowerMock: 用于模拟静态方法、构造函数、final类和方法等。
- Apache Commons Math: 提供数学公式和算法的库。
- Apache Commons CSV: 用于读取和写入CSV文件的库。
- Apache Commons Lang3: 提供了一系列用于操作和处理字符串、基础数据类型和集合的工具类。
- Google Gson: 用于将Java对象转换为JSON字符串,或将JSON字符串转换为Java对象。
- Hibernate Validator: 提供Bean Validation规范(JSR 380)的实现,这是一个用于Java Bean属性约束的API。
- Spring Boot Starter: 提供快速创建Spring Boot项目的工具类和依赖管理,简化Spring Boot项目的配置和开发过程。
以上是一些常用的Java开发工具类,它们在开发过程中可以提高开发效率和代码质量。当然,还有很多其他的工具类可以根据具体需求选择使用。