注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

秋水伊人的博客

http://fuaiia.taobao.com 香香公主毛绒宝贝小屋,欢迎光临

 
 
 

日志

 
 
关于我

一对情侣一起去殉情,可是他们身上的钱只够买一瓶农药,而且这瓶农药的药量只够一个人死,可是最后他们两个人都死了,这是为什么呢?答案:他们买了这瓶农药,打开瓶盖,瓶盖上写着:再来一瓶

网易考拉推荐

随机验证码  

2010-08-25 16:26:14|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
package com.web;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class ImageServlet extends HttpServlet {


    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
         this.doPost(request, response);
     }

   // 生成数字和字母的验证码
    public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
    {
           response.setContentType("image/jpeg");
           HttpSession session = request.getSession();
           int width = 60;
           int height = 20;
          
           //设置浏览器不要缓存此图片
           response.setHeader("Pragma", "No-cache");
           response.setHeader("Cache-Control", "no-cache");
           response.setDateHeader("Expires", 0);
          
           //创建内存图像并获得其图形上下文
           BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
           Graphics g = image.getGraphics();
          
           //产生随机验证码
           //定义验证码的字符表
           String chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
           char[] rands = new char[4];
           for(int i = 0; i < 4; i++) {
            int rand = (int) (Math.random() * 36);
            rands[i] = chars.charAt(rand);
           }
          
           //产生图像
           //画背景
           g.setColor(new Color(0xDCDCDC));
           g.fillRect(0, 0, width, height);
           // 随机产生120个干扰点
           for(int i = 0; i < 120; i++) {
            int x = (int)(Math.random() * width);
            int y = (int)(Math.random() * height);
            int red = (int)(Math.random() * 255);
            int green = (int)(Math.random() * 255);
            int blue = (int)(Math.random() * 255);
            g.setColor(new Color(red, green, blue));
            g.drawOval(x, y, 1, 0);
           }
          
           g.setColor(Color.BLACK);
           g.setFont(new Font(null, Font.ITALIC|Font.BOLD, 18));
           //在不同的高度上输出验证码的不同字符
           g.drawString("" + rands[0], 1, 17);
           g.drawString("" + rands[1], 16, 15);
           g.drawString("" + rands[2], 31, 18);
           g.drawString("" + rands[3], 46, 16);
           g.dispose();
          
           //将图像输出到客户端
           ServletOutputStream sos = response.getOutputStream();
           ByteArrayOutputStream baos = new ByteArrayOutputStream();
           ImageIO.write(image, "JPEG", baos);
           byte[] buffer = baos.toByteArray();
           response.setContentLength(buffer.length);
           sos.write(buffer);
           baos.close();
           sos.close();
          
           // 将验证码放到 session 中
           session.setAttribute("checkCode", new String(rands));
    }     
}
  评论这张
 
阅读(75)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017