<%@page contentType="image/jpeg" import="java.awt.*, java.awt.image.*,java.util.*,javax.imageio.*" %>
<%
// ======================================================= 1.默认的图像属性
// ======================================================
// 验证码图片的宽度。
out.clear();
int width = 58;
// 验证码图片的高度。
int height = 21;
// 验证码字符个数
int codeCount = 4;
int x = 0;
// 字体高度
int fontHeight;
int codeY;
char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6',
'7', '8', '9' };
// ======================================================= 2.初始化图像属性
// ======================================================
/**
* 初始化验证图片属性
*/
// 从web.xml中获取初始信息
// 宽度
String strWidth = null;
// 高度
String strHeight = null;
// 字符个数
String strCodeCount = null;
// 将配置的信息转换成数值
try {
if (strWidth != null && strWidth.length() != 0) {
width = Integer.parseInt(strWidth);
}
if (strHeight != null && strHeight.length() != 0) {
height = Integer.parseInt(strHeight);
}
if (strCodeCount != null && strCodeCount.length() != 0) {
codeCount = Integer.parseInt(strCodeCount);
}
} catch (NumberFormatException e) {
}
x = width / (codeCount);
fontHeight = height - 2;
codeY = height - 4;
// ======================================================= 3.开始绘制图像
// ========================================================
// 定义图像buffer
BufferedImage buffImg = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics2D g = buffImg.createGraphics();
// 创建一个随机数生成器类
Random random = new Random();
// 将图像填充为白色
g.setColor(Color.WHITE);
g.fillRect(0, 0, width, height);
// 创建字体,字体的大小应该根据图片的高度来定。
Font font = new Font("Fixedsys", Font.PLAIN, fontHeight);
// 设置字体。
g.setFont(font);
// 画边框。
g.setColor(Color.BLACK);
g.drawRect(0, 0, width - 1, height - 1);
// 随机产生16条干扰线,使图象中的认证码不易被其它程序探测到。
g.setColor(Color.lightGray);
for (int i = 0; i < 16; i++) {
int xtemp = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(xtemp, y, xtemp + xl, y + yl);
}
// randomCode用于保存随机产生的验证码,以便用户登录后进行验证。
StringBuffer randomCode = new StringBuffer();
int red = 0, green = 0, blue = 0;
// 随机产生codeCount数字的验证码。
for (int i = 0; i < codeCount; i++) {
// 得到随机产生的验证码数字。
String strRand = String.valueOf(codeSequence[random.nextInt(36)]);
// 产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。
red = random.nextInt(255);
green = random.nextInt(255);
blue = random.nextInt(255);
// 用随机产生的颜色将验证码绘制到图像中。
g.setColor(new Color(0, 0, blue));
g.drawString(strRand, i * x, codeY);
// 将产生的四个随机数组合在一起。
randomCode.append(strRand);
}
// ====================================
// 将四位数字的验证码保存到Session中。=====================================
//HttpSession session = request.getSession();
session.setAttribute("validateCode", randomCode.toString());
// 禁止图像缓存。
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("image/jpeg");
// 将图像输出到Servlet输出流中。
ServletOutputStream sos = response.getOutputStream();
ImageIO.write(buffImg, "jpeg", sos);
sos.close();
%>
分享到:
相关推荐
Linux 下 Apache+PHP+Mysql 安装与配置 Apache installation * 介绍 Apache 的安装过程,包括卸载原有 Apache 用户、解压缩 Apache 源代码、配置和安装 Apache。 * "--prefix" 参数用于指定安装后的存放路径;"--...
Java 使用 Apache+Resin 实现负载均衡设置 Java 使用 Apache+Resin 实现负载均衡设置是一种常见的解决方案,旨在提高系统的可用性和可扩展性。下面是该方案的详细说明: 一、为什么需要负载均衡? 在实际应用中,...
超级无敌web服务器 linux+apache+tomcat+mysql+jsp+php 整合安装 自己的安装过程,以前发表在新浪博客,现在换地盘了转过来... 自我感觉写得还是不错滴.. 在安装过程更是学到了很多东西 做好这个项目以后linux...
在Linux系统中,构建一个基于Apache、PHP和MySQL的服务器环境,通常被称为LAMP(Linux、Apache、MySQL、PHP)架构。这是一种常见的Web开发平台,适用于动态网站和应用程序的部署。下面将详细介绍如何在Linux环境下...
"LINUX下APACHE+MYSQL+PHP运行环境搭建教程" 本教程旨在指导读者在LINUX系统中搭建APACHE+MYSQL+PHP运行环境,通过详细的步骤和命令,帮助读者快速搭建一个功能完善的Web服务器环境。 知识点1: Apache、MYSQL、...
Linux+Apache+Mysql+Perl/PHP/Python
Linux+Apache+MySQL+PHP架设优化全攻略初学必备
### LAMP(Linux + Apache + MySQL + PHP)基本配置详解 #### 一、LAMP环境简介 LAMP代表Linux(操作系统)、Apache(Web服务器)、MySQL(数据库管理系统)和PHP(服务器端脚本语言)。这套组合在搭建Web应用程序...
Apache是一款免费开源的Web服务器软件,它通过解析用户请求并提供相应的文件或数据响应,实现Web服务。Apache具有良好的兼容性和扩展性,支持多种编程语言和插件。 - **特点**: - 支持多种协议,如HTTP、HTTPS等...
Ubuntu下LAMP环境的配置与安装 LAMP(Linux、Apache、MySQL、PHP)是一套常用的Web开发环境,这四个组件的结合可以为我们提供一个强大且灵活的Web应用程序开发平台。在Ubuntu操作系统下,安装和配置LAMP环境是非常...
本书从实用角度出发,系统地介绍了 Linux+Apache+MySQL+PHP 进行 Web 应用开发的各项技术,同时附有大量代码实例。全书由 5 个部分组成、共分 24 章,内容涵盖了 Linux 的基本应用及 LAMP 环境配置、Apache 的配置...
【Apache+Mysql+Php+Snort+Base 实现 Snort 知识点详解】 Apache、MySQL、PHP、Snort 和 BASE 是构建一个强大的入侵检测系统(IDS)的基础组件。这个组合使得网络管理员能够实时监控网络流量,检测潜在的攻击,并...
【Linux+Apache+PHP+MySQL 实现负载均衡】 在构建基于 Linux 的服务器环境中,Linux、Apache、PHP 和 MySQL(简称 LAMP)是一个经典的组合,它们共同提供了强大的 Web 开发和托管平台。对于需要高可用性和负载均衡...
【Linux + Apache + PHP + MySQL 环境安装详解】 在IT行业中,LAMP(Linux、Apache、MySQL、PHP)是构建Web应用的最常见和经典的基础架构。本篇文章将详细讲解如何在Linux系统上搭建这个环境。 首先,我们需要安装...
在Linux系统中实现Apache+MySQL+PHP+Resin的整合对于构建高性能、稳定的Web应用至关重要。本篇文章将详细讲解如何在Red Hat AS4环境下进行这一整合过程,并配置虚拟主机。以下是具体步骤和技术细节。 #### 二、软件...
总结,Apache+nginx+resin的配置涉及到多层服务器的协同工作,这种架构可以充分利用每个组件的优势,提供高效且可扩展的Web服务。正确配置和理解这些组件的交互是实现这一目标的关键。在实际部署中,还需要考虑负载...
以上就是LINUX+APACHE+PHP+BDB+OPENLDAP+PHPLDAPADMIN的安装配置流程。在实际操作中,可能还需要根据具体需求调整配置,例如添加SSL支持、设置防火墙规则、优化性能等。每个步骤都需要细心操作,确保所有组件能正确...
Apache+Resin 在 Linux 的搭建 在 Linux 操作系统中搭建 Apache 和 Resin 需要遵循一定的步骤,以下是详细的搭建步骤。 卸载 JDK 在 Linux 中,卸载 JDK 需要使用 rpm 命令。首先,使用 `rpm -qa|grep jdk` 查看...
在Linux环境下,构建Apache与Tomcat的集群是提高Web服务可扩展性和高可用性的重要手段。这个集群配置通常涉及到负载均衡、故障转移以及资源优化。本文将深入探讨如何在Red Hat 5操作系统上实现这样的集群配置。 ...