`
victordpg
  • 浏览: 16412 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

通过servlet 实现图片验证码功能

 
阅读更多

 通过servlet 实现图片验证码功能,分3步实现:

import javax.servlet.http.servlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletException;
import javax.servlet.ServletOutputStream;
import java.io.Exception;
import java.util.Randow;
import java.awt.Color;
import java.awt.Image.BufferImage;
import java.awt.Graphics2D;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.sun.image.codec.jpeg.JPEGCodec;

/**
 通过servlet实现验证码功能
*/
public class CodeServlet extends HttpServlet{

//声明字符数组常量,随机数从此常量中获取(去除了些常见的容易产生歧义的字符如'1','l','0','o'等)
publis static final char[] CHARS= {'2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','g','k','m','n','p','q','r','s','t','u','v','w','x','z'}

public static Randow randow = new Randow();//声明随机数

//获取4位的随机数
public static String getRandow(){
  StringBuffer buffer= new StringBuffer();
  for(int i=0; i<4; i++){
    buffer.append(CHARS[randow.nextInt(CHARS.length())]);
  }
  return buffer.toString();
} 

//获取随机颜色
public static Color getColor(){
  return new Color(radow.nextInt(255),radow.nextInt(255),radow.nextInt(255));
}

//获取随机颜色反色
public static Color getReverseColor(Color c){
  return new Color(255-c.getRed(), 255-c.getGreen(), 255-c.getBlue());
}

public void doGet(HttpServletRequst request, HttpServletResponse response) throws HttpServletException,IOException{
  //设置相应类型,此处相应类型为图片,HTML文本为(text/html)
  response.setContentType("image/jpeg");
  //request.setCharacterEncoding = "UTF-8"; //设置请求的编码格式
 //response.setCharacterEncoding = "UTF-8"; //设置响应的编码格式
  String rdmString  = getRandom();
  //设置Session以便与前台输入的随机数对比
  request.getSession().setAttribute("rdmString",rdmString);
  int width = 50;
  int height = 20;
  Color clr = getColor();
  Color rclr = getReverseColor(clr);

  //创建图片对象,绘制图片,设置图片属性,产生噪点(最多50个),对图片对象编码
  BufferImage bi = new BufferImage(width, height, BufferImage.TYPE_INT_RGB);
  Graphics2D g = bi.createGraphics();
 g.setFont(new Font(FONT.SANS_SERFS,FONT.BOLD,12));
  g.setColor(clr);
  g.fillRect(0,0,width,height);
  g.setColor(rclr);
  g.drawString(rdmString,10,10);
  for(int i=0,n=random.nextInt(50); i<n; n++,i++){
   g.drawRect(width,height,1,1);  
 }
  
  ServletOutputStream out = response.getOutputStream();
  JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
  encoder.encode(bi);//对图片对象编码
  out.flush();
}
} 
<servlet>
<servlet-name>codeServlet</servlet-name>
<servlet-class>com.servlet.CodeServlet</servlet-class><!-- 实际的类路径 -->
</servlet>

<servlet-mapping>
<servlet-name>codeServlet</servlet-name>
<url-pattern>/servlet/codeServlet</url-pattern>
</servlet-mapping> 
<script>
fucntion loadIMG(){
  document.getElementById('btn1').disabled = true;
  document.getElementById('img1').src = "servlet/codeServlet?ts='+new Date().getTime+'";
}
</script>
<img id="img1" src="servlet/codeServlet" onload="btn1.disabled = false;">
<input type="button" id="btn1" value="换一张" onclick="loadIMG()">

 

分享到:
评论

相关推荐

    servlet实现的图片验证码

    本教程将详细介绍如何使用Servlet技术来实现一个基本的图片验证码功能。Servlet是Java服务器端编程的核心技术之一,它可以接收和响应HTTP请求,非常适合构建动态Web应用程序。 首先,我们需要理解验证码的基本原理...

    基于servlet实现简单验证码验证

    SSH框架提供了模型-视图-控制器(MVC)的架构,使得验证码功能的实现更加方便和高效。 首先,我们需要理解Servlet。Servlet是Java Web开发中的一个核心组件,它是一个Java类,用于扩展服务器的功能。在验证码场景下...

    SSM实现登录验证码功能

    通过以上步骤和组件,SSM框架可以成功地实现登录验证码功能,为Web应用提供了一道安全防线。在实际开发中,我们还应结合具体业务需求,对验证码的复杂度、长度和有效期进行适当调整,以达到最佳的平衡点。

    用servlet实现验证码功能

    以上就是使用Servlet实现验证码功能的基本步骤。需要注意的是,为了提高安全性,实际应用中还需要考虑缓存清除、超时机制、防止重放攻击等问题。此外,随着技术的发展,现在还有更复杂的验证码解决方案,如滑动...

    验证码校验servlet实现

    在本项目中,我们通过Servlet来实现验证码的校验功能,这是一个典型的Web开发中的验证流程。Servlet是Java中用于处理HTTP请求的服务端组件,它可以接收用户的请求并返回响应。 首先,我们需要理解验证码的基本原理...

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

    #### 三、生成验证码图片的Servlet实现 下面通过具体的代码示例来解释如何使用Servlet生成验证码图片。 ```java public class CreateImageServlet extends HttpServlet { public void doGet(HttpServletRequest ...

    JAVA实现网站验证码功能demo(servlet)

    通过以上步骤,我们就实现了一个基于Servlet的简单验证码功能。这个demo不仅展示了Servlet的基本用法,还涵盖了图像处理、HTTP响应以及session管理等关键知识点。在实际项目中,还可以根据需求进行优化,如使用更...

    用servlet实现动态的生成验证码,点击验证码改变,及验证码的校验

    本教程将详细解释如何使用Servlet技术来实现一个动态的验证码功能,包括点击验证码后更换新的验证码以及验证码的验证过程。 一、Servlet基础 Servlet是Java EE中用于处理HTTP请求的服务器端组件。它接收客户端...

    前后端分离(vue+servlet)实现验证码

    "前后端分离(vue+servlet)实现验证码" 验证码的重要性 在当前的web应用程序中,验证码是一种非常重要的安全机制,用于防止机器人和恶意攻击。验证码可以确保用户的身份验证,防止恶意攻击和机器人攻击。 前后端...

    生成验证码(带详细注释、Servlet已获取生成的验证码和输入的验证码)

    总结,本项目实现了基于Java Servlet的验证码生成与验证功能,涵盖了随机数生成、图像处理、HTTP交互等多个技术点。通过对验证码的生成、发送、验证以及前端的交互处理,确保了用户输入的安全性和系统的可靠性。

    Buffalo+servlet实现验证码.doc

    本示例通过使用Buffalo框架和Servlet来实现一个简单的图形验证码功能。下面将详细介绍这个实现过程中的关键知识点。 1. **Buffalo框架**:Buffalo是一个轻量级的Java服务框架,它提供了一种简单的方式来处理HTTP...

    java web笔记之servlet生成验证码

    通过上述步骤,我们可以使用Servlet在Java Web应用中实现一个简单的验证码生成器。当然,实际项目中可能需要考虑更多的细节,如优化验证码的显示效果,增加时间戳防止重放攻击,以及结合其他安全措施等。

    servlet实现的图片验证功能

    在这个案例中,我们讨论的是使用Servlet来实现图片验证码的功能,这是一项关键的Web安全技术。 Servlet是Java服务器端编程的一种方式,它扩展了服务器的功能,允许开发者创建动态、交互式的Web应用程序。在这个场景...

    jsp,servlet,验证码,验证码点击更换

    在创建验证码功能时,JSP可以用来展示验证码图像,并处理用户的验证请求。 Servlet则是Java的服务器端程序,它负责接收并处理HTTP请求,执行业务逻辑,并生成响应。在验证码系统中,Servlet可以生成随机验证码字符...

    jsp servlet 验证码

    在Java Web开发领域中,经常利用JSP(JavaServer Pages)与Servlet技术来实现验证码功能。本文将详细解析一个具体的JSP Servlet验证码实现案例。 #### 二、核心概念 1. **Servlet**:Servlet是一种基于Java的技术...

    java Servlet 实现动态验证码图片示例

    在这个场景中,我们将深入探讨如何使用Java Servlet来实现一个动态的验证码图片生成器。 首先,`HackerServlet` 类继承自 `HttpServlet`,这是Java Servlet API中的一个抽象类,用于处理HTTP请求。Servlet是Java...

    Java实现随机验证码功能实例

    验证码实际上就是随机选择一些字符以图片的形式展现在页面上,如果进行提交操作的同时需要将图片上的字符同时提交,如果提交的字符与服务器session保存的不同,则认为提交...本文介绍了使用servlet来实现随机验证码。

    servlet验证码的代码

    在Java Web开发中,Servlet是一种用于扩展服务器功能的Java类,它可以处理HTTP请求并返回响应。...通过学习和理解这些代码,开发者可以掌握如何在实际项目中实现验证码功能,增强Web应用的安全性。

    Servlet仿CSDN动态验证码的生成-带数字和字母

    本文主要探讨如何使用Servlet技术来模仿CSDN网站的动态验证码生成过程,其中包括数字和字母的组合,以及加减乘三种运算的实现。 首先,我们要理解Servlet的原理。Servlet是Java EE中的一种服务器端组件,用于扩展...

Global site tag (gtag.js) - Google Analytics