javaweb学习11:Response验证码实现

javaweb学习11:Response验证码实现

  • Response验证码实现:

    • 验证码怎么来的?

      • 前端实现:

      • 后端实现:需要用Java的图片类,生成一个图片;

 

  • 代码案例:验证码功能(目的:练习Response的使用)

    /**
    * 验证码功能
    */
    public class IamgeServlet extends HttpServlet {


       @Override
       protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
           //如何让浏览器5秒刷新一次;
           resp.setHeader("refresh","3");

           //在内存中创建一个图片,
           BufferedImage image = new BufferedImage(80,20,BufferedImage.TYPE_INT_RGB);

           //得到图片
           Graphics2D g = (Graphics2D)image.getGraphics();
           //设置图片的背景颜色
           g.setColor(Color.white);
           g.fillRect(0,0,80,20);
           //给图片写数据
           g.setColor(Color.blue);
           g.setFont(new Font(null,Font.BOLD,20));
           g.drawString(makeNum(),0,20);

           //告诉浏览器,这个请求用图片的方式打开
           resp.setContentType("image/png");
           //网站存在缓存,不让浏览器缓存
           resp.setDateHeader("expires",-1);
           resp.setHeader("Cache-Control","no-cache");
           resp.setHeader("Pragma","no-cache");

           //把图片写给浏览器
           boolean write = ImageIO.write(image, "png",resp.getOutputStream());


      }

       //生成随机数:保证每次都是7位数
       public String makeNum(){
           Random random = new Random();
           String num=random.nextInt(9999999)+"";
           StringBuffer sb = new StringBuffer(num);
           for (int i = 0; i <7-num.length() ; i++) {
               sb.append("0");
          }
           String s=sb.toString()+num;
           return num;
      }

       @Override
       protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
           doGet(req, resp);
      }
    }

     

 

 

 

 

 

 

posted @   gzs1024  阅读(108)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示