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

📄 validateservlet.java

📁 动态网站管理发布系统
💻 JAVA
字号:
package com.ntsky.servlet;

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

public class ValidateServlet extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException,IOException{
    	doGet(request,response);
    }
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		  HttpSession session=request.getSession();

		  response.setHeader("Pragma","No-cache");
		  response.setHeader("Cache-Control","no-cache");
		  response.setDateHeader("Expires", 0);
		  // 在内存中创建图象
		  int width=60, height=20;
		  BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		  // 获取图形上下文
		  Graphics g = image.getGraphics();
		  // 设定背景色
		  g.setColor(getRandColor(155,254));
		  //g.setColor(new Color(255,255,255));
		  g.fillRect(0, 0, width, height);
		  //设定字体
		  g.setFont(new Font("Times New Roman",Font.PLAIN,18));
		  // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
		  g.setColor(getRandColor(160,220));

		  //生成随机类
		  Random random = new Random();

		  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);
		  }
		  // 将认证码存入SESSION
		  session.setAttribute("randcode",sRand);
		  // 图象生效
		  g.dispose();
		  // 输出图象到页面
		  System.out.println("QQQQQQQQQQQQ");
		  ImageIO.write(image, "JPEG", response.getOutputStream());
    }
	 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 destroy()
	 {
	 }	 
  }

⌨️ 快捷键说明

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