使用servlet生成图片验证码
来源:互联网 发布:联合国五常知乎 编辑:程序博客网 时间:2024/04/29 11:58
以前觉得做图片验证码是个很复杂的事情,关键问题是没有想清楚到底是怎样实现的,今天看javaweb王者归来的时候看到了这个方法,于是记录下来,供以后使用。
将核心代码写一下吧。
首先是要使用到的字符,
public static final char CHARS{'2','3'....};这个自己定义就好了,尽量不要出现不好区分的字母,像0和o。
然后定义一个随机数类,Random random=new Random();
定义一个生成随即序列的方法。
public static String getString()
{
StringBuffer buffer=new StringBuffer();
for(int i=0;i<6;i++)
buffer.append(CHARS[random.nextInt(CHARS.length)]);
return buffer.toString();
}
定义生成颜色的类
public static Color getColor()
{
return new Color(random.nextInt(255),random.nextInt(255),random.nextInt(255));
}
获取颜色的反色
public static Color getReverseColor(Color cc)
{
return new Color(255-cc.getRed(),255-cc.getGreen(),255-cc.getBlue());
}
在doGet或者是doPost方法中操作
response.setContentType("image/jpge");
String string=getString();
request.getSession(true).setAttribute("string",string);
int width=100;
int height=30;
Color color=getColor();
Color reverse=getReverseColor(color);
BufferedImage bi=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics2D gg=bi.createGraphics();
gg.setFont(new Font(Font.SANS_SERIF,Font.BOLD,16));
gg.setColor(color);
gg.fillRect(0,0,width,height);
gg.serColor(reverse);
gg.drawString(string,18,20);
//加入一些噪声,不超过100个
for(int i=0,n=random.nextInt(100);i<n;i++)
gg.drawRect(random.nextInt(width),random.nextInt(height),1,1);
ServletOutputStream out=response.getOutputStream();
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);
encoder.encode(bi);
out.flush();
然后直接访问这个servlet就可以了,因为一些原因,我没有办法粘贴源代码,这些都是敲进去的。还是直接参考书上的代码可能会更全些吧。
- 使用servlet生成图片验证码
- 使用Servlet生成验证码图片
- servlet生成验证码图片
- servlet生成验证码图片
- Servlet生成验证码图片
- Servlet生成图片验证码
- Servlet生成图片验证码
- Servlet生成验证码图片
- servlet生成图片验证码
- Servlet生成验证码图片
- Servlet 生成验证码图片
- 【验证码】servlet 生成 验证码图片
- 【Java】使用Servlet生成随机验证码图片
- Java Web:使用Servlet生成网页随机图片验证码
- servlet 生成验证图片
- servlet 生成动态图片验证码
- JavaBean+Servlet生成图片验证码
- JavaBean+Servlet生成图片验证码
- 悟透JavaScript之奇妙的对象
- 远程DLL
- UVA10387-台球
- 【ZOJ3587】Marlon's String——白四爷×KMP 白濑肆の算法完全解读KMP篇 KMP来袭第二弹前缀什么的果然最讨厌了!【1.0%达成!】
- ASP.Net 之 System.Collections.Generic 下的容器类
- 使用servlet生成图片验证码
- UVA10392-大数分解
- staic(静态)变量的作用
- UVA10420-战利品列表
- UVA10474-弹珠在哪里
- linux下查看软件版本信息
- UVA10494-如果我们返回童年
- Grails WEB层 过滤器
- WCF(四) Configuration file (配置文件)