在网站开发过程中我们一般都会为了防止用户连续提交都会提供验证码的功能,简单来说就是生成一个动态图片,在图片中保存一些校验信息,将校验信息放到session中和用户提交的验证码信息进行对比,如果出现错误则要提示验证码错误。

提供一个简单实现的demo。

  1. @Controller
  2. @RequestMapping("/auth")
  3. public class AuthCodeController {
  4. private char[] codeSequence = { 'A', '1','B', 'C', '2','D','3', 'E','4', 'F', '5','G','6', 'H', '7','I', '8','J',
  5. 'K',   '9' ,'L', '1','M',  '2','N',  'P', '3', 'Q', '4', 'R', 'S', 'T', 'U', 'V', 'W',
  6. 'X', 'Y', 'Z'};
  7. @RequestMapping("/code")
  8. public void getCode(HttpServletResponse response,HttpSession session) throws IOException{
  9. int width = 63;
  10. int height = 37;
  11. Random random = new Random();
  12. //设置response头信息
  13. //禁止缓存
  14. response.setHeader("Pragma", "No-cache");
  15. response.setHeader("Cache-Control", "no-cache");
  16. response.setDateHeader("Expires", 0);
  17. //生成缓冲区image类
  18. BufferedImage image = new BufferedImage(width, height, 1);
  19. //产生image类的Graphics用于绘制操作
  20. Graphics g = image.getGraphics();
  21. //Graphics类的样式
  22. g.setColor(this.getColor(200, 250));
  23. g.setFont(new Font("Times New Roman",0,28));
  24. g.fillRect(0, 0, width, height);
  25. //绘制干扰线
  26. for(int i=0;i<40;i++){
  27. g.setColor(this.getColor(130, 200));
  28. int x = random.nextInt(width);
  29. int y = random.nextInt(height);
  30. int x1 = random.nextInt(12);
  31. int y1 = random.nextInt(12);
  32. g.drawLine(x, y, x + x1, y + y1);
  33. }
  34. //绘制字符
  35. String strCode = "";
  36. for(int i=0;i<4;i++){
  37. String rand = String.valueOf(codeSequence[random.nextInt(codeSequence.length)]);
  38. strCode = strCode + rand;
  39. g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
  40. g.drawString(rand, 13*i+6, 28);
  41. }
  42. //将字符保存到session中用于前端的验证
  43. session.setAttribute("authCode", strCode.toLowerCase());
  44. g.dispose();
  45. ImageIO.write(image, "JPEG", response.getOutputStream());
  46. response.getOutputStream().flush();
  47. }
  48. public  Color getColor(int fc,int bc){
  49. Random random = new Random();
  50. if(fc>255)
  51. fc = 255;
  52. if(bc>255)
  53. bc = 255;
  54. int r = fc + random.nextInt(bc - fc);
  55. int g = fc + random.nextInt(bc - fc);
  56. int b = fc + random.nextInt(bc - fc);
  57. return new Color(r,g,b);
  58. }
  59. }
@Controller
@RequestMapping("/auth")
public class AuthCodeController {
private char[] codeSequence = { 'A', '1','B', 'C', '2','D','3', 'E','4', 'F', '5','G','6', 'H', '7','I', '8','J',
'K', '9' ,'L', '1','M', '2','N', 'P', '3', 'Q', '4', 'R', 'S', 'T', 'U', 'V', 'W',
'X', 'Y', 'Z'}; @RequestMapping("/code")
public void getCode(HttpServletResponse response,HttpSession session) throws IOException{
int width = 63;
int height = 37;
Random random = new Random();
//设置response头信息
//禁止缓存
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0); //生成缓冲区image类
BufferedImage image = new BufferedImage(width, height, 1);
//产生image类的Graphics用于绘制操作
Graphics g = image.getGraphics();
//Graphics类的样式
g.setColor(this.getColor(200, 250));
g.setFont(new Font("Times New Roman",0,28));
g.fillRect(0, 0, width, height);
//绘制干扰线
for(int i=0;i&lt;40;i++){
g.setColor(this.getColor(130, 200));
int x = random.nextInt(width);
int y = random.nextInt(height);
int x1 = random.nextInt(12);
int y1 = random.nextInt(12);
g.drawLine(x, y, x + x1, y + y1);
} //绘制字符
String strCode = "";
for(int i=0;i&lt;4;i++){
String rand = String.valueOf(codeSequence[random.nextInt(codeSequence.length)]);
strCode = strCode + rand;
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
g.drawString(rand, 13*i+6, 28);
}
//将字符保存到session中用于前端的验证
session.setAttribute("authCode", strCode.toLowerCase());
g.dispose(); ImageIO.write(image, "JPEG", response.getOutputStream());
response.getOutputStream().flush();
} public Color getColor(int fc,int bc){
Random random = new Random();
if(fc&gt;255)
fc = 255;
if(bc&gt;255)
bc = 255;
int r = fc + random.nextInt(bc - fc);
int g = fc + random.nextInt(bc - fc);
int b = fc + random.nextInt(bc - fc);
return new Color(r,g,b);
}

}

在jsp文件中请求这个图片地址

  1. <label><img type="image" src="/auth/code" id="codeImage"  style="cursor:pointer;"/></label>  
<label><img type="image" src="/auth/code" id="codeImage"  style="cursor:pointer;"/></label>

效果:

aaarticlea/png;base64,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" alt="">

springMVC--动态验证码实现的更多相关文章

  1. 由12306动态验证码想到的ASP.NET实现动态GIF验证码(附源码)

    背景: 12306网站推出“彩色动态验证码机制”,新版验证码不但经常出现字符叠压,还不停抖动,不少人大呼“看不清”,称“那个验证码,是毕加索的抽象画么!”铁总客服则表示:为了能正常购票只能这样.而多家 ...

  2. C#之asp.net 及MVC 生成动态验证码:

    C#之asp.net 及MVC 生成动态验证码: 1.生成验证码字符串 // 随机生成指定长度的验证码字符串private string RandomCode(int length) { string ...

  3. 动态验证码处理UI自动化获取处理

    解决思路两种:1.直接linux catalina.out读取:一分每10s轮询出现新的直接读取返回<br>2.缓存注入cookie,先手动登录获取session 然后通过注入user,p ...

  4. Django之动态验证码的生成

    kind.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  5. java的动态验证码单线设计

    1.java的动态验证码我这里将介绍两种方法: 一:根据java本身提供的一种验证码的写法,这种呢只限于大家了解就可以了,因为java自带的模式编写的在实际开发中是没有意义的,所以只供学习一下就可以了 ...

  6. Servlet仿CSDN动态验证码的生成-带数字和字母

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 一.实现的思路: (1)首先,须要创建一个Servlet.该Servlet通过字节型响应给cl ...

  7. .NET中生成动态验证码

    .NET中生成动态验证码 验证码是图片上写上几个字,然后对这几个字做特殊处理,如扭曲.旋转.修改文字位置,然后加入一些线条,或加入一些特殊效果,使这些在人类能正常识别的同时,机器却很难识别出来,以达到 ...

  8. Linux下使用Google Authenticator配置SSH登录动态验证码

    1.一般ssh登录服务器,只需要输入账号和密码.2.本教程的目的:在账号和密码之间再增加一个验证码,只有输入正确的验证码之后,再输入密码才能登录.这样就增强了ssh登录的安全性.3.账号.验证码.密码 ...

  9. thinkphp 动态验证码

    <?php namespace Home\Controller; use Think\Controller; class TestController extends Controller { ...

  10. iOS本地动态验证码生成-b

    用于ios本地动态生成验证码,效果如下: demo.gif 导入CoreGraphics.framework用于绘制图形 封装UIView,便捷使用,代码如下: AuthcodeView.h #imp ...

随机推荐

  1. PDO连续query()失败问题

    设置了非缓冲查询(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY)以后,连续query会导致下一次结果为false $conn = "mysql:host=127.0. ...

  2. Mysql千万级数据性能调优配置

    背景: 笔者的源数据一张表大概7000多万条,数据大小36G,索引6G,加起来表空间有40G+,类似的表有4张,总计2亿多条 数据库mysql,引擎为innodb,版本5.7,服务器内存256G,物理 ...

  3. Access数据库连接字符串

    <connectionStrings> <add name="connStr" connectionString="server=.;uid=home; ...

  4. css3之 过渡

    早期在Web中要实现动画效果,都是依赖于JavaScript或Flash来完成.但在CSS3中新增加了一个新的模块transition,它可以通过一些简单的CSS事件来触发元素的外观变化,让效果显得更 ...

  5. 编程之法:面试和算法心得(旋转字符串java实现)

    内容全部来自编程之法:面试和算法心得一书,实现是自己写的使用的是java 题目描述 给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串“abcdef”前面的2个字符'a'和'b ...

  6. 廖雪峰Java10加密与安全-2加密算法-1URL编码

    1.URL编码 URL编码是浏览器发送数据给服务器时使用的编码. 如通过百度搜索美女: 编码前:https://www.baidu.com/s?wd=美女 编码后:https://www.baidu. ...

  7. html常用标签6-表单标签

    1.表单的初始化标签 <form action="#" method="get"><!--表单的开始--> </form> ...

  8. yolo-windows检测高分辨率图像及封装应用

    YOLO训练自己的数据集的一些心得 封装yolo-windows为动态链接库 yolo-windows源码 项目开源代码:LargeImageDetect-yolo-windows 由于项目需要,需要 ...

  9. 【python之路45】tornado的用法 (三)

    参考:https://www.cnblogs.com/sunshuhai/articles/6253815.html 一.cookie用法补充 1.cookie的应用场景 浏览器端保存的键值对,每次访 ...

  10. Django项目:CMDB(服务器硬件资产自动采集系统)--04--04CMDB本地(Agent)模式客户端唯一标识(ID)

    # client.py # ————————01CMDB获取服务器基本信息———————— from src import plugins #__init__.py from lib.serializ ...