1、html页面:
<%@ page language="java" contentType="text/html; charset=gbk"
pageEncoding="gbk"%>
<html>
<head>
<title>登录页面</title>
<script language="javascript">
function loadimage(){
document.getElementById("randImage").src = "image.jsp?"+Math.random();
}
</script>
</head>
<body>
<form name="loginForm" action="login" method="post">
<table border="1" align="center">
<tr>
<td>验证码:</td>
<td><input type="text" name="checode" /> <img
alt="code..." name="randImage" id="randImage" src="image.jsp"></td>
</tr>
<tr>
<td colspan="2" align="center"><a href="javascript:loadimage();"><font
class=pt95>看不清点我</font></a></td>
</tr>
<tr>
<td colspan="2">
<center><input type="submit" value="登录" /> <input
type="button" value="返回" onclick="location.href='/xkxt/index.jsp'" /></center>
</td>
</tr>
</table>
</form>
</body>
</html>
2、image.jsp
<%@ page contentType="image/jpeg" pageEncoding="gbk" 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);
}
%>
<%
//设置页面不缓存
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(new Color());
//g.drawRect(0,0,width-1,height-1);
// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
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);
}
// 取随机产生的认证码(4位数字)
//String rand = request.getParameter("rand");
//rand = rand.substring(0,rand.indexOf("."));
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();
%>
3、servlet中验证
String checode = request.getParameter("checode");
String rand = (String) request.getSession().getAttribute("rand");
if(checode.equals(rand)){
rd = request.getRequestDispatcher(success);
rd.forward(request, response);
} else {
PrintWriter out = response.getWriter();
out.println("<font size=4 color='red'>验证码不正确,请重新登录!</font>");
rd = request.getRequestDispatcher(failure);
rd.forward(request, response);
}
分享到:
相关推荐
**JSP图形验证码项目**是基于Java Web技术实现的一个安全登录功能模块,主要涉及的技术包括JSP(JavaServer Pages)和图形验证码。在这个项目中,我们重点探讨如何使用JSP来创建用户登录界面,并结合图形验证码来...
总之,通过JSP生成图片验证码虽然可能不如使用Servlet直接控制HTTP响应那么灵活,但仍然可以实现。这种做法的好处是,可以在不离开JSP页面的情况下完成验证码的生成和输出,简化了开发流程。然而,考虑到性能和代码...
**JSP实现验证码数字图片详解** 验证码是一种常用的安全机制,用于防止自动机器人或者恶意脚本进行非法操作,如批量注册、频繁提交等。在Web开发中,JSP(JavaServer Pages)可以用来创建动态验证码图片。本文将...
`JSP`(JavaServer Pages)是Java的一种动态网页技术,可以用来生成图片验证码。下面我们将详细探讨如何在JSP中创建图片验证码以及验证用户输入的验证码是否正确。 ### 1. 图片验证码的生成原理 图片验证码的基本...
总的来说,Java的`java.awt`包提供了丰富的功能来创建和绘制图片,这使得我们可以方便地实现图片验证码的生成和刷新。结合HTTP协议和服务器端编程,我们可以构建出高效且安全的图片验证码系统,为网站提供有效的防护...
在JSP里面实现图片验证代码,用户用户登录或者注册
* 使用 JSP 生成验证码图片,通过 BufferedImage 和 Graphics 实现验证码图片的生成。 * 将验证码存入 SESSION,以便后续验证。 2. 验证码刷新机制:使用 JavaScript 实现验证码刷新机制,刷新验证码图片。 * ...
- 视图解析,可能是JSP或Thymeleaf等,用于展示登录页面和验证码图像。 - 相关的Service和DAO层,用于处理登录逻辑和数据库操作。 通过以上步骤和组件,SSM框架可以成功地实现登录验证码功能,为Web应用提供了一道...
### JSP代码实现验证码功能详解 #### 一、概述 本文档详细介绍了如何使用Java Server Pages (JSP)技术来实现一个简单的验证码功能。验证码在Web应用中是一种常见的安全措施,用于防止自动化软件进行恶意操作,如...
采用ajax技术实现的图形验证码,在前端进行验证。验证码信息为图片。每一行代码均有注释,通俗易懂。 实现步骤: 1、创建web工程 2、在jsp页面,编写一个请求servlet的名称"> 3、编写一个servlet,在servlet中产生...
jsp图片验证码 希望对大家有用 防止机器注册
以上就是使用JSP生成验证码图片的基本原理和实现流程。在实际应用中,还可以结合其他安全措施,比如限制用户尝试次数、使用滑动验证等,进一步提高系统的安全性。同时,随着技术的发展,验证码的形式也在不断进化,...
以下我们将深入探讨JSP实现随机验证码的技术细节。 ### 1. 验证码的基本原理 验证码的核心在于生成一组难以被机器自动识别的随机字符或数字,然后将它们显示为图像。用户在提交表单前需要正确输入这组字符,服务器...
在Java Web开发中,JSP(JavaServer Pages)常被用来生成这种动态的图片验证码。下面我们将深入探讨如何使用JSP来创建一个简单的图片验证码。 首先,我们需要理解验证码的基本原理。验证码通常由一串随机生成的字母...
以上就是基于JSP和Servlet实现简单验证码的基本流程。实际应用中,为了增强安全性,还可以考虑以下几点: - 使用更复杂的图像扭曲算法,增加自动化识别的难度。 - 设置验证码过期时间,防止长时间未使用的验证码被...
总结起来,JSP实现图片验证码的过程主要包括以下几个步骤: 1. 前端创建包含验证码图片的表单。 2. `img.jsp`调用`captcha.jsp`生成验证码图片。 3. `captcha.jsp`中的`Captcha`类负责生成随机字符并绘制到图像上。...
**在JSP中实现验证码详解** 验证码是一种常用的安全机制,用于防止自动机器人或者恶意脚本进行非法操作,如批量注册、频繁提交等。在Web开发中,尤其是在Java Web环境中,我们常常利用Java Servlet和JSP(Java...
基于JSP的彩色验证码实现。需要注意的地方是验证码是为了安全才加的,所以把它做成图片的格式让别人难以破解。所以contentType="image/jpeg; charset=utf-8"而不是 contentType="text/html; charset=utf-8
本文将深入解析JSP中实现图片验证码的主要技术和步骤。 首先,我们需要理解如何生成一张图片。在Java中,我们可以利用`java.awt`包下的类来实现这一目标。`HelloImage.java`示例代码展示了生成图片的基本流程: 1....