博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java结合js获取验证码
阅读量:6819 次
发布时间:2019-06-26

本文共 2970 字,大约阅读时间需要 9 分钟。

框架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代码

点击更换

3、js代码

$(function(){    changeCode();    $("#codeImg").bind("click", changeCode);});function changeCode() {    $("#codeImg").attr("src", "code.do?t=" + new Date().getTime());    $("#YZM").val("");}

 

转载地址:http://rlszl.baihongyu.com/

你可能感兴趣的文章