Java写验证码

out.println("验证码<input  type='text' name='checkcode'/>

<img src='/Servlet4/CreateCode'/><br />");

src='/项目名/ 类名'
public class CreateCode extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      //1. 禁止浏览器缓存随机图片
      response.setDateHeader("Expires", -1);
      response.setHeader("Cache-Control", "no-cache");
      response.setHeader("Pragma", "no-cache");
     
      //2.通知客户端以图片方式打开发送的数据
      response.setHeader("Content-Type", "image/jpep");
     
      //1. 在内存中创建一副图片
      BufferedImage image=new  BufferedImage(80,30,BufferedImage.TYPE_INT_BGR);

      //2. 在向上写数据
      Graphics g=image.getGraphics();
     
      //设置背景色
      g.setColor(Color.BLACK);
      g.fillRect(0,0,80,30);
     
      //3.设置写入数据 的颜色和字体
       g.setColor(Color.WHITE);
       g.setFont(new Font(null,Font.BOLD,20));//???
     // 4.向图片上写入数据
       String num=makeNum();
       //这句话 就是随机生成的数值, 保存到session
       request.getSession().setAttribute("checkcode", num);
       g.drawString(num, 0, 20);
      
      //3.将写好的数据图片输出给浏览器
       ImageIO.write(image, "jpg",response.getOutputStream());
      
}   
   //4.该函数时随机生成7位数字
    public  String  makeNum(){
  Random r=new Random();
  String num =r.nextInt(9999999)+"";
  StringBuffer sb=new  StringBuffer();
  for(int i=0;i<7-num.length();i++){
  sb.append("0");
  }
  num=sb.toString()+num;
  return num;
}

 

猜你喜欢

转载自luca-honry.iteye.com/blog/2289644