调用方法
<img src="http://...../getimg">
原理,在servlet中随机生成一个4位数字1000-9999然后把这数字写入session输出一个图片,上面写有这四个数字在服务器端根据用户输入的数字和 session中的值比较。
package com.schoolwx.util;
import java.io.*;
import java.util.*;
import com.sun.image.codec.jpeg.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.awt.*;
import java.awt.image.*;
/**
* title: getimg.java
* description: 这个class主要实现随机生成一个4位数的验证码,并写入session,
* copyright: copyright (c) 2003
* company: 蓝星软件
* @author falcon
* @version 1.1
*/
public class getimg extends httpservlet {
private font mfont=new font("宋体", font.plain,12);//设置字体
//处理post
public void dopost(httpservletrequest request,httpservletresponse response)
throws servletexception,ioexception {
doget(request,response);
}
public void doget(httpservletrequest request,httpservletresponse response)
throws servletexception,ioexception {
//取得一个1000-9999的随机数
string s="";
int intcount=0;
intcount=(new random()).nextint(9999);//
if(intcount<1000)intcount+=1000;
s=intcount+"";
//对session付值。
httpsession session=request.getsession (true);
session.setattribute("getimg",s);
response.setcontenttype("image/gif");
servletoutputstream out=response.getoutputstream();
bufferedimage image=new bufferedimage(35,14,bufferedimage.type_int_rgb);
graphics gra=image.getgraphics();
//设置背景色
gra.setcolor(color.yellow);
gra.fillrect(1,1,33,12);
//设置字体色
gra.setcolor(color.black);
gra.setfont(mfont);
//输出数字
char c;
for(int i=0;i<4;i++) {
c=s.charat(i);
gra.drawstring(c+"",i*7+4,11); //7为宽度,11为上下高度位置
}
jpegimageencoder encoder=jpegcodec.createjpegencoder(out);
encoder.encode(image);
out.close();
}
}
新闻热点
疑难解答