• java结合js获取验证码


    框架springmvc

    1、后台java代码:

    package com.fh.controller.system.secCode;
    
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics2D;
    import java.awt.font.FontRenderContext;
    import java.awt.geom.Rectangle2D;
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.util.Random;
    
    import javax.imageio.ImageIO;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.shiro.SecurityUtils;
    import org.apache.shiro.session.Session;
    import org.apache.shiro.subject.Subject;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import com.fh.util.Const;
    
    /** 
     * 类名称:登录验证码
     * 类描述: 
     * 作者单位: FHqq313596790
     * 联系方式:
     * @version
     */
    @Controller
    @RequestMapping("/code")
    public class SecCodeController {
    
        @RequestMapping
        public void generate(HttpServletResponse response){
            ByteArrayOutputStream output = new ByteArrayOutputStream();
            String code = drawImg(output);
            
            Subject currentUser = SecurityUtils.getSubject();  
            Session session = currentUser.getSession();
            session.setAttribute(Const.SESSION_SECURITY_CODE, code);
            
            try {
                ServletOutputStream out = response.getOutputStream();
                output.writeTo(out);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        private String drawImg(ByteArrayOutputStream output){
            String code = "";
            for(int i=0; i<4; i++){
                code += randomChar();
            }
            int width = 70;
            int height = 25;
            BufferedImage bi = new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR);
            Font font = new Font("Times New Roman",Font.PLAIN,20);
            Graphics2D g = bi.createGraphics();
            g.setFont(font);
            Color color = new Color(66,2,82);
            g.setColor(color);
            g.setBackground(new Color(226,226,240));
            g.clearRect(0, 0, width, height);
            FontRenderContext context = g.getFontRenderContext();
            Rectangle2D bounds = font.getStringBounds(code, context);
            double x = (width - bounds.getWidth()) / 2;
            double y = (height - bounds.getHeight()) / 2;
            double ascent = bounds.getY();
            double baseY = y - ascent;
            g.drawString(code, (int)x, (int)baseY);
            g.dispose();
            try {
                ImageIO.write(bi, "jpg", output);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return code;
        }
        
        private char randomChar(){
            Random r = new Random();
            String s = "ABCDEFGHJKLMNPRSTUVWXYZ0123456789";
            return s.charAt(r.nextInt(s.length()));
        }
    }

    2、前台jsp代码

            <div class="item clearfix">
                <label><span>*</span>验证码:</label>
              <div class="inputBox"><input class="yzm" name="YZM" id="YZM" type="text">
                <img src="static/gysreg/images/pic.jpg" width="127" height="41" id="codeImg" alt="点击更换" title="点击更换"></div>
            </div>

    3、js代码

    $(function(){
        changeCode();
        $("#codeImg").bind("click", changeCode);
    });
    function changeCode() {
        $("#codeImg").attr("src", "code.do?t=" + new Date().getTime());
        $("#YZM").val("");
    }
  • 相关阅读:
    GATK-BWA-MEM handle GRCh38 alternate contig mappings
    GATK使用说明-GRCh38(Genome Reference Consortium)(二)
    GATK使用说明(一)
    [python] 线程池
    [python] 线程锁
    [python] 线程简介
    [linux] 更改目录显示颜色
    限制登录次数
    项目经验总结-twice
    Java泛型底层源码解析--ConcurrentHashMap(JDK1.6/JDK1.7/JDK1.8)
  • 原文地址:https://www.cnblogs.com/zrui-xyu/p/8022774.html
Copyright © 2020-2023  润新知