Servlet实现页面验证功能随机生成图片

 
Java代码 复制代码  收藏代码
  1. package com.servlet;   
  2.   
  3. import java.awt.Color;   
  4. import java.awt.Font;   
  5. import java.awt.Graphics;   
  6. import java.awt.image.BufferedImage;   
  7. import java.io.IOException;   
  8. import java.util.Random;   
  9.   
  10. import javax.servlet.ServletException;   
  11. import javax.servlet.http.HttpServlet;   
  12. import javax.servlet.http.HttpServletRequest;   
  13. import javax.servlet.http.HttpServletResponse;   
  14. import javax.imageio.ImageIO;   
  15.   
  16. public class Image extends HttpServlet {   
  17.   
  18.     public void destroy() {   
  19.   
  20.     }   
  21.   
  22.     public void doGet(HttpServletRequest request, HttpServletResponse response)   
  23.             throws ServletException, IOException {   
  24.   
  25.         this.doPost(request, response);   
  26.     }   
  27.   
  28.     public void doPost(HttpServletRequest request, HttpServletResponse response)   
  29.             throws ServletException, IOException {   
  30.   
  31.         // 设置编码格式   
  32.         response.setContentType("image/jpeg");   
  33.   
  34.         // 创建图片的大小   
  35.         int width = 85;   
  36.         int height = 20;   
  37.   
  38.         // 创建一个img对象   
  39.         BufferedImage img = new BufferedImage(width, height,   
  40.                 BufferedImage.TYPE_INT_RGB);   
  41.   
  42.         Random ran = new Random();   
  43.   
  44.         // 得到画笔   
  45.         Graphics g = img.getGraphics();   
  46.         // 设置画笔的样式   
  47.         Color c = g.getColor();   
  48.         Font f = g.getFont();   
  49.   
  50.         g.setColor(Color.pink);// 设置背景色   
  51.         g.fillRect(00, width, height); // 填充背景色   
  52.   
  53.         // 文字的操作   
  54.         StringBuffer sb = new StringBuffer();   
  55.   
  56.         g.setFont(new Font("黑体", Font.BOLD, 16));   
  57.   
  58.         for (int i = 0; i < 4; i++) {   
  59.   
  60.             g.setColor(new Color(ran.nextInt(100), ran.nextInt(100), ran   
  61.                     .nextInt(100)));   
  62.   
  63.             String num = String.valueOf(ran.nextInt(10));   
  64.   
  65.             g.drawString(num, i * 20 + 1015);   
  66.   
  67.             sb.append(num);   
  68.         }   
  69.   
  70.         // 恢复默认的画笔   
  71.         g.setColor(c);   
  72.         g.setFont(f);   
  73.   
  74.         // 给服务器保存验证码字符串   
  75.         request.getSession().setAttribute("yan", sb);   
  76.   
  77.         // 缓存清空   
  78.         response.setHeader("Pragma""no-store"); // 本地机是否产生缓存文件   
  79.         response.setDateHeader("expires"0); // 生效时间   
  80.         response.setHeader("Pragma""no-cache"); // 清空   
  81.   
  82.         // 输出图片   
  83.         ImageIO.write(img, "jpeg", response.getOutputStream());   
  84.     }   
  85.   
  86. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫欺少年穷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值