`
CoderAJ
  • 浏览: 5535 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
最近访客 更多访客>>
社区版块
存档分类
最新评论

生成图片验证码

    博客分类:
  • Java
阅读更多

1,定义生成图片验证码的servlet,

 

package com.test.demo;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class RandCode extends HttpServlet {

	
	protected static Random random=new Random();
	
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
			doPost(req,resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		req.setCharacterEncoding("utf-8");
		resp.setCharacterEncoding("utf-8");
		resp.setContentType("image/jpeg"); //设置输出类型为jpeg图片
		int width=70;
		int height=25;                     //验证图片的宽度,高度
		Color back=getBack();
		Color front=getFront(back);
		String code=getString();
		req.getSession().setAttribute("rand", code);  //保存到session里面
        BufferedImage bi=new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
        Graphics2D g=bi.createGraphics();   //得到画布
        g.setFont(new Font(Font.SANS_SERIF,Font.BOLD,20));  //设置字体
        g.setColor(back);
        g.fillRect(0, 0, width, height);    //画背景
        g.setColor(front);
        g.drawString(code,18,20);           //画字符
        for(int i=0,n=random.nextInt(20);i<n;i++){
        	g.fillRect(random.nextInt(width),random.nextInt(height),1,1);
        	
        }                                   //产生至多20个噪点
        ServletOutputStream so=resp.getOutputStream();  //得到二进制输出流 
        JPEGImageEncoder je=JPEGCodec.createJPEGEncoder(so); //对图片进行编码成jpeg格式
        je.encode(bi);                    
        so.flush();                         //刷新缓存
		
		
	}
	/**
	 * @desc 得到图片背景色
	 * @author aj
	 * @date 2011-3-30
	 * */
	protected static Color getBack(){
		return new Color(random.nextInt(255),random.nextInt(255),random.nextInt(255));
	}
	/**
	 * @desc 生成颜色的反色
	 * @author aj
	 * @date 2011-3-30
	 * */
	protected static Color getFront(Color c){
		return new Color(255-c.getRed(),255-c.getGreen(),255-c.getBlue());
		
	}
	/**
	 * @desc 产生随机字符
	 * @author aj
	 * @date 2011-3-30
	 * */
	protected static String getString(){
		String old="23456789abcdefghijkmnpqrstuvwxyz"; //验证图片上面的随机字符
		StringBuffer sb=new StringBuffer();
		int j=0;
		for(int i=0;i<4;i++){
			j=random.nextInt(old.length());
			sb.append(old.substring(j,j+1));
		}
		
	   return sb.toString();	
	}
   
}

 2,定义jsp文件,使用验证码并通过按钮切换验证码;

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
     <script type="text/javascript">
         function change(){
			  document.getElementById("code").src="Rand?sc="+new Date().getTime();		
             };
     </script>
</head>
<body>
  <div>
    <span><img src="Rand" id="code"/><button id="btn" style="margin-left:12px;" onclick="change();">看不清</button></span>
  </div>
</body>
</html>
 
分享到:
评论

相关推荐

    java生成图片验证码

    Java作为一门广泛使用的服务器端编程语言,提供了丰富的功能来生成图片验证码。本篇将深入讲解如何使用Java Servlet来实现这一过程。 首先,我们来看标题"java生成图片验证码"。这个标题暗示我们将探讨的是在Java...

    利用jsp生成图片验证码

    在本主题“利用jsp生成图片验证码”中,我们将探讨如何在JavaServer Pages (JSP)上下文中创建一个简单的图片验证码,而无需使用Servlet。首先,我们要明白JSP是Java Web开发中的视图层技术,它允许我们在HTML页面中...

    ASP.NET生成图片验证码

    ### ASP.NET生成图片验证码知识点详解 #### 一、概述 在Web应用开发中,验证码是一种常见的安全措施,用于区分操作者是人还是自动化程序。本文将详细介绍如何在ASP.NET环境中生成图片验证码,包括代码实现与关键...

    PHP快速生成图片验证码并且实现验证插件.rar

    PHP快速生成图片验证码并且实现验证插件 1.插件作用: 本插件可以快速实现网站验证码功能,包括验证码的生成和验证。   2.所需参数: CaptchaTool类包括两个方法,generate方法可以实现生成'...

    谷歌 kaptcha 自动生成图片验证码

    该资源是谷歌 kaptcha jar包,以及该jar包的使用说明,这是谷歌自动生成图片验证码,大大节省的开发时间,用起来比较简单,已过时,但仍然可以使用,喜欢的小伙伴就下载吧,有什么不懂的地方可以咨询博主。

    Servlet生成图片验证码

    在这个场景中,我们使用Servlet来生成图片验证码,这是一种防止恶意自动化程序(如机器人)进行非法操作的安全机制。验证码通常是一串随机生成的字符,以图像形式显示,用户需要在输入框中正确输入才能完成验证。 ...

    JSP生成图片验证码

    JSP生成图片验证码.txtJSP生成图片验证码.txtJSP生成图片验证码.txtJSP生成图片验证码.txtJSP生成图片验证码.txt

    Android实现随机生成图片验证码的示例程序,直接构建运行,代码文件简单易参考

    Android实现随机生成图片验证码的示例程序,直接构建运行,代码文件简单易参考 Android实现随机生成图片验证码的示例程序,直接构建运行,代码文件简单易参考 Android实现随机生成图片验证码的示例程序,直接构建...

    快速生成图片验证码的例子

    本示例将详细介绍如何使用.NET框架下的C#语言,结合imageProcessing.dll库,快速生成图片验证码。 首先,我们要了解imageProcessing.dll库。这是一个专门为C#开发者设计的图像处理库,提供了丰富的图像操作函数,如...

    登陆验证+servlet动态生成图片验证码

    动态生成图片验证码的目的是防止自动化程序(如爬虫或恶意脚本)自动填写表单,从而提高网站的安全性。 在Servlet中生成图片验证码,首先需要创建一个Servlet类,该类将负责生成随机字符串并将其转化为图像。以下是...

    java 生成图片验证码

    在IT领域,验证码(CAPTCHA)是一...在提供的压缩包文件“图片验证码生成”中,可能包含了实现上述功能的源代码示例,你可以通过学习和理解这些代码,加深对Java生成图片验证码的理解,并根据实际需求进行调整和优化。

    asp生成图片验证码类

    使用示例,请自行修改代码以适应你的页面: 提交页from.asp '如果验证码为空或者验证码不...调用页main.asp,点击图片更换验证码 &lt;script language=javascript&gt;document.write("(); alt=看不清楚/&gt;"); 提交" /&gt;

    Java生成图片验证码

    在本主题中,我们将深入探讨如何使用Java来生成图片验证码。Java生成图片验证码的过程涉及图像处理、随机数生成以及字符串编码等多个知识点。 首先,验证码的核心是生成一个随机的字符串,通常包含字母和数字。在...

    asp页面无刷新生成图片验证码

    生成图片验证码涉及到以下几个关键知识点: 1. **服务器端代码**:通常使用ASP.NET的代码-behind(如C#或VB.NET)来编写生成验证码的逻辑。这包括生成随机字符串、绘制图片以及添加噪音线和点以增加识别难度。 2. ...

    使用Servlet生成图片验证码

    在"使用Servlet生成图片验证码"这个主题中,我们首先会创建一个Servlet来生成随机的字母和数字组合,通常包含4到6位。这可以通过Java的Random类和Character类来实现。验证码生成后,将其保存在服务器的内存中,以便...

    Java生成图片验证码工具类源码

    源码提供了一个生成图片验证码的工具类,适用于各种需要验证码的场景,如用户注册、登录等。该工具类使用随机字符生成验证码,并支持自定义验证码长度和字体样式。生成的验证码图片背景透明,线条清晰,可轻松辨认。...

    PHP生成图片验证码

    本教程将聚焦于PHP如何生成图片验证码,这对于Web开发人员来说是一项基本技能。 首先,我们需要理解验证码的基本原理。验证码通常包含随机生成的一串字符,这些字符可能是字母、数字或者两者的组合,有时还会包含...

    php生成图片验证码.pdf

    PHP生成图片验证码技术详解 PHP 生成图片验证码是 Web 开发中常用的安全机制,用来防止机器人程序的恶意攻击。下面我们将详细介绍 PHP 生成图片验证码的技术实现。 session_start() 函数 在 PHP 中,session_...

    python生成图片验证码

    在IT领域,生成图片验证码(CAPTCHA)是一种广泛使用的安全技术,用于防止自动化程序(如机器人)进行恶意操作。在本教程中,我们将探讨如何使用Python来生成中文图片验证码。这个过程涉及到图像处理、随机字符生成...

    jsp生成图片验证码

    总结来说,使用JSP生成图片验证码涉及到以下几个关键点:生成随机字符串、存储验证码、绘制并输出图片以及设置HTTP响应类型。这种方法简单易用,但要注意,对于高级的自动化攻击,可能需要更复杂的验证码解决方案,...

Global site tag (gtag.js) - Google Analytics