1.建立Image.jsp文件,如下:
<%@ page contentType="image/jpeg"
import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"%>
<%!Color getRandColor(int fc, int bc) {
Random random = new Random();
if (fc > 255)
fc = 255;
if (bc > 255)
bc = 255;
int r = fc + random.nextInt(bc - fc);
int g = fc + random.nextInt(bc - fc);
int b = fc + random.nextInt(bc - fc);
return new Color(r, g, b);
}%>
<%
//out.clear();//这句针对resin服务器,如果是tomacat可以不要这句
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
int width = 60, height = 20;
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
Random random = new Random();
g.setColor(getRandColor(200, 250));
g.fillRect(0, 0, width, height);
g.setFont(new Font("Times New Roman", Font.PLAIN, 18));
g.setColor(getRandColor(160, 200));
for (int i = 0; i < 155; i++) {
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(10);
int yl = random.nextInt(10);
g.drawLine(x, y, x + xl, y + yl);
}
char c[] = new char[62];
for (int i = 97, j = 0; i < 123; i++, j++) {
c[j] = (char) i;
}
for (int o = 65, p = 26; o < 91; o++, p++) {
c[p] = (char) o;
}
for (int m = 48, n = 52; m < 58; m++, n++) {
c[n] = (char) m;
}
String sRand = "";
for (int i = 0; i < 4; i++) {
int x = random.nextInt(62);
String rand = String.valueOf(c[x]);
sRand += rand;
g.setColor(new Color(20 + random.nextInt(110), 20 + random
.nextInt(110), 20 + random.nextInt(110)));
g.drawString(rand, 13 * i + 6, 16);
}
// 将认证码存入SESSION
session.setAttribute("rand", sRand);
System.out.println(sRand);
g.dispose();
ImageIO.setUseCache(true);
ImageIO.write(image, "JPEG", response.getOutputStream());
%>
2.建立验证页面validate.jsp,如下
<%@ page language="java" contentType="text/html; charset=GB2312"
pageEncoding="GB2312"%>
<!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=GB2312">
<title>验证</title>
</head>
<body>
<%!String rand = null;
String input = null;%>
<%
rand = (String) session.getAttribute("rand");
input = request.getParameter("yanzhengma");
%>
验证码为:
<%=rand%>
您的输入为:
<%=input%>
<%
if (rand.equals(input)) {
%>
<font color=green>输入相同,认证成功!</font>
<%
} else {
%>
<font color=red>输入不同,认证失败!</font>
<%
}
%>
</body>
</html>
3.建立登录页面login.jsp 如下
<%@ page language="java" import="java.sql.*" errorPage=""%>
<%
request.setCharacterEncoding("GB2312");
%>
<%@page pageEncoding="GB2312"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>用户登录</title>
<script language="javascript">
function loadimage(){
document.getElementById("randImage").src = "image.jsp?"+Math.random();
}
</script>
</head>
<body>
<table width="256" border="0" cellpadding="0" cellspacing="0">
<!--DWLayoutTable-->
<form action="validate.jsp" method="post" name="loginForm">
<tr>
<td width="118" height="22" valign="middle" align="center"><input
type="text" name="yanzhengma" size="15"></td>
<td width="138" valign="middle" align="center"><img alt="code..."
name="randImage" id="randImage" src="image.jsp" width="60"
height="20" border="1" align="absmiddle"></td>
</tr>
<tr>
<td height="36" colspan="2" align="center" valign="middle"><a
href="javascript:loadimage();"><font class=pt95>看不清点我</font></a></td>
</tr>
<tr>
<td height="36" colspan="2" align="center" valign="middle"><input
type="submit" name="login" value="提交"></td>
</tr>
</form>
</table>
</body>
</html>
分享到:
相关推荐
下面将详细介绍JSP验证码的实现原理、步骤以及相关的知识点。 **验证码的基本原理** 验证码的核心是生成一串随机字符串,然后将其展示给用户,用户输入看到的字符串,服务器端验证输入是否正确。验证码设计的目标...
本文将深入探讨如何在JSP中生成一种混合数字和字母的彩色验证码。 首先,验证码的核心在于生成随机字符串。在Java中,我们可以使用`java.util.Random`类生成随机数,结合`Character`类来获取随机的字母和数字。通常...
### JSP 动态验证码实现方法:字母与数字彩色组合 #### 一、背景介绍 在Web应用中,验证码作为一种防止恶意操作的有效手段被广泛采用。对于基于Java Server Pages(JSP)的应用程序来说,实现一个自定义的验证码...
再页面上生成四个符号的验证码,点击刷新更换!!!!
### JSP验证码生成 #### 1. 基本概念 验证码是一种防止自动化软件攻击的安全机制,常用于用户登录、表单提交等场景。JSP(Java Server Pages)是一种基于Java的技术,用于创建动态网页。在JSP中生成验证码通常涉及...
创建JSP验证码的过程大致分为以下几个步骤: 1. **生成随机字符串**:使用Java的`Random`类和`StringBuilder`类,我们可以生成一个包含数字和字母的随机字符串。可以设定字符串长度,比如6位,同时确保字母不区分大...
本示例包括三种类型的验证码:纯数字、数字字母混合以及汉字验证码,这些都是为了提高用户验证的安全性和有效性。 首先,`Default.aspx`可能是首页,它可能包含一个链接或按钮,引导用户进入不同的验证码验证页面。...
本篇将详细介绍如何在JSP(JavaServer Pages)中实现数字和数字字母混合的验证码生成及校验。 首先,验证码的生成通常分为两个步骤:生成随机字符串和将其转化为图形。在JSP中,我们可以使用Java的内置类和库来完成...
**JSP实现验证码数字图片详解** 验证码是一种常用的安全机制,用于防止自动机器人或者恶意脚本进行非法操作,如批量注册、频繁提交等。在Web开发中,JSP(JavaServer Pages)可以用来创建动态验证码图片。本文将...
1. **生成随机字符串**:通常包含字母和数字,长度可自定义,例如4位或6位。 2. **绘制图像**:使用Java的`java.awt`和`java.awt.image`包,创建一个BufferedImage对象,然后在画布上绘制随机字符串,可以加入噪声、...
在本案例中,我们将探讨如何在Struts2框架下实现字母加数字的验证码功能,包括验证码的刷新以及前后台的处理代码。 首先,验证码的生成通常涉及以下几个步骤: 1. **生成随机字符串**:验证码由随机的字母和数字...
下面我们将深入探讨JSP验证码的实现原理、刷新机制以及相关的Java后端技术。 首先,验证码的基本概念是生成一段随机的、难以通过机器识别的文字或数字图像,用户在访问特定页面时需要输入这个验证码,以此验证用户...
在本案例中,我们关注的是一个基于JSP(Java Server Pages)实现的数字验证码。下面,我们将深入探讨JSP数字验证码的相关知识点。 1. **JSP基础**: JSP是Java的一种服务器端脚本语言,用于生成动态网页内容。...
这个压缩包中的两个例子分别展示了汉字和数字+字母形式的验证码,这使得验证码更加多样化,增加了破解的难度。对于汉字验证码,可能需要汉字字符集的支持,例如GBK或UTF-8。 总之,这个代码实例提供了完整的彩色...
- **安全性**:为了增加破解难度,验证码应具有一定的复杂性,比如使用大小写字母、数字甚至特殊字符的组合,并且每次登录都应生成新的验证码。 - **有效期**:验证码应该有时间限制,过期后无效,防止被恶意用户...
在Java服务器页面(JSP)中实现数字验证码,可以确保用户是真实的个体而非程序。以下是一个简单的JSP数字验证码的实现方法: 首先,我们来看一下JSP的基本结构。`@%>` 和 `是JSP中的脚本元素,它们分别用于执行Java...
常见的验证码类型包括文本型验证码(如字母数字组合)、图形验证码(包含扭曲的文字或图案)以及更复杂的交互式验证方式等。其中,文本型验证码是最简单且应用最广泛的一种形式。 #### 二、JSP与JavaScript结合实现...
这个压缩包"5种JSP验证码的源代码.rar"提供的是五种不同的JSP验证码实现方式。下面我们将详细探讨这五种验证码的实现原理和关键知识点。 1. 图片验证码: 这是最常见的验证码类型,通过生成随机字符串并将其绘制到...
【JSP验证码(Servlet)详解】 验证码是一种常用的安全机制,用于防止自动化的恶意程序,如机器人,进行非法操作。在Web开发中,JSP(JavaServer Pages)与Servlet结合使用可以实现动态生成并验证验证码的功能。这...