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 {@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获取验证码相关推荐
- java 返回js_如何基于java或js获取URL返回状态码
这篇文章主要介绍了如何基于java或js获取URL返回状态码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参fgLAeaGAH考下 描述:使用java或者 ...
- java手机注册获取验证码--乐信平台
乐信手机注册验证服务 BizNumberUtil随机码工具类:当前时间精确到秒+3位数字(此工具包可忽略) package com.java11.crowd.util; import java.tex ...
- 小程序:js获取验证码时(倒计时模块)
代码例子截图最近在上手开发小程序,发现其实小程序要比vue真的要简单太多了,有一套自己的html(WXML),css(WXSS),虽然有些标签不能直接沿用html5的标签来开发,不过内置的标签还是很好 ...
- js获取验证码倒计时60s(超简单)
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...
- java,js获取本周和下周开始结束日期
额,本人第一次下博文,先写一篇看看咋写. 文章目录 前言 一.java下获取本周开始结束日期以及根据某个日期获取本周开始结束日期 二.js获取本周或下周日期 总结 前言 前几天开发时用到了一些获取本周 ...
- js 获取验证码倒计时
1 html 部分 <text :disabled="disabled" @click="getCode">{{ btntext }}</te ...
- java和js获取当前天之后或之前7天(任意)日期
一.获取过去第几天的日期(- 操作) 或者 未来 第几天的日期( + 操作) 16 /** 17 * 获取过去第几天的日期(- 操作) 或者 未来 第几天的日期( + 操作) 18 * 19 * @p ...
- java禁止js获取cookie_java中Cookie被禁用后Session追踪问题
一.服务器端获取Session对象依赖于客户端携带的Cookie中的JSESSIONID数据.如果用户把浏览器的隐私级别调到最高,这时浏览器是不会接受Cookie.这样导致永远在服务器端都拿不到的JS ...
- java,js获取数组最大/小值
js最小值: var minValue = Math.min.apply(null,args[]); js最大值 var maxValue = Math.max.apply(null,args[]); ...
- js获取验证码倒计时效果
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
最新文章
- “学在清华”清华大学本科教育主题展在校史馆开展
- Socket通信原理探讨(C++为例)
- 不敢相信,相同 SQL 下 Mybatis 查询结果和数据库竟然不一样!
- Python-解决粘包
- Flex通用克隆(clone)方法
- [云炬创业基础笔记]第二章创业者测试8
- MySQL通过添加索引解决线上数据库服务器压力大问题
- c++ sleep函数_《PHP扩展开发》-hook-(hook原来的sleep)
- 牛逼了!PDF 版本 5000 页 Java 技术栈手册开放下载!
- java——获取一个应用程序运行的次数,如果超过5次,给出使用次数已到请注册的提示,并不要再运行程序
- php 9000 端口没起来,PHP无法监听9000端口问题/502错误解决办法
- 安装labelImg
- Java并发编程:进程和线程之由来__进程让操作系统的并发性成为可能,而线程让进程的内部并发成为可能...
- lua 遍历删除_lua中table如何安全移除元素
- 关于指针的面试题,指向字符串和字符数组的单指针,二级指针,三级指针的使用。
- The CUDA compiler identification is unknown 解决
- FileZilla的下载与安装以及简单使用(有图解超简单)
- DVWA-文件上传与文件包含
- 顾客价值层级-名词解释06
- 人工蜂群算法求解TSP旅行商问题C++(2020.11.13)
热门文章
- 并联串联混合的电压和电流_如何从本质上判断电压表测量谁的电压?
- 二重指针、二维数组及二者如何进行赋值
- 数据库连接html文件路径,Python+Flash+MySQL+HTML链接数据库查询,pythonflaskmysqlhtml,连库...
- 动态规划: 投资分配问题
- 【无标题】提示用户输入用户名,然后再提示输入密码,如果用户名 是“admin”并且密码是“88888”,则提示正确,否则,如果 用户名不是admin还提示用户用户名不存在,如果用户名是
- log添加 oracle redo_Redo Log之一:理解Oracle redo log
- python读取bmp文件,go 读取BMP文件头二进制读取方式
- 声明与所在行数不兼容_深度理解:Windows DLL 二进制兼容性探究
- Python手动安装 package
- spring aop advice