image.jsp
<%@ page contentType="image/jpeg" import="java.awt.*,
java.awt.image.*,java.util.*,javax.imageio.*" pageEncoding="gbk"%>
<%!
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(12);
int yl = random.nextInt(12);
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;
//String sRand="";
//for (int i=0;i<4;i++){
//String rand=String.valueOf(random.nextInt(10));
//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);
g.dispose();
ImageIO.write(image, "JPEG", response.getOutputStream());
out.clear();
out = pageContext.pushBody();
%>
login.jsp
<%@ page language="java" pageEncoding="gbk"%>
<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>
<form action="validate.jsp" method="post" name="loginForm">
<table width="256" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="118" height="22" valign="middle" align="center">
<input type="text" name="rand" 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" >
</td>
</tr>
<tr>
<td height="36" colspan="2" align="center" valign="middle">
<a href="javascript:loadimage();"><font class=pt95>看不清点我</font>
</a>
<input type=button value="test" onclick="alert('${sessionScope.rand}')"/>
</td>
</tr>
<tr>
<td height="36" colspan="2" align="center" valign="middle">
<input type="submit" name="login" value="提交">
</td>
</tr>
</table>
</form>
</body>
</html>
validate.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" pageEncoding="gbk" %>
<%
String rand = (String)session.getAttribute("rand");
String input = request.getParameter("rand");
if(rand.equals(input)){
out.print("<script>alert('验证通过!');</script>");
} else{
out.print("<script>alert('请输入正确的验证码!');location.href='login.jsp';</script>");
}
%>
分享到:
相关推荐
在本主题“利用jsp生成图片验证码”中,我们将探讨如何在JavaServer Pages (JSP)上下文中创建一个简单的图片验证码,而无需使用Servlet。首先,我们要明白JSP是Java Web开发中的视图层技术,它允许我们在HTML页面中...
在Web开发中,JSP(JavaServer Pages)可以用来创建动态验证码图片。本文将详细介绍如何使用JSP来实现一个简单的数字验证码图片的生成。 首先,我们要理解验证码的基本原理。验证码通常包含一串随机生成的字符或...
在网页开发中,验证码是一种常见的安全机制,用于防止恶意自动化的机器人或爬虫进行非法操作,比如批量注册、登录等。本主题将详细介绍如何在JSP(Java Server Pages)环境中实现一个简单的登陆页面验证码功能。 ...
在Java Web开发中,JSP(JavaServer Pages)可以用来创建动态的、包含随机验证码的图片。以下我们将深入探讨JSP实现随机验证码的技术细节。 ### 1. 验证码的基本原理 验证码的核心在于生成一组难以被机器自动识别...
通过以上步骤,我们就实现了一个简单的JSP验证码系统。虽然这种实现方式相对基础,但已经足够应对大多数Web应用的需求。在实际开发中,可以根据项目需求进行扩展,如使用更复杂的算法生成验证码,或者结合音频验证码...
在Java Web开发中,JSP(JavaServer Pages)常被用来生成这种动态的图片验证码。下面我们将深入探讨如何使用JSP来创建一个简单的图片验证码。 首先,我们需要理解验证码的基本原理。验证码通常由一串随机生成的字母...
本文将详细介绍如何在Java Server Pages (JSP) 和 Servlet 技术的基础上,实现一个简单而实用的验证码图片生成工具。 #### 一、验证码的基本概念 验证码(CAPTCHA)是一种区分计算机和人类的方法,常用于验证用户...
在这个"JSP中添加验证码简单实例"中,我们将探讨如何在JSP页面上实现一个基本的验证码功能。验证码通常由服务器生成并存储在服务器端的一个会话(session)变量中,然后通过图像显示在客户端。用户在输入验证码后,...
在JSP中,我们可以创建一个Servlet来生成随机的图片验证码。这个Servlet的主要任务是生成一个不可预测的字符串,并将其渲染为图像。以下是一个简单的步骤: 1. **生成随机字符串**:通常包含字母和数字,长度可...
### JSP 页面最简单的验证码实现解析 #### 一、概述 在现代Web应用开发中,验证码作为一种简单有效的安全措施被广泛应用于用户登录、表单提交等场景,用于防止恶意脚本或机器人自动提交数据。本文将详细介绍一个...
总之,基于JSP的图形验证码源码提供了一种简单但有效的安全机制,通过动态生成和验证图像验证码,可以有效抵御自动化攻击,保护Web应用的安全。理解其工作原理和实现细节,对于Web开发者来说至关重要。
在Web开发中,使用JSP(JavaServer Pages)来生成验证码图片是一种常见的方法。下面我们将详细讨论如何在JSP中实现验证码的生成。 首先,我们需要理解验证码的基本原理。验证码通常包含一串随机的字母和数字,有时...
而在JSP技术中实现验证码的刷新功能,不仅可以提升用户体验,还能进一步增强系统的安全性。 #### 一、验证码的基本原理 验证码的主要目的是区分操作是由人类还是由计算机程序完成的。常见的验证码类型包括文本型...
在这个特定的案例中,我们讨论的是如何使用JSP生成图片验证码,这是一种常见的安全机制,用于防止自动机器人或恶意用户进行非法操作。 验证码的主要目的是验证用户是否为真实的人,而不是机器。它通常是一串随机...
总结来说,这个项目提供了一个使用Java Web技术实现的验证码识别系统,结合了JSP和Servlet进行前后端交互,并且利用OCR技术来自动化识别图片验证码,尤其值得一提的是,它还具备处理中文文件名图片的能力。...
本教程将详细介绍如何使用Servlet技术来实现一个基本的图片验证码功能。Servlet是Java服务器端编程的核心技术之一,它可以接收和响应HTTP请求,非常适合构建动态Web应用程序。 首先,我们需要理解验证码的基本原理...
总结:本实例通过Java的图形处理能力生成图片验证码,结合JSP技术将验证码返回给客户端,并将其值存储在session中以供验证。这涉及到了Java图形编程、HTTP响应处理、session管理和安全性实践等多个IT领域的知识点。...
本话题将深入探讨如何使用Java Server Pages (JSP)来生成数字形式的随机验证码,并实现图片化显示及刷新功能。 首先,我们需要理解JSP的基本原理。JSP是一种动态网页技术,它允许开发人员在HTML页面中嵌入Java代码...
- `verify.jsp`:这是一个简单的JSP页面,展示了验证码图片,并包含了一个表单用于用户输入验证码。 - `style.css`:可能包含验证码图片的样式定义,如边框、背景等。 通过阅读和理解这些源码,你可以学习如何在...