Captcha生成及使用
@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生成及使用的更多相关文章
- captcha ~ 生成验证码图片
验证码在我们的世界中可以保护我们的信息安全的一个保障之一 这就是生成验证码的代码 # 导报 from captcha.image import ImageCaptcha #验证码的包 from ...
- Captcha生成验证码,docker部署时问题
https://blog.csdn.net/huofuman960209/article/details/100738712 Dockerfile FROM openjdk:8-jdk-alpine ...
- ecshop验证码
<?php //仿制ecshop验证码(四位大写字母和数字.背景) //处理码值(四位大写字母和数字组成) //所有的可能的字符集合 $chars = 'ABCDEFGHIJKLMNOPQRST ...
- drf实现图片验证码功能
一.背景 在之前实现过django的图片验证码,有自己实现过的,也有基于django-simple-captcha的,都是基于form表单验证,若自己实现,可以获取相应的标签name便可以获取判断,若 ...
- Yii验证码简单使用及
控制器:(写了貌似也没用,未解决验证码位数:位数可改核心代码) public $layout = false;//隐藏导航 public function actions(){ return [ // ...
- laravel 添加验证码
1. 安装依赖 composer require gregwar/captcha 2.使用 use Gregwar\Captcha\CaptchaBuilder; use DB; use Requ ...
- django 用户注册功能实现
增加views的类 class RegisterView(View): def get(self, request): return render(request, 'register.html', ...
- tensorflow训练验证码识别模型
tensorflow训练验证码识别模型的样本可以使用captcha生成,captcha在linux中的安装也很简单: pip install captcha 生成验证码: # -*- coding: ...
- beego框架(golang)学习验证码
beego框架(golang)学习验证码 登录页面使用验证码 路由设置 /beego_admin_template/routers/router.go get请求页面, post验证用户名密码和验证码 ...
随机推荐
- java工程师的标准
1.技术广度方面至少要精通多门开源技术吧,研究过struts\spring\hibernate等的源码. 2.项目经验方面从头到尾跟过几个大项目,头是指需求阶段,包括需求调研.尾是指上线交付之后,包括 ...
- J2EE到底是什么
目前所有的B/S系统应用可以分为:有状态(statefull)和无状态(stateless)两大类别. 有状态是指在整个系统的处理过程中要保留记住一些信息,而无状态则相反,每次request都是独立的 ...
- coco2d-x 纹理研究
转自:http://blog.csdn.net/qq51931373/article/details/9119161 1.通常情况下用PVR格式的文件来进行图片显示的时候,在运行速度和内存消耗方面都要 ...
- ColorNote.疑难解答
首先感谢你对colornote的支持 在使用此应用的过程中,存在任何问题,请先在此页面查看是否有对应的解决方案[Ctrl + F 搜索] 如果问题无法解决,请在页面下方留言,或者邮件light.z@q ...
- linux下开发c++第二弹--helloworld与makefile
一:hello world sudo vim hello.cpp 输入 g++ -o hello hello.cpp 获得hello 输入 ./hello 运行,显示结果hello world! ...
- Delphi使用FindClass实现动态建立对像(有点像反射)
相关资料:http://www.blogjava.net/nokiaguy/archive/2008/05/10/199739.html { http://www.blogjava.net/nokia ...
- CLR探索应用程序域世界(上):Windbg SOS剖析揭示域世界
在CLR的世界中,有一系列的令人Amazing的技术和架构.其中,CLR对应用程序在内存中内存分配,执行模型,程序之间的交互等一系列的技术,值得每一个致力于DotNet平台的技术人员深究. 编程人员在 ...
- UML图示与代码对照
本文转载:http://www.cnblogs.com/iamlilinfeng/archive/2012/08/29/2662740.html 一.类继承 1 public class Father ...
- UVa 11234 Expressions (二叉树重建&由叶往根的层次遍历)
画图出来后结果很明显 xyPzwIM abcABdefgCDEF sample output wzyxIPM gfCecbDdAaEBF * + - x y z w F B E a A d D b c ...
- #定位系统性能瓶颈# strace & ltrace
strace和ltrace分别相应的是系统调用和库函数调用, 系统调用实际上就是指最底层的一个调用,在linux程序设计里面就是底层调用的意思,面向的是硬件. 而库函数调用则面向的是应用开发的.相当于 ...