`
holoblog
  • 浏览: 1258928 次
博客专栏
E0fcf0b7-6756-3051-9a54-90b4324c9940
SQL Server 20...
浏览量:19445
文章分类
社区版块
存档分类
最新评论

Jsp生成图片验证码

 
阅读更多

package cn.z.servlet;

import java.awt.Color;import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import java.awt.Font;

public class GenerateCheckCodeServlet extends HttpServlet {

// 生成的验证码的宽与高
int WIDTH = 80, HEIGHT = 30;

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setDateHeader(
"Expires", 0);
response.setHeader(
"Cache-control", "no-cache");
response.setHeader(
"Pragma", "no-cache");

ServletOutputStream out
= response.getOutputStream();
// 得到随机的验证码
char[] rands = generateCheckCode();

BufferedImage image
= new BufferedImage(WIDTH, HEIGHT,
BufferedImage.TYPE_INT_RGB);
Graphics g
= image.getGraphics();
// 先画背景
drawBackground(g);
// 再画验证码
drawCheckCode(g, rands);

g.dispose();
// 设置响应头为image/jpeg
response.setContentType("image/jpeg");

// 把验证码也放到session里,以便和用户手工输入的进行对比
request.getSession().setAttribute("check-code", new String(rands));
System.out.println(
new String(rands));

// 输出图片
ImageIO.write(image, "JPEG", out);

//一定要的

out.clear();
out
= pageContext.pushBody();

out.flush();
out.close();
}

// 生成4位随机验证码的函数
private char[] generateCheckCode() {
// 这个是用ASCII的方法,
char[] rands = new char[4];
int rand = -1;
for (int i = 0; i < rands.length; i++) {
while (rand < 48 || (rand > 57 && rand < 65)
|| (rand > 90 && rand < 97) || rand > 122) {

rand
= (int) (Math.random() * 127);
// System.out.print(rand + "/t");
}
rands[i]
= (char) rand;
}
return rands;
}

// 第二种生成验证码的方法
private char[] generateCheckCode2() {
// 这个是随机取出字符串中的字符.
String chars = "abcdefghijklmnopqrstuvwxyz123456789";
char[] rands = new char[4];
int rand = -1;
for (int i = 0; i < rands.length; i++) {

rand
= (int) (Math.random() * chars.length());
rands[i]
= chars.charAt(rand);
}
return rands;
}

private void drawCheckCode(Graphics g, char[] rands) {
// 在不同的高度画验证码的每一个字符
g.setColor(Color.BLACK);
g.setFont(
new Font(null, Font.ITALIC | Font.BOLD, 18));
g.drawString(
"" + rands[0], 11, 25);
g.drawString(
"" + rands[1], 26, 15);
g.drawString(
"" + rands[2], 41, 23);
g.drawString(
"" + rands[3], 56, 18);
}

private void drawBackground(Graphics g) {
// 画背景
g.setColor(new Color(0xdcdcdc));
g.fillRect(
0, 0, WIDTH, HEIGHT);

for (int i = 0; i < 500; i++) {
// 随机生成500个位置随机,颜色随机的干扰点,并画在背景上

int x = (int) (Math.random() * WIDTH);
int y = (int) (Math.random() * HEIGHT);

int red = (int) (Math.random() * 255);
int green = (int) (Math.random() * 255);
int blue = (int) (Math.random() * 255);

g.setColor(
new Color(red, green, blue));
g.drawOval(x, y,
2, 0);
}
}
}

分享到:
评论

相关推荐

    利用jsp生成图片验证码

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

    JSP生成图片验证码

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

    jsp生成图片验证码

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

    Jsp图片验证码

    JSP生成图片验证码步骤 #### 步骤1:生成随机字符串 首先,我们需要创建一个随机字符串。这通常通过Java的`Random`类和`StringBuilder`类实现,设定一个字符串长度,然后从预定义的字符集中随机选择字符。 ```...

    JSP 生成随机验证码图片(经典老代码)

    JSP 生成随机验证码图片(经典老代码)

    JSP页面验证码生成图片

    ### JSP页面验证码生成图片详解 #### 一、概述 在网站登录或注册过程中,为了防止恶意登录或机器人操作,通常会使用验证码机制。本文档详细介绍了一种利用JSP技术生成验证码图片的方法。该方法通过Java后端动态...

    生成验证码 jsp 图片验证码

    在本主题中,我们将详细探讨如何使用Java Servlet(jsp)来生成图片验证码。 首先,我们需要理解验证码的基本原理。验证码通常包含一串随机生成的字母和数字,显示在一张图片上,用户需要输入看到的文字以证明他们...

    Servlet生成图片验证码

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

    生成验证码图片的jsp代码

    在Web开发中,使用JSP(JavaServer Pages)来生成验证码图片是一种常见的方法。下面我们将详细讨论如何在JSP中实现验证码的生成。 首先,我们需要理解验证码的基本原理。验证码通常包含一串随机的字母和数字,有时...

    JSP中彩色验证码 注册验证码 中文验证码 图片验证码的生成

    JSP中彩色验证码 注册验证码 中文验证码 图片验证码的生成

    jsp四位验证码图片生成

    本主题聚焦于"jsp四位验证码图片生成",这是一个利用JSP(JavaServer Pages)技术来创建动态生成的4位数字验证码图片的过程。我们将探讨JSP验证码的原理、实现方式以及与JavaScript验证码的对比。 验证码的核心在于...

    jsp java 生成中文验证码

    4. **保存图像到HTTP响应**:将生成的验证码图像写入到HTTP响应的输出流中,以图片格式(如JPEG或PNG)提供给客户端浏览器。 5. **存储验证码值**:同时,需要将生成的验证码字符串存储在服务器的会话(session)中...

    java jsp 生成彩色验证码+验证功能代码,可直接运行,没有数据库

    JSP页面可以将生成的验证码图片发送到客户端,并存储验证码值在服务器端的session中,以便后续验证。 - **使用`&lt;jsp:include&gt;`标签**:将生成验证码的Java代码包含到JSP页面中。 - **`&lt;img&gt;`标签**:生成的验证码...

    Jsp-图片验证码及刷新

    首先,生成图片验证码的核心是创建并绘制一个包含随机文本的图片。`HelloImage.java`展示了这个过程的基本步骤: 1. **创建BufferedImage对象**:使用`BufferedImage`类的构造函数创建一个新的图片对象,指定图片的...

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

    ### JSP中利用Servlet生成验证码图片 在Web应用开发中,验证码被广泛应用于用户登录、表单提交等场景,以防止自动化的恶意攻击。本文将详细介绍如何在Java Server Pages (JSP) 和 Servlet 技术的基础上,实现一个...

    JSP 随机验证码

    总的来说,JSP生成的数字验证码结合了Java的强大功能和网页的交互性,提供了一种简单而有效的用户验证方法。在开发过程中,确保验证码的安全性和用户体验是至关重要的。通过对验证码的不断刷新和复杂化设计,我们...

    使用Servlet生成图片验证码

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

    java生成图片验证码

    生成四种样式的图片验证码 部署在web容器内,将web.xml,及index.jsp放入指定位置,启动后,即可看到效果。

    JSP生成彩色验证码程序

    本教程将深入讲解如何使用JSP来生成彩色的验证码程序。 一、验证码的基本原理 验证码的主要目的是通过要求用户输入图片上显示的一串随机字符,来验证用户是人而非机器。这些字符通常是扭曲的,以便增加机器识别的...

Global site tag (gtag.js) - Google Analytics