package com.servlet;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.imageio.ImageIO;
public class Image extends HttpServlet {
public void destroy() {
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 设置编码格式
response.setContentType("image/jpeg");
// 创建图片的大小
int width = 85;
int height = 20;
// 创建一个img对象
BufferedImage img = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Random ran = new Random();
// 得到画笔
Graphics g = img.getGraphics();
// 设置画笔的样式
Color c = g.getColor();
Font f = g.getFont();
g.setColor(Color.pink);// 设置背景色
g.fillRect(0, 0, width, height); // 填充背景色
// 文字的操作
StringBuffer sb = new StringBuffer();
g.setFont(new Font("黑体", Font.BOLD, 16));
for (int i = 0; i < 4; i++) {
g.setColor(new Color(ran.nextInt(100), ran.nextInt(100), ran
.nextInt(100)));
String num = String.valueOf(ran.nextInt(10));
g.drawString(num, i * 20 + 10, 15);
sb.append(num);
}
// 恢复默认的画笔
g.setColor(c);
g.setFont(f);
// 给服务器保存验证码字符串
request.getSession().setAttribute("yan", sb);
// 缓存清空
response.setHeader("Pragma", "no-store"); // 本地机是否产生缓存文件
response.setDateHeader("expires", 0); // 生效时间
response.setHeader("Pragma", "no-cache"); // 清空
// 输出图片
ImageIO.write(img, "jpeg", response.getOutputStream());
}
}
分享到:
相关推荐
以上就是使用Servlet实现验证码功能的基本步骤。需要注意的是,为了提高安全性,实际应用中还需要考虑缓存清除、超时机制、防止重放攻击等问题。此外,随着技术的发展,现在还有更复杂的验证码解决方案,如滑动...
在网站开发中,验证码无疑是必不可缺的一项功能。这个是简易验证码的实现Demo。
本主题将深入探讨如何使用Servlet实现验证码功能,这对于防止自动化脚本或机器人滥用网站的注册过程至关重要。验证码(CAPTCHA)的主要目标是区分人类用户和机器,以确保数据提交是由真实的人进行的。 首先,我们...
SSH框架提供了模型-视图-控制器(MVC)的架构,使得验证码功能的实现更加方便和高效。 首先,我们需要理解Servlet。Servlet是Java Web开发中的一个核心组件,它是一个Java类,用于扩展服务器的功能。在验证码场景下...
本教程将详细介绍如何使用Servlet技术来实现一个基本的图片验证码功能。Servlet是Java服务器端编程的核心技术之一,它可以接收和响应HTTP请求,非常适合构建动态Web应用程序。 首先,我们需要理解验证码的基本原理...
在Web开发中,验证码(CAPTCHA)是一种防止恶意自动化程序(如机器人)滥用服务的安全...通过研究源代码,你可以更深入地理解如何结合Servlet和JSP来实现验证码功能,并将其应用于自己的Web应用程序中,以增强安全性。
在这里,我们将讨论如何通过Servlet生成随机字符串,并将其转化为图像输出到客户端,以此实现验证码功能。 1. **验证码逻辑设计** - **随机字符串生成**:首先,我们需要生成一个随机字符串,通常包含字母和数字,...
本示例通过使用Buffalo框架和Servlet来实现一个简单的图形验证码功能。下面将详细介绍这个实现过程中的关键知识点。 1. **Buffalo框架**:Buffalo是一个轻量级的Java服务框架,它提供了一种简单的方式来处理HTTP...
本主题将深入探讨如何使用Servlet来实现验证码功能。验证码的主要目的是为了防止自动化程序(如机器人)对网站进行恶意操作,它通常要求用户在输入框中正确输入一串随机生成的图像中的字符或数字。 首先,我们需要...
总之,使用Servlet实现图形验证码涉及生成随机字符串、创建图像以及处理HTTP请求和验证。理解这些步骤对于构建一个安全的Web应用程序至关重要,因为它们能有效地防止自动化攻击,保护网站免受恶意活动的影响。在实际...
本教程将详细解释如何使用Servlet技术来实现一个动态的验证码功能,包括点击验证码后更换新的验证码以及验证码的验证过程。 一、Servlet基础 Servlet是Java EE中用于处理HTTP请求的服务器端组件。它接收客户端...
在本项目中,我们通过Servlet来实现验证码的校验功能,这是一个典型的Web开发中的验证流程。Servlet是Java中用于处理HTTP请求的服务端组件,它可以接收用户的请求并返回响应。 首先,我们需要理解验证码的基本原理...
通过上述步骤,我们可以使用Servlet在Java Web应用中实现一个简单的验证码生成器。当然,实际项目中可能需要考虑更多的细节,如优化验证码的显示效果,增加时间戳防止重放攻击,以及结合其他安全措施等。
在Servlet中实现这一功能,可以通过重新调用生成验证码的逻辑,每次请求都生成不同的随机字符串和图像。 ### 五、安全性考虑 虽然生成验证码增加了攻击者的难度,但为了进一步增强安全性,还可以采取以下措施: - ...
在这个“SSM实现登录验证码功能”的项目中,我们将探讨如何在SSM框架下添加验证码功能,以增强用户登录的安全性。 首先,验证码功能的基本目的是防止恶意自动化程序(如机器人或爬虫)进行非法操作,如频繁尝试登录...
总的来说,JSP和Servlet结合使用,能够灵活地实现验证码系统,包括验证码的生成和点击更换功能。这不仅增强了网站的安全性,也提升了用户体验。对于开发者而言,理解并熟练掌握这些技术是构建复杂Web应用的基础。
#### 三、生成验证码图片的Servlet实现 下面通过具体的代码示例来解释如何使用Servlet生成验证码图片。 ```java public class CreateImageServlet extends HttpServlet { public void doGet(HttpServletRequest ...
正在学习Java,在教程书和网上不断的学习。servlet 提供了 Java 强大的 web 交互,在这个小项目中,我用servlet 实现了在web上生成验证码的功能,正在入门Java的同学不妨试试。
在Java Web开发领域中,经常利用JSP(JavaServer Pages)与Servlet技术来实现验证码功能。本文将详细解析一个具体的JSP Servlet验证码实现案例。 #### 二、核心概念 1. **Servlet**:Servlet是一种基于Java的技术...