springboot整合easy-captcha实现图片验证码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot整合easy-captcha实现图片验证码相关的知识,希望对你有一定的参考价值。
参考技术A使用
1、导入依赖
在maven仓库中查找,发现只有这个依赖,所以直接复制这个即可
<pre data-language="xml" id="IsjaY" class="ne-codeblock" style="border: 1px solid #e8e8e8; border-radius: 2px; background: #f9f9f9; padding: 16px; font-size: 13px; color: #595959">
<dependency>
<groupId>com.github.whvcse</groupId>
<artifactId>easy-captcha</artifactId>
<version>1.6.2</version>
</dependency></pre>
2、使用
总共有这么多种验证类型
3、测试
<pre data-language="java" id="TG4I5" class="ne-codeblock" style="border: 1px solid #e8e8e8; border-radius: 2px; background: #f9f9f9; padding: 16px; font-size: 13px; color: #595959"> public static void main(String[] args)
返回结果:
<pre data-language="java" id="TwqMn" class="ne-codeblock" style="border: 1px solid #e8e8e8; border-radius: 2px; background: #f9f9f9; padding: 16px; font-size: 13px; color: #595959">//算数验证码返回结果
arithmeticString:3x6+5=?
text:23
图片:data:image/png;base64 ....
//中文返回结果
chineseRes:个动来紧
chineseUrl:data:image/png;base64 ...
</pre>
4、最佳实践
可以结合redis,使用uuid作为key,结果作为value存储起来
<pre data-language="java" id="KxZcD" class="ne-codeblock" style="border: 1px solid #e8e8e8; border-radius: 2px; background: #f9f9f9; padding: 16px; font-size: 13px; color: #595959"> @GetMapping(value = "/code")
public ResponseEntity<Object> getCode()
// 算术类型
ArithmeticCaptcha captcha = new ArithmeticCaptcha(111, 36);
// 几位数运算,默认是两位
captcha.setLen(2);
// 获取运算的结果
String result = "";
try
result = new Double(Double.parseDouble(captcha.text())).intValue() + "";
catch (Exception e)
result = captcha.text();
//生成uuid,用于判断
String uuid = properties.getCodeKey() + IdUtil.simpleUUID();
大三东软暑期实训-springboot整合篇
1.整合mybatis
pom.xml:
<!--
springboot整合mybatis 框架启动器
-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
</dependency>
.yml
spring:
datasource:
url: jdbc:mysql://localhost:3307/db_ldk?characterEncoding=utf8
password: 1234
username: root
driver-class-name: com.mysql.jdbc.Driver
mybatis:
mapper-locations: classpath:mappers/*.xml
2.整合德鲁伊连接池
pom.xml
<!--Druid 数据库连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
.yml:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource #使用druid连接池
url: jdbc:mysql://localhost:3306/store?characterEncoding=utf8
password: root
username: root
driver-class-name: com.mysql.jdbc.Driver
druid: #配置 Druid 的相关参数
# 初始化大小,最小,最大
initial-size: 5
min-idle: 5
max-active: 20
max-wait: 60000 # 配置获取连接等待超时的时间
time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位毫秒
min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存时间
validation-query: SELECT 1 #SELECT 1 FROM sys_user
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true # 打开 PSCache,并且指定每个连接上 PSCache 的大小
max-pool-prepared-statement-per-connection-size: 20
#filters: stat,wall,log4j # 配置监控统计拦截的 Filter,去掉后监控界面 SQL 无法统计,wall 用于防火墙
web-stat-filter: # 配置 DruidStatFilter
enabled: true
url-pattern: /*
exclusions: .js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*
stat-view-servlet: # 配置 DruidStatViewServlet
url-pattern: /druid/*
# IP 白名单,没有配置或者为空,则允许所有访问
allow: 127.0.0.1
# IP 黑名单,若白名单也存在,则优先使用
deny: 192.168.31.253
# 禁用 HTML 中 Reset All 按钮
reset-enable: false
# 登录用户名/密码
login-username: root
login-password: root
3.整合logback 日志
在resources下面创建logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<property name="LOG_FILE_NAME_PATTERN" value="logs/auth.%d{yyyy-MM-dd}.%i.log"/>
<!-- 日志格式 -->
<property name="CONSOLE_LOG_PATTERN"
value="%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%c){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
<property name="FILE_LOG_PATTERN"
value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %c : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
<!--输出到控制台-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!--输出到文件-->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE_NAME_PATTERN}</fileNamePattern>
<!-- 日志保留天数 -->
<maxHistory>366</maxHistory>
<!-- 日志文件上限大小,达到指定大小后删除旧的日志文件 -->
<totalSizeCap>2GB</totalSizeCap>
<!-- 每个日志文件的最大值 -->
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- (多环境配置日志级别)根据不同的环境设置不同的日志输出级别 -->
<springProfile name="default,local">
<root level="info">
<appender-ref ref="console"/>
</root>
<logger name="com.zhl" level="debug"/>
</springProfile>
<springProfile name="dev,test">
<root level="info">
<appender-ref ref="console"/>
<appender-ref ref="file"/>
</root>
<logger name="com.zhl" level="debug"/>
</springProfile>
<springProfile name="product,pre">
<root level="info">
<appender-ref ref="console"/>
<appender-ref ref="file"/>
</root>
<logger name="com.zhl" level="debug"/>
</springProfile>
</configuration>
4.整合jsp
pom.xml:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope><!--去除打包-->
</dependency>
5.整合mybatis-plus
注释掉mybatis-spring-boot-starter
的依赖
<!--spring整合mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.6</version>
</dependency>
.yml
#mybatis-plus的配置
mybatis-plus:
type-aliases-package: edu.xlh.springboot0624_v2.pojo #配置实体别名
mapper-locations: classpath:mappers/*.xml
configuration:
map-underscore-to-camel-case: true #自动开启驼峰规则映射
6.配置视图解析器:
mvc:
view:
prefix: /WEB-INF/
suffix: .jsp
7.
与jsp不共存
pom.xml
<!--springboot整合thymeleaf模板技术-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
/templates/.html
8.热部署
pom.xml
<!--支持热部署 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
ctrl+alt+shift+/
9.项目打包
SpringBoot项目在打包的时候,需要考虑一个问题就是,项目是否有jsp页面。如果有jsp页面需要将项目打成war包。如果没有jsp的可以将项目打成jar包(html/thymeleaf)
D盘,java -jar 后面名字打几个再Tab补全
java -jar springboot0624_v2-0.0.1-SNAPSHOT.jar
以上是关于springboot整合easy-captcha实现图片验证码的主要内容,如果未能解决你的问题,请参考以下文章