框架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 {@RequestMappingpublic 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("");
}

java结合js获取验证码相关推荐

  1. java 返回js_如何基于java或js获取URL返回状态码

    这篇文章主要介绍了如何基于java或js获取URL返回状态码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参fgLAeaGAH考下 描述:使用java或者 ...

  2. java手机注册获取验证码--乐信平台

    乐信手机注册验证服务 BizNumberUtil随机码工具类:当前时间精确到秒+3位数字(此工具包可忽略) package com.java11.crowd.util; import java.tex ...

  3. 小程序:js获取验证码时(倒计时模块)

    代码例子截图最近在上手开发小程序,发现其实小程序要比vue真的要简单太多了,有一套自己的html(WXML),css(WXSS),虽然有些标签不能直接沿用html5的标签来开发,不过内置的标签还是很好 ...

  4. js获取验证码倒计时60s(超简单)

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  5. java,js获取本周和下周开始结束日期

    额,本人第一次下博文,先写一篇看看咋写. 文章目录 前言 一.java下获取本周开始结束日期以及根据某个日期获取本周开始结束日期 二.js获取本周或下周日期 总结 前言 前几天开发时用到了一些获取本周 ...

  6. js 获取验证码倒计时

    1 html 部分 <text :disabled="disabled" @click="getCode">{{ btntext }}</te ...

  7. java和js获取当前天之后或之前7天(任意)日期

    一.获取过去第几天的日期(- 操作) 或者 未来 第几天的日期( + 操作) 16 /** 17 * 获取过去第几天的日期(- 操作) 或者 未来 第几天的日期( + 操作) 18 * 19 * @p ...

  8. java禁止js获取cookie_java中Cookie被禁用后Session追踪问题

    一.服务器端获取Session对象依赖于客户端携带的Cookie中的JSESSIONID数据.如果用户把浏览器的隐私级别调到最高,这时浏览器是不会接受Cookie.这样导致永远在服务器端都拿不到的JS ...

  9. java,js获取数组最大/小值

    js最小值: var minValue = Math.min.apply(null,args[]); js最大值 var maxValue = Math.max.apply(null,args[]); ...

  10. js获取验证码倒计时效果

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

最新文章

  1. “学在清华”清华大学本科教育主题展在校史馆开展
  2. Socket通信原理探讨(C++为例)
  3. 不敢相信,相同 SQL 下 Mybatis 查询结果和数据库竟然不一样!
  4. Python-解决粘包
  5. Flex通用克隆(clone)方法
  6. [云炬创业基础笔记]第二章创业者测试8
  7. MySQL通过添加索引解决线上数据库服务器压力大问题
  8. c++ sleep函数_《PHP扩展开发》-hook-(hook原来的sleep)
  9. 牛逼了!PDF 版本 5000 页 Java 技术栈手册开放下载!
  10. java——获取一个应用程序运行的次数,如果超过5次,给出使用次数已到请注册的提示,并不要再运行程序
  11. php 9000 端口没起来,PHP无法监听9000端口问题/502错误解决办法
  12. 安装labelImg
  13. Java并发编程:进程和线程之由来__进程让操作系统的并发性成为可能,而线程让进程的内部并发成为可能...
  14. lua 遍历删除_lua中table如何安全移除元素
  15. 关于指针的面试题,指向字符串和字符数组的单指针,二级指针,三级指针的使用。
  16. The CUDA compiler identification is unknown 解决
  17. FileZilla的下载与安装以及简单使用(有图解超简单)
  18. DVWA-文件上传与文件包含
  19. 顾客价值层级-名词解释06
  20. 人工蜂群算法求解TSP旅行商问题C++(2020.11.13)

热门文章

  1. 并联串联混合的电压和电流_如何从本质上判断电压表测量谁的电压?
  2. 二重指针、二维数组及二者如何进行赋值
  3. 数据库连接html文件路径,Python+Flash+MySQL+HTML链接数据库查询,pythonflaskmysqlhtml,连库...
  4. 动态规划: 投资分配问题
  5. 【无标题】提示用户输入用户名,然后再提示输入密码,如果用户名 是“admin”并且密码是“88888”,则提示正确,否则,如果 用户名不是admin还提示用户用户名不存在,如果用户名是
  6. log添加 oracle redo_Redo Log之一:理解Oracle redo log
  7. python读取bmp文件,go 读取BMP文件头二进制读取方式
  8. 声明与所在行数不兼容_深度理解:Windows DLL 二进制兼容性探究
  9. Python手动安装 package
  10. spring aop advice