`
EJB_wawa
  • 浏览: 109012 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

    博客分类:
  • web
阅读更多
使用servlet编写一个验证码的例子
package 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;
          // 将认证码显示到图象中
          gra.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
          gra.drawString(rand,13*i+6,16);
      }
          //System.out.println("showimage="+sRand);
          //session.setAttribute("getImg",sRand);
          session.setAttribute("AuthCode",sRand);
          //AuthCode = sRand;
          //session.putValue("AuthCode",sRand);
          JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);
          encoder.encode(image);
          //out.flush();

}

    static 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);
    }
  
    static public String getAuthCode(HttpSession session){//返回验证
     return (String)session.getAttribute("AuthCode");
         
    }

分享到:
评论

相关推荐

    利用servlet动态生成验证码

    验证码通常以图像的形式呈现,所以我们还需要创建一个BufferedImage对象并绘制验证码字符串到这个图像上。使用Graphics2D类,我们可以设置字体样式、颜色,并在图像上绘制字符。同时,为了增加安全性,可以添加一些...

    网站验证码例子程序,可以直接使用

    这里提到的"验证码例子程序"很可能是一个基于图像的验证码系统,由Java编写。 Java是一种广泛使用的面向对象的编程语言,具有跨平台的特性,非常适合开发Web应用程序。在Java中实现验证码,我们可以使用如下的技术...

    jsp+servlet 生成验证码

    总的来说,"jsp+servlet 生成验证码"是一个典型的前后端交互的例子,它展示了如何利用Java Web技术实现动态的、安全的验证码功能,为Web应用提供了一道基础的安全屏障。对于初学者来说,理解和实现这个过程有助于...

    Servlet+JDBC实现登陆功能的小例子(带验证码)

    文章的描述部分表明了这篇文章将要详细介绍如何使用Servlet和JDBC技术来实现一个带验证码的登陆功能,这个例子对学习和工作都有很高的参考价值。 标签解释 文章的标签包括Servlet、JDBC、登陆、验证码登陆,这些...

    jsp引用servlet生成的验证码代码演示

    在这个例子中,`check.jsp` 将用于显示生成的验证码,通常会包含一个表单,用户可以输入看到的验证码,然后提交表单进行验证。 3. **验证码生成**: - `checkCode.java` 文件包含了一个用于生成验证码的类。类中...

    java servelet 演示例子

    在"文件名称列表"中提到的"sproj"可能是项目文件或者源代码文件,这可能包含了一个Servlet的实现,用于处理验证码的生成和验证,以及与数据库交互的代码。你可能在其中看到以下关键部分: 1. **Servlet配置**:在`...

    简易登录源码(包含用户名,密码,验证码)

    验证码是一种防止恶意自动提交的安全机制,通常会生成一个随机图像和字符串,用户需要正确输入才能完成登录。这个Servlet可能负责生成验证码,并在用户提交时验证其输入是否正确。 2. `IndexServlet.java`:这通常...

    JSP验证码,这个是我自己刚测试过的,非常好用

    在这个例子中,`yanzheng.jsp`是生成验证码图像的页面,通过传递一个随机参数来防止浏览器缓存。 总结来说,JSP验证码的核心在于生成随机字符串和创建图像,同时确保在服务器端保存对应的验证码值。通过这种方式,...

    simple servlet for login

    在这个"simple servlet for login"项目中,我们可以推测这是一个基本的登录系统,使用Eclipse作为开发环境。 Eclipse是一款流行的集成开发环境(IDE),支持多种编程语言,包括Java。为了创建一个简单的Servlet登录...

    jsp+javabean+servlet版留言本(J2EE例子)

    mvc版留言本,采用jsp+javabean+servlet编写,即model2版 eclipse项目,可以直接导入,数据库类型mysql,支持分页,ajax验证码.代码内有详细注解,一看就明白,本人一直坚持简单易懂原则,帮助更多的初学者更快的掌握j2ee技术...

    仿CSDN样式(Struts2中文验证码源代码)

    5. **JSP页面**:用于显示验证码的页面,可能会包含一个图像标签,该标签的src属性指向一个Servlet,该Servlet负责生成并输出验证码图像。 6. **Servlet**:这个项目中可能包含一个专门生成验证码的Servlet。它会...

    J2EE小例子

    **部署到Tomcat**:Tomcat是一个流行的开源Servlet容器,用于运行Java Web应用程序。用户需要将编译后的WAR文件放入Tomcat的webapps目录下,然后启动Tomcat,论坛系统就能通过浏览器访问了。 通过这个SSH小例子,...

    json解析在android和servlet 中应用

    在上述描述中,发送验证码的接口就是一个例子,它需要一个JSON对象包含"mobile"和"smstype"两个字段,通过POST请求发送到指定URL。 在Servlet端,接收到JSON数据后,可以使用如Jackson或Gson库来解析JSON字符串,...

    springMVC简单登陆例子

    - 编写一个Controller类,比如`LoginController`,并使用`@RequestMapping`注解来映射登录请求。例如:`@RequestMapping("/login")` - 在Controller方法中,使用`@RequestParam`或`@ModelAttribute`获取请求参数,...

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

    4.24.3 一个例子 178 4.25 小结 179 第2部分 servlet篇 第5章 servlet与tomcat 182 5.1 servlet与servlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 ...

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

    4.24.3 一个例子 178 4.25 小结 179 第2部分 servlet篇 第5章 servlet与tomcat 182 5.1 servlet与servlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 ...

    idea做一个带有验证码的登录界面,包函forword转发和sendRedirect重定向方法

    在开发Web应用时,创建一个带有验证码的登录界面是提高安全性的重要步骤。在这个过程中,`forward`和`redirect`是两种常见的服务器端处理用户请求的方法。本文将详细讲解如何使用IntelliJ IDEA(Idea)来实现这个...

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

    4.24.3 一个例子 178 4.25 小结 179 第2部分 servlet篇 第5章 servlet与tomcat 182 5.1 servlet与servlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 ...

    Demo.zip_DEMO

    总结起来,"Demo.zip_DEMO" 提供了一个关于如何在Tomcat环境下部署和使用验证码功能的实例,这对于我们理解Web应用的安全机制、JSP编程以及服务器端验证逻辑的实现具有一定的学习价值。通过研究这个示例,开发者可以...

    springmvc + hibernate4 简单登录例子

    在本教程中,我们将探讨如何使用Spring MVC和Hibernate 4构建一个简单的登录系统。Spring MVC是Spring框架的一部分,专门用于处理Web应用的请求-响应模型,而Hibernate 4则是一个强大的对象关系映射(ORM)工具,...

Global site tag (gtag.js) - Google Analytics