Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104105
  • 博文数量: 24
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 285
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-13 14:10
个人简介

文章分类

全部博文(24)

文章存档

2011年(1)

2010年(7)

2009年(14)

2008年(2)

我的朋友

分类: Java

2008-11-13 16:43:57

  1. java代码

package com.ext.oa.common;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.awt.*;
import java.awt.image.*;
import java.util.*;
import javax.imageio.*;

/**
 * @author jiaoxueli
 *
Date: 2008-1-14
 */

public class AuthImg extends HttpServlet
{
    private Font mFont = new Font("Arial Black", Font.PLAIN, 16);
    public void init() throws ServletException
    {
        super.init();
    }
    Color getRandColor(int fc,int bc)
    {
        Random random = new Random();
        if(fc>255) fc=255;
        if(bc>255) bc=255;
        int r=fc+random.nextInt(bc-fc);
        int g=fc+random.nextInt(bc-fc);
        int b=fc+random.nextInt(bc-fc);
        return new Color(r,g,b);
    }

    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        response.setHeader("Pragma","No-cache");
        response.setHeader("Cache-Control","no-cache");
        response.setDateHeader("Expires", 0);
        response.setContentType("image/jpeg");
        
        int width=100, height=18;
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        
        Graphics g = image.getGraphics();
        Random random = new Random();
        g.setColor(getRandColor(200,250));
        g.fillRect(1, 1, width-1, height-1);
        g.setColor(new Color(102,102,102));
        g.drawRect(0, 0, width-1, height-1);
        g.setFont(mFont);

        g.setColor(getRandColor(160,200));
        for (int i=0;i<155;i++)
        {
            int x = random.nextInt(width - 1);
            int y = random.nextInt(height - 1);
            int xl = random.nextInt(6) + 1;
            int yl = random.nextInt(12) + 1;
            g.drawLine(x,y,x + xl,y + yl);
        }
        for (int i = 0;i < 70;i++)
        {
            int x = random.nextInt(width - 1);
            int y = random.nextInt(height - 1);
            int xl = random.nextInt(12) + 1;
            int yl = random.nextInt(6) + 1;
            g.drawLine(x,y,x - xl,y - yl);
        }

        String sRand="";
        for (int i=0;i<6;i++)
        {
            String tmp = getRandomChar();
            sRand += tmp;
            g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
     g.drawString(tmp,15*i+10,15);
        }

        HttpSession session = request.getSession(true);
        session.setAttribute("validCode",sRand);
        g.dispose();
        ImageIO.write(image, "JPEG", response.getOutputStream());
    }
    private String getRandomChar()
    {
        int rand = (int)Math.round(Math.random() * 2);
        long itmp = 0;
        char ctmp = '\u0000';
        switch (rand)
        {
            case 1:
                itmp = Math.round(Math.random() * 25 + 65);
                ctmp = (char)itmp;
                return String.valueOf(ctmp);
            case 2:
                itmp = Math.round(Math.random() * 25 + 97);
                ctmp = (char)itmp;
                return String.valueOf(ctmp);
            default :
                itmp = Math.round(Math.random() * 9);
                return String.valueOf(itmp);
        }
    }
}


2.web.xml配置


<servlet>
        <servlet-name>AuthImgServlet</servlet-name>
        <servlet-class>com.ext.oa.common.AuthImg</servlet-class>
    </servlet>
<servlet-mapping>
        <servlet-name>AuthImgServlet</servlet-name>
        <url-pattern>/AuthImg</url-pattern>
    </servlet-mapping>


3.jsp页面调用



   



阅读(557) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:java中字符之间的转化

给主人留下些什么吧!~~