JAVA验证码实现

后台实现验证码

用于登录注册验证

实现思路

1.前端思路

a.一个< input> 标签用于填写验证码
b.一个< img>标签用于展示生成的验证码,src属性值绑定后台生成验证码的方法的访问路径(拼接上系统时间)
c.点击可切换验证码,登录失败后可以自动刷新
d.代码实现

<input id="loginCard" type="text" name="code" lay-verify="code"  placeholder="输入验证码"  autocomplete="off" class="layui-input cardInput" >
<img id="loginCode" class="layui-input codeInput"  onclick="this.src=this.src+'?'" src="/kaptcha">

// 刷新验证码
 var url=$("#loginCode").attr("src")+"?s="+ (new Date()).getTime();
 $("#loginCode").attr("src",url); 
	                             

2. 后台思路

使用工具类生成一张验证码图片,把图片上字母放进session中储存,用于登录验证

package com.spb.controller;

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;

import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.spb.common.KaptchaConfig;

@Controller
public class KaptchaController {
	public static final Logger logger = LoggerFactory.getLogger(KaptchaController.class);

	/* 获取验证码图片 */
	@RequestMapping(path = "/kaptcha", method = RequestMethod.GET)
	public void getVerificationCode(HttpServletResponse response, HttpServletRequest request) {

		try {

			int width = 200;

			int height = 69;

			BufferedImage verifyImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

			// 生成对应宽高的初始图片

			String randomText = KaptchaConfig.drawRandomText(width, height, verifyImg);

			// 单独的一个类方法,出于代码复用考虑,进行了封装。

			// 功能是生成验证码字符并加上噪点,干扰线,返回值为验证码字符

			request.getSession().setAttribute("verifyCode", randomText);

			response.setContentType("image/png");// 必须设置响应内容类型为图片,否则前台不识别

			OutputStream os = response.getOutputStream(); // 获取文件输出流

			ImageIO.write(verifyImg, "png", os);// 输出图片流

			os.flush();

			os.close();// 关闭流

		} catch (IOException e) {

			this.logger.error(e.getMessage());

			e.printStackTrace();

		}
	}

}

感谢那些夸奖和鼓励,那些不经意的惦记和突如其来的善意,热爱世间浪漫万物,沿途也为晚霞驻足,嘻嘻。
原文地址:https://www.cnblogs.com/linanana/p/14412619.html