`
lixiamani
  • 浏览: 37381 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用servlet生成简单的验证码

阅读更多
在web.xml配置:

<servlet>   
    <servlet-name>image</servlet-name>   
    <servlet-class>org.test.web.AuthImage</servlet-class>   
</servlet>   
   
<servlet-mapping>   
    <servlet-name>image</servlet-name>   
 <url-pattern>/authImage</url-pattern>   
</servlet-mapping> 
 
其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, 17);    
    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);    
    }    
   
    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=100, height=18;    
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);    
            
        Graphics g = image.getGraphics();    
        Random random = new Random();    
        g.setColor(getRandColor(200,250));    
        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));    
   
        //画随机线    
        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<6;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());    
    }    
    public void destroy()    
    {    
    }    
}   

在页面显示随机图片,可在JSP页面中增加如下代码即可:

<img src="authImage">   
分享到:
评论

相关推荐

    利用servlet动态生成验证码

    这是一个完整的功能,实现了动态生成验证码及验证填入信息是否正确的功能,是入门者非常不错的参考资料,是我在课堂上演示的代码。

    JSP中利用Servlet生成验证码图片

    使用Servlet生成验证码图片。 一个生成验证码图片的工具类。

    利用jsp生成图片验证码

    利用jsp生成图片验证码,没有用到servlet

    通过servlet生成验证码

    通过servlet生成验证码的小工具类,使用时在web.xml里面配置,页面上引用时利用img标签引用这个servlet就可以实现验证码实例: &lt;img src="checkCode.do" id="img" height="30px"&gt;&lt;/a&gt; 实现点击图片时更换验证码

    利用java开源组件实现生成验证码

    利用java开源组件及servlet实现生成验证码

    JSP + Servlet实现生成登录验证码示例

    随机生成四位数验证码,包括汉字,数字,英文大小写。 1.Servlet类 package servlet; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt....

    随机生成验证码(中文+英文)

    整合了一下验证码的生成,以备不时之需,利用servlet写的eclipse项目

    java生成登录验证码的方法

    验证码的作用:有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上是用验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,腾讯的QQ社区),我们利用比较简易的方式...

    java 生成验证码

    利用servlet方式随机生成验证码的图片,显示到jsp页面!输入验证码提交后显示成功还是失败!

    response生成图片验证

    生成图片验证码原理是:随机生成一张图片,里面有一些随机字符,用户需要输入里面的验证字符,才能进入某一系统里面。本示例利用的是Servlet的response对象将生成的图片直接输出到了客户端的页面上。

    google验证码.rar

    kaptcha是google开源的一个非常实用的验证码生成工具类,可以利用kaptcha生成各种各样的验证码,但是它没有上传到maven中央仓库。kaptcha的工作原理是调用com.google.code.kaptcha.servlet.KaptchaServlet生成一个...

    验证码工具类

    kaptcha是google开源的一个非常实用的验证码生成工具类,可以利用kaptcha生成各种各样的验证码,但是它没有上传到maven中央仓库。kaptcha的工作原理是调用com.google.code.kaptcha.servlet.KaptchaServlet生成一个...

    验证码显示

    这是一段关于如何动态生成验证码的代码,利用26个字母和数字及特殊符号生成动态验证码

    采用ajax实现的图片验证码

    ------------------------------------------------------------采用ajax验证,用户在文本框中输入的验证码,与系统生成的验证码,是否一致,如果一致,按钮可以点击 1、导入dwr.jar 2、在web.xml文件加载dwr 3...

    Java案例开发锦集

    案例6 利用JDBC-ODBC查看查询结果 第八章 Java与Servlet 案例1 利用Servlet打开非HTML格式的文档 案例2 Servlet和JSP的通信 案例3 Servlet和Servlet的通信 案例4 Servlet动态生成图像 案例5 ...

    Java_Web开发实战1200例第1卷.part2

    13.6 简单的验证码应用 533 13.7 复杂的验证码应用 540 13.8 生成条形码 556 第14章 图像操作 559 14.1 图片的大小 560 14.2 图片与鼠标相关的操作 561 14.3 图片与时间相关的操作 580 14.4 图片的动画效果 589 14.5...

    Java_Web开发实战1200例第1卷.part3

    13.6 简单的验证码应用 533 13.7 复杂的验证码应用 540 13.8 生成条形码 556 第14章 图像操作 559 14.1 图片的大小 560 14.2 图片与鼠标相关的操作 561 14.3 图片与时间相关的操作 580 14.4 图片的动画效果 589 14.5...

    JAVA 范例大全 光盘 资源

    实例201 Servlet生成的动态图片 658 实例202 简单的JSP上传文件 661 实例203 用Servlet获取Web服务器信息 666 实例204 可选择的图形验证码 670 实例205 简单的页面注册 675 实例206 用Servlet实现分页查看...

    init-spring:旧项目

    技术选择说明:管理 maven依赖和项目管理 git/svn 版本控制后端 Spring SpringMVC Spring data jpa(hibernate实现) Shiro 验证框架 hibernate validator 缓存 ehcache 数据源 druid servlet 3.0+前端 jsp 验证码 ...

Global site tag (gtag.js) - Google Analytics