RSS
热门关键字:  java  Ajax  JSP  JSF  Struts
当前位置 : 首页>Struts>列表

使用servlet编写一个验证码的例子

来源: 作者: 时间:2007-09-21 点击:

ackage com.topsuntech.gUnit_cnpo.common.servlet;

import java.io.*;
import java.util.*;
import com.sun.image.codec.jpeg.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.awt.*;
import java.awt.image.*;

/*
 * 功能:调用AuthServlet可以生成一个验证码图片,图片的宽度和高度可以自定义
 * 调用格式: /servlet/AuthServlet?width=60&height=20
 *      或者/servlet/AuthServlet
 * 时间:2007-9-4
 * 
 *
 */
public class AuthServlet extends HttpServlet {
 private Font mFont=new Font("Times New Roman", Font.PLAIN,18);//设置字体
 //static String AuthCode="";

// 处理post
 public void doPost(HttpServletRequest request,HttpServletResponse response)
 throws ServletException,IOException {
   doGet(request,response);
 }

 public void doGet(HttpServletRequest request,HttpServletResponse response)
     throws ServletException,IOException {
// 取得一个1000-9999的随机数


     HttpSession session=request.getSession();//request.getSession(false)当参数为false时,有可能不创建session
     //session.setAttribute("getImg",s);
     response.setContentType("image/gif");
     response.setHeader("Pragma","No-cache");
     response.setHeader("Cache-Control","no-cache");
     response.setDateHeader("Expires", 0);
     int width=60;
     int height=20;
     if(request.getParameter("width")!=null && !request.getParameter("width").equals(""))
      width = Integer.parseInt(request.getParameter("width"));
     if(request.getParameter("height")!=null && !request.getParameter("height").equals(""))
      height = Integer.parseInt(request.getParameter("height"));
                 

     ServletOutputStream out=response.getOutputStream();
     BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); //设置图片大小的
     Graphics gra=image.getGraphics();
     Random random=new Random();

     gra.setColor(getRandColor(200,250));    //设置背景色
     gra.fillRect(0,0,width,height);

     gra.setColor(Color.black); //设置字体色
     gra.setFont(mFont);


     // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
     gra.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);
      gra.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;

共2页: 上一页 1 [2] 下一页
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
Google Adsense
相关文章