zoukankan      html  css  js  c++  java
  • J2EE之验证码实现

    package cn.itcast.response;
    
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Random;
    
    import javax.imageio.ImageIO;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class ResponseDemo5 extends HttpServlet {
    
    	private int WIDTH = 120;
    	private int HEIGHT = 25;
    
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		BufferedImage image = new BufferedImage(WIDTH , HEIGHT , BufferedImage.TYPE_INT_RGB);
    		Graphics graphics = image.getGraphics();
    		
    		//设置背景色
    		setBackgroundColor(graphics);
    		
    		//设置边框
    		setBorder(graphics);
    		
    		//绘制随机线
    		drawRandomLine(graphics);
    		
    		//绘制随机数字
    		drawRandomNum(graphics);
    		response.setContentType("image/jpeg");
    		ImageIO.write(image, "jpg", response.getOutputStream());
    	}
    
    	private void drawRandomNum(Graphics graphics) {
    		// TODO Auto-generated method stub
    		graphics.setColor(Color.RED);
    		graphics.setFont(new Font("楷体", Font.BOLD, 20));
    		String base="u96d5u864eu7684u4e00u4e86u662fu6211u4e0du5728u4ebau4eecu6709u6765u4ed6u8fd9u4e0au7740u4e2au5730u5230u5927u91ccu8bf4u5c31u53bbu5b50" +
    				"u5f97u4e5fu548cu90a3u8981u4e0bu770bu5929u65f6u8fc7u51fau5c0fu4e48u8d77u4f60u90fdu628au597du8fd8u591au6ca1u4e3au53c8u53efu5bb6u5b66u53ea" +
    				"u4ee5u4e3bu4f1au6837u5e74u60f3u751fu540cu8001u4e2du5341u4eceu81eau9762u524du5934u9053u5b83u540eu7136u8d70u5f88u50cfu89c1u4e24u7528u5979" +
    				"u56fdu52a8u8fdbu6210u56deu4ec0u8fb9u4f5cu5bf9u5f00u800cu5df1u4e9bu73b0u5c71u6c11u5019u7ecfu53d1u5de5u5411u4e8bu547du7ed9u957fu6c34u51e0" +
    				"u4e49u4e09u58f0u4e8eu9ad8u624bu77e5u7406u773cu5fd7u70b9u5fc3u6218u4e8cu95eeu4f46u8eabu65b9u5b9eu5403u505au53eb";
    		int x = 10;
    		for(int i = 0; i < 4; i++)
    		{
    			String str = base.charAt(new Random().nextInt(base.length())) + "";
    			graphics.drawString(str, x, 21);
    			x += 28;
    		}
    	}
    
    	private void drawRandomLine(Graphics graphics) {
    		// TODO Auto-generated method stub
    		graphics.setColor(Color.GREEN);
    		
    		for(int i = 0; i < 5; i++)
    		{
    			int x1 = new Random().nextInt(WIDTH);
    			int y1 = new Random().nextInt(HEIGHT);
    			int x2 = new Random().nextInt(WIDTH);
    			int y2 = new Random().nextInt(HEIGHT);
    			
    			graphics.setColor(Color.GREEN);
    			graphics.drawLine(x1, y1, x2, y2);
    		}
    	}
    
    	private void setBorder(Graphics graphics) {
    		// TODO Auto-generated method stub
    		graphics.setColor(Color.BLACK);
    		graphics.drawRect(0, 0, WIDTH, HEIGHT);
    	}
    
    	private void setBackgroundColor(Graphics graphics) {
    		// TODO Auto-generated method stub
    		graphics.setColor(Color.WHITE);
    		graphics.fillRect(0, 0, WIDTH - 1, HEIGHT - 1);
    	}
    
    }
    

  • 相关阅读:
    腾讯TDW:大型Hadoop集群应用[转载]
    [转]常见分布式系统数据分布解析
    一种基于Storm的可扩展即时数据处理架构思考
    storm
    storm
    精华文章
    Dubbo使用解析及远程服务框架
    职责链实现的apache.chain使用
    设计模式之享元模式
    SVN安装与eclipseSVN插件基本使用
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4283764.html
Copyright © 2011-2022 走看看