`
major361
  • 浏览: 31825 次
  • 性别: Icon_minigender_1
  • 来自: 福州->杭州
社区版块
存档分类
最新评论

用Servlet产生验证码

阅读更多
public class AuthImage extends HttpServlet{
	private static final String CONTENT_TYPE = "text/html; charset=gb2312";   
    //设置字母的大小,大小   
    private Font mFont = new Font("Times New Roman", Font.PLAIN, 20);   
    public void init() throws ServletException   
    {   
        super.init();   
    }   

    //把色彩控制在一定的范围内,使显示效果更佳
    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);   
    }   
    /*Color getRandColor()
    {
    	Random random = new Random();
    	int r = 180 + random.nextInt(50);
    	int g = 180 + random.nextInt(50);
    	int b = 180 + random.nextInt(50);
    	return new Color(r,g,b);
    }*/
  
    public void service(HttpServletRequest request, HttpServletResponse response) 
    		throws ServletException, IOException   
    {   
        response.setHeader("Pragma","No-cache");   
        response.setHeader("Cache-Control","no-cache");   
        response.setDateHeader("Expires", 0);   
        //表明生成的响应是图片   
        response.setContentType("image/jpeg");   
           
        int width=70, height=21;   
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);   
           
        Graphics g = image.getGraphics();   
        Random random = new Random();   
        g.setColor(getRandColor(200,250));
       // g.setColor(getRandColor());
        
        g.fillRect(1, 1, width-1, height-1);   
        g.setColor(new Color(102,102,102));   
        g.drawRect(0, 0, width-1, height-1);   
        g.setFont(mFont);   
  
        g.setColor(getRandColor(160,200));   
        //g.setColor(getRandColor());
        
        //画随机线   
        for (int i=0;i<155;i++)   
        {   
            int x = random.nextInt(width - 1);   
            int y = random.nextInt(height - 1);   
            int xl = random.nextInt(6) + 1;   
            int yl = random.nextInt(12) + 1;   
            g.drawLine(x,y,x + xl,y + yl);   
        }   
  
        //从另一方向画随机线   
        for (int i = 0;i < 70;i++)   
        {   
            int x = random.nextInt(width - 1);   
            int y = random.nextInt(height - 1);   
            int xl = random.nextInt(12) + 1;   
            int yl = random.nextInt(6) + 1;   
            g.drawLine(x,y,x - xl,y - yl);   
        }   
  
        //生成随机数,并将随机数字转换为字母   
        String sRand="";   
        for (int i=0;i<4;i++)   
        {   
            int itmp = random.nextInt(26) + 65;   
            char ctmp = (char)itmp;   
            sRand += String.valueOf(ctmp);   
            g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));   
            g.drawString(String.valueOf(ctmp),15*i+10,16);   
        }   
  
        HttpSession session = request.getSession(true);   
        session.setAttribute("rand",sRand);   
        g.dispose();   
        ImageIO.write(image, "JPEG", response.getOutputStream());   
    }   

}
分享到:
评论

相关推荐

    jsp/java-ee 产生验证码类代码

    使用jsp/java-ee编程,页面提交后处理的servlet产生页面验证码。表单页面产生验证码。只有servlet文件。

    Jsp+Servlet+验证码[文].pdf

    在 Java Servlet 中,可以使用随机数生成器来生成随机的验证码字符或图片。 验证码的类型 验证码可以分为两种类型:文本验证码和图片验证码。文本验证码是指由随机生成的字符串或数字组成的验证码,而图片验证码则...

    servlet验证码

    servlet 验证码用于注册时自动产生验证码

    Java产生验证码实例

    - 使用`javax.servlet.http.HttpSessionBindingListener`接口实现Session监听,当验证码过期或被替换时,自动移除旧的验证码。 - 对于高并发场景,可以考虑使用分布式Session存储,如Redis,以解决单台服务器Session...

    Java后端产生验证码后台验证功能的实现代码

    Java后端产生验证码后台验证功能的实现代码 Java后端产生验证码后台验证功能的实现代码是指在Java后台生成验证码,并对其进行后台验证的功能。本文主要介绍了Java后台产生验证码后台验证功能的实现代码,结合实例...

    jsp页面中产生验证码

    首先,验证码的生成通常涉及到随机字符的产生和图像的绘制。在JSP中,我们可以使用Java的`java.util.Random`类来生成随机数字和字母,然后结合`java.awt`和`javax.imageio`包中的类来创建图像并写入这些随机字符。`...

    生成验证码的项目源码

    生成验证码的源代码。由servlet生成验证码和...能够产生验证码但是如何传输和验证呢,一般是传回服务器在action里做验证。 我还是喜欢js页面产生验证码,因为简单,虽然效果差了点。所以也附带了个js生成验证码的例子。

    非常漂亮的验证码

    - **随机性**:为了防止被破解,验证码通常使用随机算法生成,确保每次请求都产生不同的验证码。 - **图像处理**:生成的验证码字符串需要转换为图像,这可能涉及到字体、颜色、背景、扭曲和噪声的处理,以增加识别...

    jsp验证码生成以及刷新

    jsp 验证码生成和刷新详解 jsp 验证码生成和刷新是 Web 开发中非常重要的一部分。...通过使用 servlet 生成验证码、配置 servlet、显示验证码、验证验证码和刷新验证码,我们可以防止机器人攻击和恶意注册。

    java实现验证码产生功能

    图像的`src`属性指向一个Servlet,该Servlet负责生成并返回验证码图像。同时,将验证码值存入会话。 6. **用户输入验证**: 用户输入验证码后,前端会发送一个请求到服务器,此时服务器需要验证用户输入的验证码...

    Java 算术验证码图片

    Java产生简单算术验证码图片,此为Servlet需要配置web.xml,配置方法如下: &lt;servlet&gt; &lt;servlet-name&gt;authimg&lt;/servlet-name&gt; &lt;servlet-class&gt;img.AuthImg&lt;/servlet-class&gt; &lt;/servlet&gt; &lt;servlet-mapping&gt; ...

    采用ajax实现的图片验证码

    3、编写一个servlet,在servlet中产生图形验证码 ------------------------------------------------------------ //1、给客户端作出的回应是以图片的方式来回应 response.setContentType("image/jpeg"); ...

    随机生成验证码(JSP)

    在本项目中,我们将探讨如何使用JSP(JavaServer Pages)和Servlet来实现随机生成的验证码功能。下面将详细阐述相关知识点。 首先,验证码的生成通常涉及到以下几个步骤: 1. **随机数字或字母生成**:验证码通常...

    awt制作验证码的源码

    一个在登陆的时候产生验证码的类,可以根据需要转换成自己的action servlet 等 调用的部分可以用一个img 标签关联一个超连接就ok 了

    图文验证码模块

    这样既提高了用户体验,减少了网络请求的等待时间,又保证了每次验证的独立性,避免了因多人同时使用同一验证码而产生的安全问题。在实现时,需要在JavaScript中发送Ajax请求到服务器,服务器生成新的验证码并返回,...

    jsp验证码简单示例

    在网页开发中,尤其是用户登录、注册、评论等场景,验证码能够有效地防止垃圾信息的产生,保护网站的安全。JSP(JavaServer Pages)作为服务器端的动态网页技术,可以方便地实现验证码的生成与验证。以下将详细介绍...

    自定义验证码,登录后进行验证

    定义图片的width、定义图片的height、定义图片上显示验证码的个数 创建字体,字体的大小应该根据图片的高度来定 ...随机产生的颜色将验证码绘制到图像中 四位数字的验证码保存到Session中 将图像输出到Servlet输出流中

    用代理避免ajax跨域请求(手机验证码)

    标题“用代理避免ajax跨域请求(手机验证码)”指出了解决这个问题的一种策略,即利用代理服务器来规避浏览器的同源策略限制。下面我们将深入探讨这个主题。 首先,我们了解什么是跨域请求。在Web开发中,由于...

    jsp常用经典代码(md5java实现,生成中文/数字验证码,解决中文乱码)

    首先,`MD5`是一种广泛使用的加密散列函数,产生一个128位(16字节)的散列值,通常以32个十六进制数字的形式表示。在`MD5Java实现`中,开发者会使用Java的`java.security.MessageDigest`类来计算字符串的MD5值。...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    5.1 servlet与servlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 tomcat的安装与配置 184 5.5.1 安装tomcat 185 5.5.2 运行tomcat 186 5.5.3 tomcat启动...

Global site tag (gtag.js) - Google Analytics