一.新建image.jsp文件
<%@ page import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"%>
<%@ page import="java.io.OutputStream"%>
<%!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);
}%>
<%
try {
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);
OutputStream os = response.getOutputStream();
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);
}
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);
}
System.out.println(sRand);
session.setAttribute("rand", sRand);
g.dispose();
ImageIO.write(image, "JPEG", os);
os.flush();
os.close();
os = null;
response.flushBuffer();
out.clear();
out = pageContext.pushBody();
} catch (IllegalStateException e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
%>
二.在需要引入的地方
<tr style="height: 22px">
<td>
<font color="#FFFFFF">验证码:</font>
</td>
<td width="200">
<input id="codeInputFront" class="inputText" type="text" style="width: 50px" />
<img id="LoginImgVerifyCode" style="float: left; src="jsp/frontstage/index/image.jsp" />
<a href="javascript:changeVerifyCode()">刷新</a>
</td>
</tr>
注意:<image>标签中要写相对路径。但是一定是写全,基于WebRoot 目录下方
分享到:
相关推荐
**JSP实现验证码数字图片详解** 验证码是一种常用的安全机制,用于防止自动机器人或者恶意脚本进行非法操作,如批量注册、频繁提交等。在Web开发中,JSP(JavaServer Pages)可以用来创建动态验证码图片。本文将...
在JavaWeb开发中,验证码(CAPTCHA)是一个重要的安全组件,用于防止自动...以上就是JSP实现验证码及其刷新功能的主要步骤和知识点。在实际开发中,还需要考虑到用户体验和网页性能,合理设计验证码的样式和刷新机制。
servlet+jsp实现验证码 具体步骤: 生成图片所要实现的类 1、定义BufferedImage对象 2、获得Graphics对象 3、使用Random生成随机验证码信息 4、使用Graphics绘制图片 5、记录验证信息到session 6、使用ImageIO生成...
这里我们将深入探讨JSP实现验证码的原理、步骤以及涉及到的相关知识点。 验证码的基本流程包括生成随机字符串、显示图像、验证用户输入的字符串是否与生成的字符串匹配。下面将分别介绍这些环节: 1. **生成随机...
jsp实现验证码技术实例 jsp实现验证码技术实例
经典JSP生成验证码经典JSP生成验证码经典JSP生成验证码经典JSP生成验证码经典JSP生成验证码经典JSP生成验证码经典JSP生成验证码
本项目"JSP实现验证码功能"正是关注于如何在JSP中集成验证码功能,以提高网站的安全性。 验证码的基本原理是生成一段随机的、难以被机器识别的文字或图像,用户在访问某些关键页面时需要输入显示的验证码,系统会...
总的来说,通过Java和JSP实现验证码生成,涉及到的主要知识点有:随机数生成、HttpSession管理、图形渲染以及表单提交后的服务器端验证。理解并实践这个过程,有助于提升你对Web开发中安全机制的理解。
以上就是使用Java Servlet和JSP实现验证码的基本步骤。在实际应用中,还需要考虑一些优化措施,如防止重复请求同一验证码、设置验证码过期时间等。这个过程可以通过解压名为`verifyCodeDemo`的压缩包文件来查看具体...
总结来说,通过JSP实现验证码涉及到Java后端的字符串生成和图片绘制,以及前端的显示和用户交互。这种机制在防止自动化攻击的同时,也为用户提供了一个直观的安全保障。在实际开发中,可以根据具体需求调整验证码的...
6. JSP 的应用:使用 JSP 生成验证码图片,实现验证码的验证机制。 * 使用 JSP 生成验证码图片,包括生成验证码图片和将验证码存入 SESSION。 * 使用 JSP 实现验证码的验证机制,检测用户输入的验证码是否正确。 ...
### JSP代码实现验证码功能详解 #### 一、概述 本文档详细介绍了如何使用Java Server Pages (JSP)技术来实现一个简单的验证码功能。验证码在Web应用中是一种常见的安全措施,用于防止自动化软件进行恶意操作,如...
jsp验证码实现源代码,用jsp做注册验证码
总的来说,JSP实现的验证码示例是一个实用的教程,它帮助开发者理解如何结合Java和Web技术来增强网站的安全性。通过学习和理解这个示例,你可以为自己的项目添加类似的验证码功能,保护你的用户免受自动化攻击。
在Web开发中,验证码是一种...总结来说,使用JSP实现验证码功能主要涉及随机字符串生成、图像绘制、Session管理以及表单处理。通过以上步骤,我们可以创建一个简单且实用的验证码系统,为Web应用提供基本的安全防护。
以上就是基于JSP和Servlet实现简单验证码的基本流程。实际应用中,为了增强安全性,还可以考虑以下几点: - 使用更复杂的图像扭曲算法,增加自动化识别的难度。 - 设置验证码过期时间,防止长时间未使用的验证码被...
**验证码技术详解与JSP实现** ...它通过显示一段人类可以理解但...以上就是关于JSP实现验证码的核心知识点。实际开发中,可以根据项目需求调整验证码的复杂度和样式,确保其既能满足安全需求,又能提供良好的用户体验。
jsp实现图形验证码
在Java服务器页面(JSP)中实现数字验证码,可以确保用户是真实的个体而非程序。以下是一个简单的JSP数字验证码的实现方法: 首先,我们来看一下JSP的基本结构。`@%>` 和 `是JSP中的脚本元素,它们分别用于执行Java...