img.java文件:
效果:
package test;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class img extends HttpServlet {
private static final long serialVersionUID = -3703013493165293682L;
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("image/png");
final int MAXLENGTH=6;//验证码最大长度
//在内存中创建一个图片
BufferedImage image=new BufferedImage(100, 30, BufferedImage.TYPE_INT_RGB);
//创建一个随机数
String number="";
Random r =new Random();
for (int i=0;i<MAXLENGTH;i++){
number+=r.nextInt(10);
}
//获得画笔
Graphics g=image.getGraphics();
//设置字体
g.setFont(new Font("华文新魏", Font.BOLD, 16));
//往图片上加文字
g.drawString(number, 20, 20);
//将验证码文字保存到Session
request.getSession().setAttribute("verifyCode", number);
//获得输出流
OutputStream os=response.getOutputStream();
//输出图片到网页
ImageIO.write(image, "png", os);
//关流
os.close();
}
}
HTML内容:
<img src="imgAction" οnclick="this.src='imgAction?'+Math.random();" >
WEB.XML配置
<servlet>
<servlet-name>img</servlet-name>
<servlet-class>test.img</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>img</servlet-name>
<url-pattern>/imgAction</url-pattern>
</servlet-mapping>
效果: