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 Servlet来实现这一过程。 首先,我们来看标题"java生成图片验证码"。这个标题暗示我们将探讨的是在Java...
在本主题“利用jsp生成图片验证码”中,我们将探讨如何在JavaServer Pages (JSP)上下文中创建一个简单的图片验证码,而无需使用Servlet。首先,我们要明白JSP是Java Web开发中的视图层技术,它允许我们在HTML页面中...
### ASP.NET生成图片验证码知识点详解 #### 一、概述 在Web应用开发中,验证码是一种常见的安全措施,用于区分操作者是人还是自动化程序。本文将详细介绍如何在ASP.NET环境中生成图片验证码,包括代码实现与关键...
PHP快速生成图片验证码并且实现验证插件 1.插件作用: 本插件可以快速实现网站验证码功能,包括验证码的生成和验证。 2.所需参数: CaptchaTool类包括两个方法,generate方法可以实现生成'...
该资源是谷歌 kaptcha jar包,以及该jar包的使用说明,这是谷歌自动生成图片验证码,大大节省的开发时间,用起来比较简单,已过时,但仍然可以使用,喜欢的小伙伴就下载吧,有什么不懂的地方可以咨询博主。
在这个场景中,我们使用Servlet来生成图片验证码,这是一种防止恶意自动化程序(如机器人)进行非法操作的安全机制。验证码通常是一串随机生成的字符,以图像形式显示,用户需要在输入框中正确输入才能完成验证。 ...
JSP生成图片验证码.txtJSP生成图片验证码.txtJSP生成图片验证码.txtJSP生成图片验证码.txtJSP生成图片验证码.txt
Android实现随机生成图片验证码的示例程序,直接构建运行,代码文件简单易参考 Android实现随机生成图片验证码的示例程序,直接构建运行,代码文件简单易参考 Android实现随机生成图片验证码的示例程序,直接构建...
本示例将详细介绍如何使用.NET框架下的C#语言,结合imageProcessing.dll库,快速生成图片验证码。 首先,我们要了解imageProcessing.dll库。这是一个专门为C#开发者设计的图像处理库,提供了丰富的图像操作函数,如...
动态生成图片验证码的目的是防止自动化程序(如爬虫或恶意脚本)自动填写表单,从而提高网站的安全性。 在Servlet中生成图片验证码,首先需要创建一个Servlet类,该类将负责生成随机字符串并将其转化为图像。以下是...
在IT领域,验证码(CAPTCHA)是一...在提供的压缩包文件“图片验证码生成”中,可能包含了实现上述功能的源代码示例,你可以通过学习和理解这些代码,加深对Java生成图片验证码的理解,并根据实际需求进行调整和优化。
使用示例,请自行修改代码以适应你的页面: 提交页from.asp '如果验证码为空或者验证码不...调用页main.asp,点击图片更换验证码 <script language=javascript>document.write("(); alt=看不清楚/>"); 提交" />
在本主题中,我们将深入探讨如何使用Java来生成图片验证码。Java生成图片验证码的过程涉及图像处理、随机数生成以及字符串编码等多个知识点。 首先,验证码的核心是生成一个随机的字符串,通常包含字母和数字。在...
生成图片验证码涉及到以下几个关键知识点: 1. **服务器端代码**:通常使用ASP.NET的代码-behind(如C#或VB.NET)来编写生成验证码的逻辑。这包括生成随机字符串、绘制图片以及添加噪音线和点以增加识别难度。 2. ...
在"使用Servlet生成图片验证码"这个主题中,我们首先会创建一个Servlet来生成随机的字母和数字组合,通常包含4到6位。这可以通过Java的Random类和Character类来实现。验证码生成后,将其保存在服务器的内存中,以便...
源码提供了一个生成图片验证码的工具类,适用于各种需要验证码的场景,如用户注册、登录等。该工具类使用随机字符生成验证码,并支持自定义验证码长度和字体样式。生成的验证码图片背景透明,线条清晰,可轻松辨认。...
本教程将聚焦于PHP如何生成图片验证码,这对于Web开发人员来说是一项基本技能。 首先,我们需要理解验证码的基本原理。验证码通常包含随机生成的一串字符,这些字符可能是字母、数字或者两者的组合,有时还会包含...
PHP生成图片验证码技术详解 PHP 生成图片验证码是 Web 开发中常用的安全机制,用来防止机器人程序的恶意攻击。下面我们将详细介绍 PHP 生成图片验证码的技术实现。 session_start() 函数 在 PHP 中,session_...
在IT领域,生成图片验证码(CAPTCHA)是一种广泛使用的安全技术,用于防止自动化程序(如机器人)进行恶意操作。在本教程中,我们将探讨如何使用Python来生成中文图片验证码。这个过程涉及到图像处理、随机字符生成...
总结来说,使用JSP生成图片验证码涉及到以下几个关键点:生成随机字符串、存储验证码、绘制并输出图片以及设置HTTP响应类型。这种方法简单易用,但要注意,对于高级的自动化攻击,可能需要更复杂的验证码解决方案,...