⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 createimg.java

📁 jsp开发常用信息管理系统适合初学者学习 jsp开发常用信息管理系统适合初学者学习
💻 JAVA
字号:

package ch08;

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

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

/*
 * Created on 2006-11-25
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */

/**
 * @author <a href="wei.cheng@dudu-inc.com">Cheng Wei</a>
 *
 */
public class CreateImg extends HttpServlet {

	public static String result;
	public void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
			response.setContentType("image/jpeg");
			ServletOutputStream out = response.getOutputStream();
			int width= 60;
			int height = 20;
			//生成随机类
		  	Random random = new Random();
			//创建对象
			BufferedImage image =
				new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
			//获取图形上下文
			Graphics g = image.getGraphics();
			//颜色
			g.setColor(Color.lightGray);
			g.fillRect(0, 0, 60, 20);
			//边框
			g.setColor(Color.red);
			//设定字体
			g.setFont(new Font("Times New Roman", Font.PLAIN,18));
			//随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
		 	g.setColor(getRandColor(160,200));
		 	for (int i=0;i<155;i++){
		  		int x = random.nextInt(width);
		  		int y = random.nextInt(height);
				int xl = random.nextInt(12);
				int yl = random.nextInt(12);
		  		g.drawLine(x,y,x+xl,y+yl);
		 	}
			//取随机产生的认证码(4位数字)
		 	String sRand="";
		 	for (int i=0;i<4;i++){
				String rand=String.valueOf(random.nextInt(10));
				sRand+=rand;
			 	// 将认证码显示到图象中
			 	g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
				//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
			 	g.drawString(rand,13*i+6,16);
		 	}
			result = sRand;
			this.setMyCookie(result,response);
			// 将认证码存入SESSION
			request.getSession().setAttribute("rand",sRand);
			System.out.println("session="+request.getSession().getAttribute("rand"));
			//String txt = GetRandomString.getRandomString();
			//System.out.println("this string ---------->" + txt);
			//g.drawString(txt,15,15);//
			//g.drawOval(0, 0, 80, 20);
			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
			encoder.encode(image);
			out.close();
	}
	
	//给定范围获得随机颜色
	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 doPost(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
			doGet(request, response);
	}
	
	//Get Servlet information
	public String getServletInfo() {
		return "JPEGServlet Information";
	}

	public void setMyCookie(String myCookies, HttpServletResponse response){
		String content = null;		
		if(myCookies == null || myCookies.equals(""))
		    content = "";
		
		Cookie cookie=new Cookie("localhost_cookie", myCookies);
		cookie.setDomain("localhost.com");
		cookie.setMaxAge(60*60);
		response.addCookie(cookie);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -