`
375809600
  • 浏览: 153177 次
  • 来自: 湖北
社区版块
存档分类
最新评论

注册时,随机图片的生成,和换一张图片

阅读更多

 

package com.itcast.servlet;

 

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.io.IOException;

import java.util.Random;

 

import javax.imageio.ImageIO;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

public class ValidatePhotoServlet extends HttpServlet {

private final int WIDTH = 100;

private final int HEIGHT = 30;

 

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

BufferedImage image = new BufferedImage(WIDTH, HEIGHT,

BufferedImage.TYPE_INT_RGB);// 获得一个图片对象

Graphics g = image.getGraphics();

// 设置背景色

setBackground(g);

// 设置边框

setBorder(g);

// 画干扰线

drawLine(g);

// 写随机数

drawrandom((Graphics2D) g);

// 画图

response.setContentType("image/jpeg");

ImageIO.write(image, "jpeg", response.getOutputStream());

response.setDateHeader("Expries", -1);// 设置没有缓存

response.setHeader("Cache_Control", "no_cache");

 

}

 

private void drawrandom(Graphics2D g) {

g.setColor(Color.RED);

g.setFont(new Font("宋体", Font.BOLD, 20));// 设置字体的格式

String base = "\u7684\u4e00\u4e80";// unicode码,用来生成汉字

int x = 5;

for (int i = 0; i < 5; i++) {

int degree = new Random().nextInt() % 30;// 这个是生成-30-30

String ch = (base.charAt(new Random().nextInt(base.length() - 1)) + "");// 随机获得汉字

g.rotate(degree * Math.PI / 180, x, 20);// degree * Math.PI /

// 180旋转的弧度 绕着这个点旋转 x, 20

g.drawString(ch, x, 20);// 把字写进去,Y不变,x每次加20

g.rotate(-degree * Math.PI / 180, x, 20);// 旋转回来,为下一个汉字旋转做准备

x = x + 20;

 

}

}

 

private void drawLine(Graphics g) {

g.setColor(Color.GREEN);

for (int i = 0; i < 5; i++) {

int x1 = new Random().nextInt(WIDTH);

int x2 = new Random().nextInt(WIDTH);

int y1 = new Random().nextInt(HEIGHT);

int y2 = new Random().nextInt(HEIGHT);

g.drawLine(x1, y1, x2, y2);

 

}

}

 

private void setBorder(Graphics g) {

g.setColor(Color.BLUE);

g.drawRect(1, 1, WIDTH - 2, HEIGHT - 2);

}

 

private void setBackground(Graphics g) {

g.setColor(Color.WHITE);// 设置画笔的颜色

g.drawRect(0, 0, WIDTH, HEIGHT);// 设置用画笔划出的矩形

 

}

 

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doGet(request, response);

}

 

}

实现图片换一张的关键script代码

<input type="text" /><img src="/day_confirm/servlet/ValidatePhotoServlet" alt="换一张" onclick="changeimage(this)"/>

<script type="text/javascript">
function changeimage(img){
img.src=img.src+"?"+new Date().getTime();

}
</script>
分享到:
评论

相关推荐

    随机图片生成

    在IT行业中,随机图片生成是一种常见的安全验证手段,特别是在用户注册、登录或其他敏感操作时,用来防止自动化的机器人或恶意脚本进行攻击。这个场景下,我们关注的是使用Servlet和Java图形界面编程来实现这一功能...

    asp.net 生成随机验证码

    在ASP.NET中,生成随机验证码是一项常见的安全措施,主要用于防止自动化程序(如机器人)进行恶意操作,例如防止垃圾注册或防止投票刷票等。验证码通常表现为一张包含随机字符的图片,用户需要输入图片中显示的字符...

    .net 生成 验证码 验证图片

    验证码通常由一串随机的字母和/或数字组成,显示在一张图片上,用户需要正确输入才能通过验证。下面我们将详细探讨如何在.NET中实现这个功能。 首先,验证码的生成过程包括以下几个步骤: 1. **随机生成验证码内容...

    安卓验证码相关-随机图片验证码适合登录页面使用点击更换输入错误自动更换.rar

    首先,随机图片验证码是一种基于图像的验证方式,它的核心思想是生成一串随机字符,并将这些字符以扭曲、旋转、加噪等方式显示在一张图片上,用户需要正确输入图片中显示的字符才能通过验证。这种方式增加了机器解析...

    验证码图片生成器,java源码

    验证码图片生成器是一种用于网络安全验证的技术,主要用于防止自动化的机器人或恶意软件进行非法操作,如批量注册、恶意登录等。这个Java源码实现的验证码生成器具有易用性且适应性强,可以根据需求调整验证码的类型...

    生成验证码 jsp 图片验证码

    验证码通常包含一串随机生成的字母和数字,显示在一张图片上,用户需要输入看到的文字以证明他们不是计算机程序。这样,只有人类能够完成验证,而机器由于无法识别图片中的文本,因此无法自动完成任务。 在JSP...

    jsp生成图片验证码

    验证码通常由一串随机生成的字母、数字组合而成,显示在一张图片上,并要求用户在输入框中输入相同的字符序列以证明其为人类。这样做是为了防止机器自动识别并输入验证码,增加自动化攻击的难度。 生成JSP图片...

    动态生成图片验证码

    2. **扭曲与变形**:生成的字符串会被绘制到一张图片上,但不是简单的直线显示,而是通过扭曲、倾斜、抖动、添加噪声、改变字体样式等手段,使得机器难以通过图像识别算法读取。 3. **颜色与背景**:为了进一步增加...

    iOS生成图片文字验证码源码.zip

    验证码通常包含一组随机生成的数字和/或字母,这些字符被绘制到一张图片上,然后展示给用户。用户需要输入他们看到的字符序列以证明他们是人而不是机器。这种机制增加了自动化程序解析和模仿验证码的难度。 该...

    用户注册时使用的图片验证码程序

    程序使用了`BufferedImage`类来创建一张图片,并使用`Graphics`对象在上面绘制文本和干扰元素。例如,文本是用黑色字体绘制的,而背景色则设置为灰色。此外,还添加了一些随机分布的小圆点作为干扰元素,以增加破解...

    Web开发-如何生成包含字母和数字的图片验证码-Python实例源码.zip

    图片验证码会将这些字符以扭曲、变形、加噪等方式显示在一张图片上,用户需要正确识别并输入字符才能完成验证,从而证明自己是真人而非机器。 Python中实现这个功能,我们可以利用`PIL`(Python Imaging Library)...

    动态滑动后端验证码实现

    - 在生成验证码时,服务器会从图像库中随机选择一张图片,然后将图片的某一部分遮挡(通常通过切割),形成两个图片部分:完整图像和遮挡后的图像。 4. **Java后端实现**: - 后端代码负责处理图片的生成、分割...

    PHP生成图片验证码、点击切换实例

    这个函数接受一个参数$len,表示生成字符串的长度,由字母和数字随机组合而成,保证了验证码的随机性和复杂度。 3. 图片验证码的绘制:使用GD库来创建一个指定宽度和高度的图片。GD库是PHP的一个用于处理图像的扩展...

    ValidateCode.jar包下载含用法,Java生成图片验证码

    总之,`ValidateCode.jar`包为Java开发者提供了一个方便的工具,用于快速实现图片验证码功能,而无需从头编写复杂的图像处理和随机生成逻辑。它的灵活性和易用性使得在实际项目中集成验证码变得简单高效。通过适当的...

    httpHandler实战应用:RSS-图片防盗链接-图片验证码

    HTTPHandler在此过程中负责生成验证码图片,包括随机字符的生成、颜色、字体和背景的设置等。 在实际开发中,我们可以创建一个专门处理验证码请求的HTTPHandler,例如`VerifyCode.ashx`。这个处理器会根据请求生成...

    java完美的验证码生成

    - 使用JavaScript和Ajax技术,当用户点击“换一张”按钮时,发送异步请求到服务器获取新的验证码,无需刷新整个页面。 - 验证码的更新和验证都通过Ajax完成,提升用户体验。 6. **代码注释和操作方法**: - 为了...

    仿售票网站的图片验证码

    通常,一个图片验证码会生成一组随机字符或数字,然后将它们扭曲、添加背景噪声、拼接图片等,形成一张难以被机器识别的图片。用户需要正确输入图片中的字符才能完成验证。 在Android开发中,实现这个功能可以分为...

    安卓摇一摇传感器相关-仅需摇一摇就可以随机切换背景图片.rar

    - 使用`Math.random()`生成一个随机索引,根据这个索引从图片数组中取出一张图片,并设置为当前Activity的背景。 - 注意处理边界情况,确保随机索引的有效性,避免数组越界。 6. **优化与注意事项** - 考虑到...

    asp.net图片验证码

    ASP.NET 图片验证码是一种常用的网络安全措施,用于防止自动化的机器人或恶意软件进行非法操作,如批量注册、垃圾邮件发送等。...实际应用时,开发者需要根据项目需求和安全性要求,定制合适的验证码生成策略。

    Spring框架生成图片验证码实例

    验证码是Web应用中常见的一种安全机制,用于防止自动化的机器人或者恶意用户进行非法操作,比如批量注册、频繁登录...通过以上步骤,我们可以实现在Spring框架中安全有效地生成和验证图片验证码,提高Web应用的安全性。

Global site tag (gtag.js) - Google Analytics