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();
    
    		}
    	}
    
    }
    
    
    感谢那些夸奖和鼓励,那些不经意的惦记和突如其来的善意,热爱世间浪漫万物,沿途也为晚霞驻足,嘻嘻。
  • 相关阅读:
    我的Java设计模式-原型模式
    我的Java设计模式-观察者模式
    我的Java设计模式-建造者模式
    我的Java设计模式-单例模式
    我的Java设计模式-工厂方法模式
    菜鸟必备教程,ajax与xml交互传输数据。
    javascript Date format(js日期格式化)
    用script实现内容显示,并使用json传输数据
    使用jquer获取当前时间,并赋值到input上。
    利用js获取时间并输出值
  • 原文地址:https://www.cnblogs.com/linanana/p/14412619.html
Copyright © 2011-2022 走看看