public class ImageServlet extends HttpServlet{
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//设置Content-type响应头
resp.setContentType("image/jpeg");
//设置http头,不允许客户端缓存验证码图片(单个是指针对某一个浏览器生效)
resp.setHeader("pragma", "No-cache");
resp.setHeader("Cache-Control", "No-cache");
resp.setDateHeader("Expires", 0);
//向客户端输出二进制数据
OutputStream out = resp.getOutputStream();
//以下代码用来生成验证码图片
int width = 80;
int height = 20;
BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
Graphics g = image.getGraphics();
g.fillRect(0, 0, width, height);
g.setFont(new Font("Times New Roman",Font.ITALIC,18));
String checkCode= "";
Random random = new Random();
for(int i = 0; i < 4; i++){
String rand = String.valueOf(random.nextInt(10));
checkCode += rand;
//随即设置数字颜色,增加识别验证码的难度,防止识别软件盗用使用
g.setColor(new Color(20+random.nextInt(110),
20+random.nextInt(110),
20+random.nextInt(110)));
g.drawString(rand, i * 20 + 6, 16);
}
g.dispose(); //生成图片完毕
//将产生的验证码存Session中
req.getSession().setAttribute("checkCode",checkCode);
ImageIO.write(image,"JPEG",out);
}
直接调用Servlet就是....
<img src="testImageServlet" />
517

被折叠的 条评论
为什么被折叠?



