@Controller
@RequestMapping("/PictureCheckCode")
public class ServletController { @RequestMapping
public void pictureGenerate( HttpServletRequest req, HttpServletResponse res ) {
try {
MakePicture mp=new MakePicture() ;
String str=mp.drawPicture(60, 20,res.getOutputStream() );
req.getSession().setAttribute("pic", str);
res.getOutputStream().print(str);
}
catch(Exception ex) {
ex.printStackTrace();
}
}
}
<form th:action="@{/login}" method="post">
<div><label> User Name : <input type="text" name="username"/> </label></div>
<div><label> Password: <input type="password" name="password"/> </label></div>
<div><label> Verify: <img src="PictureCheckCode" onclick="this.src='PictureCheckCode?d='+new Date().getTime()"/> </label></div>
<div><input type="submit" value="Sign In"/></div>
</form>
package hello;

import java.awt.Graphics;
import java.awt.Font;
import java.awt.Color;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.util.Random;
import java.io.OutputStream;
import java.io.IOException;
public class MakePicture //产生识别验证图像
{
private char charTable[]={
'a','A','b','B','c','C','d','D' ,'e','E' ,
'f','F','g','G','h','H','i','I','j','J' ,
'0','1','2','3','4','5','6','7','8','9'
};
public String drawPicture(int width,int height,OutputStream os)
{
if(width<=0)
width=100 ;
if(height<=0)
height=60 ; BufferedImage image=new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB) ;
Graphics g=image.getGraphics() ;
g.setColor(Color.LIGHT_GRAY) ;
g.fillRect(0, 0, width, height) ;
g.setColor(new Color(0x5265fd)) ;
g.drawRect(0, 0, width, height) ;
String str ="" ;
for(int x=0;x<4;x++)
{
str+=charTable[(int) (Math.random()*charTable.length)];
} g.drawString(str.substring(0, 1), 0, 15);
g.drawString(str.substring(1, 2), 15, 17);
g.drawString(str.substring(2, 3), 35, 19);
g.drawString(str.substring(3, 4), 50, 16);
Random rand=new Random() ;
for(int i=0;i<10;i++)
{
int x=rand.nextInt(width) ;
int y=rand.nextInt(height) ;
g.drawOval(x, y, 1, 1) ;
}
g.dispose() ;
try {
ImageIO.write(image, "JPEG",os) ;
} catch (IOException e) { e.printStackTrace();
return "" ;
} return str ;
}
}

  

Captcha生成及使用的更多相关文章

  1. captcha ~ 生成验证码图片

    验证码在我们的世界中可以保护我们的信息安全的一个保障之一 这就是生成验证码的代码     # 导报 from captcha.image import ImageCaptcha #验证码的包 from ...

  2. Captcha生成验证码,docker部署时问题

    https://blog.csdn.net/huofuman960209/article/details/100738712 Dockerfile FROM openjdk:8-jdk-alpine ...

  3. ecshop验证码

    <?php //仿制ecshop验证码(四位大写字母和数字.背景) //处理码值(四位大写字母和数字组成) //所有的可能的字符集合 $chars = 'ABCDEFGHIJKLMNOPQRST ...

  4. drf实现图片验证码功能

    一.背景 在之前实现过django的图片验证码,有自己实现过的,也有基于django-simple-captcha的,都是基于form表单验证,若自己实现,可以获取相应的标签name便可以获取判断,若 ...

  5. Yii验证码简单使用及

    控制器:(写了貌似也没用,未解决验证码位数:位数可改核心代码) public $layout = false;//隐藏导航 public function actions(){ return [ // ...

  6. laravel 添加验证码

    1.  安装依赖  composer require gregwar/captcha 2.使用 use Gregwar\Captcha\CaptchaBuilder; use DB; use Requ ...

  7. django 用户注册功能实现

    增加views的类 class RegisterView(View): def get(self, request): return render(request, 'register.html', ...

  8. tensorflow训练验证码识别模型

    tensorflow训练验证码识别模型的样本可以使用captcha生成,captcha在linux中的安装也很简单: pip install captcha 生成验证码: # -*- coding: ...

  9. beego框架(golang)学习验证码

    beego框架(golang)学习验证码 登录页面使用验证码 路由设置 /beego_admin_template/routers/router.go get请求页面, post验证用户名密码和验证码 ...

随机推荐

  1. java工程师的标准

    1.技术广度方面至少要精通多门开源技术吧,研究过struts\spring\hibernate等的源码. 2.项目经验方面从头到尾跟过几个大项目,头是指需求阶段,包括需求调研.尾是指上线交付之后,包括 ...

  2. J2EE到底是什么

    目前所有的B/S系统应用可以分为:有状态(statefull)和无状态(stateless)两大类别. 有状态是指在整个系统的处理过程中要保留记住一些信息,而无状态则相反,每次request都是独立的 ...

  3. coco2d-x 纹理研究

    转自:http://blog.csdn.net/qq51931373/article/details/9119161 1.通常情况下用PVR格式的文件来进行图片显示的时候,在运行速度和内存消耗方面都要 ...

  4. ColorNote.疑难解答

    首先感谢你对colornote的支持 在使用此应用的过程中,存在任何问题,请先在此页面查看是否有对应的解决方案[Ctrl + F 搜索] 如果问题无法解决,请在页面下方留言,或者邮件light.z@q ...

  5. linux下开发c++第二弹--helloworld与makefile

    一:hello world sudo vim hello.cpp 输入  g++ -o hello hello.cpp  获得hello 输入  ./hello 运行,显示结果hello world! ...

  6. Delphi使用FindClass实现动态建立对像(有点像反射)

    相关资料:http://www.blogjava.net/nokiaguy/archive/2008/05/10/199739.html { http://www.blogjava.net/nokia ...

  7. CLR探索应用程序域世界(上):Windbg SOS剖析揭示域世界

    在CLR的世界中,有一系列的令人Amazing的技术和架构.其中,CLR对应用程序在内存中内存分配,执行模型,程序之间的交互等一系列的技术,值得每一个致力于DotNet平台的技术人员深究. 编程人员在 ...

  8. UML图示与代码对照

    本文转载:http://www.cnblogs.com/iamlilinfeng/archive/2012/08/29/2662740.html 一.类继承 1 public class Father ...

  9. UVa 11234 Expressions (二叉树重建&由叶往根的层次遍历)

    画图出来后结果很明显 xyPzwIM abcABdefgCDEF sample output wzyxIPM gfCecbDdAaEBF * + - x y z w F B E a A d D b c ...

  10. #定位系统性能瓶颈# strace &amp; ltrace

    strace和ltrace分别相应的是系统调用和库函数调用, 系统调用实际上就是指最底层的一个调用,在linux程序设计里面就是底层调用的意思,面向的是硬件. 而库函数调用则面向的是应用开发的.相当于 ...