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验证用户名密码和验证码 ...
随机推荐
- Nginx和Tengine解决高并发和高可用,而非推荐Apache
什么是Nginx 什么是Tengine 看看国内大公司在用Nginx和Tengine吗? 步骤一:进入 https://www.taobao.com/,按F12.可看到 有很多APP对淘宝进行请求. ...
- mysql查询数据库大小和表
每个mysql都有一个库information_schema,里面有一张表TABLES存储了所有数据库表的信息,因此,可以从这张表中查看数据库大小和表大小 查询数据库大小 ,),'GB') as da ...
- 嵌入式LINUX入门到实践(二)
这篇中将围绕韦东山LINUX第二部分教程源码,对IIC协议进行程序实现上的分析. /* I2C registers */#define IICCON (*(volatile unsigned ...
- 从最简单的HelloWorld理解MVP模式
版权声明:本文为博主原创文章,转载请注明出处:http://www.cnblogs.com/joy99/p/6116855.html 大多数编程语言相关的学习书籍,都会以hello,world这个典型 ...
- 一个简单的hibernate项目
准备工作 工具准备 hibernate3.5.3 Eclipse Java EE IDE for Web Developers.Version: Helios MySQL5.5 环境配置搭建 安装并配 ...
- ubuntu为IDE(Eclipse WebStorm)添加桌面快捷方式
在ubuntu15.10环境配置webstorm和eclipse的时候会下载官网上编译好的包, bin目录下面会有一个.sh文件(linux版本), 那么一般情况下,执行 ./sh就会启动IDE, 但 ...
- Failed to load session “ubuntu” -- 12.04
在使用ubuntu 12.04的时候,之前不喜欢Unity桌面,就按照网上提示的安装了Gnome桌面,并且成功了! 可是,最近又想把Unity装回来,心想,这不就是安装一软件的活嘛,很简单!于是就卸载 ...
- 使用Unity制作游戏关卡的教程(二)
转自:http://gamerboom.com/archives/75554 作者:by Matthias Zarzecki 本文是“使用Unity制作<The Fork Of Truth> ...
- PostgreSQL的 initdb 源代码分析之十九
继续分析: setup_dictionary(); 展开: 其中: cmd 是:"/home/pgsql/project/bin/postgres" --single -F -O ...
- C++ struct与class
1.相对于C中struct,C++做了很大的扩充.基本上和class 差不多.只有一些细节上的差别. 2.对于成员的默认访问权限,class是private,struct是public.需要注意的是, ...