zoukankan      html  css  js  c++  java
  • 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();
    
    		}
    	}
    
    }
    
    
    感谢那些夸奖和鼓励,那些不经意的惦记和突如其来的善意,热爱世间浪漫万物,沿途也为晚霞驻足,嘻嘻。
  • 相关阅读:
    WampServer Mysql配置
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 前10名
  • 原文地址:https://www.cnblogs.com/linanana/p/14412619.html
Copyright © 2011-2022 走看看