<input type="text" maxlength="4" tabindex="3" class="ipt_tt ipt_random" name="authorcode" id="authorcode"/>
<img id="randomCodeImg" src="getAuthcode.do" onclick="this.src='getAuthcode.do?id=' + Math.random()" style="vertical-align: middle;" alt="验证码" title="如果看不清楚,请点图片重新生成" />
package com.s.controller;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GraphicsEnvironment;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import com.s.controller.BaseController;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class AuthcodeController extends BaseController {
static final long serialVersionUID = 19881218; //明明的生日
@RequestMapping("/getAuthcode.do")
public void getAuthcode(HttpServletRequest request,HttpServletResponse response) throws IOException{
response.setContentType("image/jpeg");
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
// 在内存中创建图象
int width=60, height=20;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image.getGraphics();
//生成随机类
Random random = new Random();
// 设定背景色
g.setColor(new Color(255,255,255));
g.fillRect(0, 0, width, height);
//设定字体
g.setFont(new Font("Comic Sans MS",Font.PLAIN,18));
//画边框
g.setColor(this.getRndColor());
// g.drawRect(0,0,width-1,height-1);
// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(this.getRndColor());
for (int i=0;i<10;i++) {
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x,y,x+xl,y+yl);
}
// 取随机产生的认证码(4位数字)
String sRand="";
for (int i=0;i<4;i++){
String rand=String.valueOf(random.nextInt(10));
sRand+=rand;
// 将认证码显示到图象中
g.setColor(new Color(127,127,127));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
g.drawString(rand,13*i+6,16);
}
request.getSession().setAttribute("acode",sRand);
// 图象生效
g.dispose();
ServletOutputStream responseOutputStream =response.getOutputStream();
// 输出图象到页面
ImageIO.write(image, "JPEG", responseOutputStream);
//以下关闭输入流!
responseOutputStream.flush();
responseOutputStream.close();
}
// 检查验证码正不正确
@RequestMapping("/isokAuthcode.do")
public void isokAuthcode(){
}
private Color getRndColor(){//给定范围获得随机颜色
return new Color(this.rnd(),this.rnd(),this.rnd());
}
/**随机生成0-255的数字**/
private int rnd(){
java.util.Random random = new java.util.Random();
return random.nextInt(255);
}
/**把除了大小写字母和数字外的字符全过滤掉**/
private char filter(int k){
if(k<65)k=48+(k%10);
if(k>64&&k<96)k=65+(k%26);
if(k>96)k=97+(k%26);
return (char)k;
}
/**取得一个随机字体**/
private String getRndFontNames(){
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] k = ge.getAvailableFontFamilyNames();
java.util.Random r = new java.util.Random();
return k[r.nextInt(k.length)];
}
}
分享到:
相关推荐
验证码生成类验证码生成类验证码生成类验证码生成类验证码生成类验证码生成类验证码生成类验证码生成类验证码生成类验证码生成类验证码生成类
验证码生成类大全
php验证码生成类
分享一个php验证码生成类代码,通过该方法向浏览器输出图像,创建图像背景,设置干扰元素,向图像中随机画出文本,输出图像。
一个php高安全验证码生成类程序,本生成程序需要调用一些字体库,你可以调用你系统自带的一些字体,当然也可以像dedecms一样自己把字体放到一个目录,这样在服务器上也可以使用。
asp.net验证码生成类asp.net验证码生成类asp.net验证码生成类
NULL 博文链接:https://aimilin6688.iteye.com/blog/1256328
WinForm中验证码生成类可以生成随机数和图片对初学者有很大的用处
验证码生成类,支持纯数字验证码,字母数字混合式验证码。
一个php验证码生成类代码,通过该方法向浏览器输出图像,创建图像背景,设置干扰元素,向图像中随机画出文本,输出图像。
简单轻巧的验证码生成工具类。
.NET验证码生成类 源代码 ,自己写的,界面基于winform,但是实际上类也是可以用在web上的
生成验证码图片 java类中获得验证码的方法: session.getAttribute("checkcode"); jsp页面中显示图片的方式: ${pageContext.request.contextPath}/checkcode.jsp"/> 另外在web.xml中配置验证码类的加载: ...
生成验证码并生成验证图片,支持汉字、数字+字母两种模式,验证码生成不重复,有源码,注释完整,适合做项目时选用
图片验证码的生成类 使用于asp.net core 版本的项目中
本次和大家分享的是一个集成1:小写拼音 2:大写拼音 3:数字 4:汉字的验证码生成类,从标题来看感觉很普通的样子,没错的确很普通,只是这个验证码类生成的时候可以通过参数指定验证码返回格式的规则,更主要的是...