springboot——kaptcha

springboot——kaptcha导入包: <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version> </dependency>配置类:p…

大家好,又见面了,我是你们的朋友全栈君。

导入包:

		<dependency>
			<groupId>com.github.penggle</groupId>
			<artifactId>kaptcha</artifactId>
			<version>2.3.2</version>
		</dependency>

配置类:

package com.now.community.community.config;

import com.google.code.kaptcha.Producer;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

@Configuration
public class KaptchaConfig {

    @Bean
    public Producer kaptchaProducer() {
        Properties properties = new Properties();
        properties.setProperty("kaptcha.image.width", "100");
        properties.setProperty("kaptcha.image.height", "40");
        properties.setProperty("kaptcha.textproducer.font.size", "32");
        properties.setProperty("kaptcha.textproducer.font.color", "0,0,0");
        properties.setProperty("kaptcha.textproducer.char.string", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");
        properties.setProperty("kaptcha.textproducer.char.length", "4");
        properties.setProperty("kaptcha.noise.impl", "com.google.code.kaptcha.impl.NoNoise");

        DefaultKaptcha kaptcha = new DefaultKaptcha();
        Config config = new Config(properties);
        kaptcha.setConfig(config);
        return kaptcha;
    }

}
Controller
    //验证码
    @RequestMapping(path = "/kaptcha", method = RequestMethod.GET)
    public void getKaptcha(HttpServletResponse response/*, HttpSession session*/) {
        // 生成验证码
        String text = kaptchaProducer.createText();
        BufferedImage image = kaptchaProducer.createImage(text);

        //将验证码存入session
        session.setAttribute("kaptcha", text);

        // 将图片输出给浏览器
        response.setContentType("image/png");
        try {
            OutputStream os = response.getOutputStream();
            ImageIO.write(image, "png", os);
        } catch (IOException e) {
            logger.error("响应验证码失败:" + e.getMessage());
        }
    }

html

<img th:src="@{/kaptcha}" id="kaptcha" style="width:100px;height:40px;" class="mr-2"/>
<a href="javascript:refresh_kaptcha();" class="font-size-12 align-bottom">刷新验证码</a>

js:

jq

善意欺骗,随机数,更新。

<script>
		function refresh_kaptcha() {
			var path = CONTEXT_PATH + "/kaptcha?p=" + Math.random();
			$("#kaptcha").attr("src", path);
		}
</script>

springboot——kaptcha

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150375.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何写一篇可实施的技术方案?

    如何写一篇可实施的技术方案?为何要写这篇博文?一个错误的方案设计重点是什么?拿模板说说总结

    2022年5月11日
    34
  • 普林斯顿体系架构和哈佛架构的区别_边和 普林斯顿

    普林斯顿体系架构和哈佛架构的区别_边和 普林斯顿目前接触到的单片机架构就这两种:普林斯顿体系和哈佛结构:两者的主要区别是:codememory和datememory是不是分开存放。普林斯顿体系是程序存储器和数据存储器集合一体的架构;MEMORY单总线到CPU,这样在一个工作周期中:读指令—译码—-取数据过程中,读指令和取数据两次访问不得不分开按次序执行,效率低;特别是这样的设计使得CPU在访存时遇到了很大的瓶颈,特别是现在C

    2022年10月4日
    0
  • 一个导致502 bad gateway的原因[通俗易懂]

    一个导致502 bad gateway的原因[通俗易懂]最近一段时间系统经常出现502badgateway,一开始没在意,以为是偶发现象,后来越来越多改了nginx配置,问题没有解决观察日志,出现502badgateway时系统并没有出异常,猜测可能系统负载较大,把所有定时任务迁移到另外一台服务器,问题仍然没有解决最后通过Jconsole监控JVM发现每5分钟的第0秒,线程和内存曲线都会降为0,这个时候正好是出

    2022年6月18日
    46
  • matlab分段函数怎么画图_关于MATLAB中分段函数的画法[通俗易懂]

    matlab分段函数怎么画图_关于MATLAB中分段函数的画法[通俗易懂]关于MATLAB中分段函数的画法最近拿到一题关于MATLAB的分段函数画法的题目,我在网上找了挺久,但没发现很多有用的资料.所以感觉很棘手.但是问题还是要解决,所以我就自己整理了些东西,不怕大家见笑.我把这些分段函数分为两类:一.对于y=f(x)这个模型来讲,一类是关于其中一个段是y为常量的一个模型,举例说明.例1.y={0,(x<0);1,(x>=0)};在x>-10&…

    2022年5月31日
    129
  • 【机器学习】支持向量机原理及例题详解

    【机器学习】支持向量机原理及例题详解支持向量机(SVM)详解

    2022年10月8日
    0
  • Java 基础知识总结(下)-王者笔记《收藏版》

    Java 基础知识总结(下)-王者笔记《收藏版》上一篇Java基础知识学习总结之(上)目录三、计算机原理和操作系统内存、CPU、硬盘?Linux基本命令线程和进程的区别?四、数据库基础关系型数据库和非关系型数据库有哪些区别?举例说明数据库索引是做什么用的什么情况需要给字段建立索引?什么情况下索引会失效?慢查询是什么?主从库…

    2022年6月9日
    25

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号