JSP案例_简单实现验证码

一个JSP数字验证码的案例,我稍作修改加入了简单的加法算术验证码 今天做项目需要到了验证码,以对注册和登录用户进行验证。 下面是网上的一个4位数字案例,写得清晰易懂,我后面也稍作修改,变成了简单的加法算术验证。存在博客,以备后续项目需要。 <%@ page contentType="image/jpeg" language="java" import="java.util.*,java.awt.*,java.awt.image.*,javax.imagei 阅读详情

JSP案例_简单实现验证码


1.案例要求

(1)在一个JSP页面实现验证码,在另一个页面调用

(2)验证码为4位,实现字母数字全随机,颜色随机,旋转随机

(3)给验证码增加4条干扰线


2.案例分析

(1)主页面使用img标签的src属性引入验证页面的jsp文件

(2)主页面使用按钮的点击事件实现验证码的刷新和替换

(3)验证码的实现页面使用BufferedImage类的方法产生图片

(4)使用Graphics类的各种方法实现验证码的构成以及干扰线

(5)使用Graphics2D类实现旋转


3.代码实现

index.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<form>
	姓    名:<input type="text" name="name" /><br />
	密    码:<input type="text" name="password" /><br />
	验证码:<input type="text" ><img src="yzm.jsp" id="img"/>
	<button type="button" id="btn">换一张</button><br />
	<button type="submit">提交</button>
</form>
<script>
	window.onload = function(){
		var img = document.getElementById("img");
		var btn = document.getElementById("btn");
		btn.onclick = function(){
			img.src="yzm.jsp?a="+new Date().getTime();
		}
	}
</script>
yzm.jsp:

<%@page import="java.awt.Graphics2D"%>
<%@page import="java.awt.Font"%>
<%@page import="java.awt.Color"%>
<%@page import="com.sun.image.codec.jpeg.JPEGCodec"%>
<%@page import="com.sun.image.codec.jpeg.JPEGImageEncoder"%>
<%@page import="javax.imageio.ImageIO"%>
<%@page import="java.io.OutputStream"%>
<%@page import="java.awt.Graphics"%>
<%@page import="java.awt.image.BufferedImage"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	//强制让内置对象out失效,字符流和字节流不能同时使用
	out.clearBuffer();
	out = pageContext.pushBody();

	//构造图片
	BufferedImage bi = new BufferedImage(100,30,BufferedImage.TYPE_3BYTE_BGR);
	response.setHeader("content-type", "image/jpeg");
	Graphics g = bi.getGraphics();
	
	//填充背景
	g.setColor(new Color(15*16+2,15*16+2,15*16+2));
	g.fillRect(0, 0, bi.getWidth(), bi.getHeight());
	
	Graphics2D g2 = bi.createGraphics();

	//产生干扰线
	for(int i=1; i<=4; i++){
		int x1 = (int)(Math.random()*101);
		int y1 = (int)(Math.random()*31);
		int x2 = (int)(Math.random()*101);
		int y2 = (int)(Math.random()*31);
		
		int[] color = new int[3];
		for(int j=0;j<=2;j++){
			int intc = (int)(Math.random()*256);
			color[j] = intc;
		}
		g.setColor(new Color(color[0],color[1],color[2]));
		g.drawLine(x1, y1, x2, y2);		
	}
	
	//产生验证码
	String code = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	
	for(int i =1;i<=4;i++){
		int index = (int)(Math.random()*61);
		char c = code.charAt(index);
		int[] color = new int[3];
		for(int j=0;j<=2;j++){
			int intc = (int)(Math.random()*256);
			color[j] = intc;
		}
		
		g2.setColor(new Color(color[0],color[1],color[2]));
		//翻译坐标
		g2.translate(0,0);
		//产生随机角度
		int angle=0;
		angle = (int)(Math.random()*31);
		//旋转角度以及相对位置
		g2.rotate(angle*Math.PI/180,i*12, 10);
		g2.scale(1.2, 1.2);
		g2.drawString(c+"", i*10, 20);
		
		g2.rotate(-(angle*Math.PI/180),-i*6, -10);
	}
	
	// 把图片发送给客户端
	OutputStream os = response.getOutputStream();
	JPEGImageEncoder en =  JPEGCodec.createJPEGEncoder(os);
	en.encode(bi);
%>

4.运行截图



5.问题分析

(1)主页面引入验证码要用img标签,是一张图片,直接引入就是一个页面了

(2)按钮点击事件里不能把src属性的值写死,如果写死,浏览器一直使用缓存,验证码页面的图片就不会变,这里new了一个日期对象,不停获取当前面毫秒数,实现了验证码页面的动态刷新

(3)验证码页面引入IPEGCode类可能会提示找不到,因为这个类在jdk1.7以后运行环境中才有,之前的版本中没有该类,记得改变jdk版本

(4)注意各个随机数的范围,产生并加以使用,各种方法可以在API帮助文档搜索查看


基于Servlet/Jsp技术实现登录页面验证码验证功能 利用Servlet/Jsp实现登录验证码验证功能 1.动态WEB项目的构建 2.登录页面的设计 3.代码实现 5.案例总结 JavaWeb项目一个简单demo 项目环境配置 Tomcat 9.0.54 Servlet 3.1 注意:该版本的Tomcat会自动生成注解路由,无需手动配置 以往版本的Tomcat中需要手动配置web.xml文件,此文不再赘述。 1.项目构建 利用eclipse创建动态web项目,建立相应的包文件 2.登录页面的设计 通过过画图,简单分析登录页面的功能实现 3.代码实现部分 阅读详情

相关推荐

JSP+Servlet实现图片验证码

我们在登录或者注册的过程中,常常会发现有验证码的存在,今天我们自己动手来实现一个图片验证码。 首先,我们的验证码图片是在JSP页面中展示的,所以先从JSP页面着手。直接上代码。 login.jsp 欢迎登陆 /servlet/LoginServlet" method="get"> /servlet/Functio nServlet" id="i

躺着写代码的博客 4724

JSP页面实现验证码校验

验证码的生成实际就是输出一个图像,所以在这里使用ImageIO来生成图片,然后结合使用随机数(Random)来实现随机生成验证上的内容,最后进而展示出来,然后利用Session对象存储验证码的内容。在用户输入验证码的时候可以用request来获取用户输入的内容,让其余Session对象中保存的验证码内容进行比较,若一致则验证成功,不一致就验证失败。在网页页面的使用中为防止“非人类”的大量操作和防止一些的信息冗余,增加验证码校验是许多网站常用的方式。组合的验证码是最经典也是最常用的方式。

lkl2017的博客 5594

javaWeb通过验证码的使用实现简单登录

使用验证码的简单登录

Klay的博客 4096

关于JSP页面的验证码简单实现

验证码功能一直以来是各种网站和APP使用的一种重要功能。实现的策略和方法也各种各样,大部分是调用java.awt下的包进行画图,现在分享本人长期使用的一个验证码功能实现,希望对初学者的学习会有帮助。 1、code.jsp(实现验证码生成) &lt;%@ page import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio....

修宇轩陈 631

简单实现动态验证码的JSP示例教程

JSP(Java Server Pages)是一种用于开发动态Web应用程序的技术,自1999年被Sun Microsystems公司推出以来,已成为构建企业级Web应用程序的重要工具之一。JSP允许开发者将Java代码直接嵌入到HTML页面中,从而简化了Web页面的开发。通过JSP,开发者可以实现页面逻辑与页面内容的分离,利用服务器端的JavaBean和自定义标签来生成动态内容。JSP页面被编译成Servlet执行,这一点对于理解其运行机制至关重要。

weixin_42594419的博客 1561

JSP验证码实现案例大全

Java Server Pages (JSP) 是一种创建动态网页内容的技术,它允许开发者在 HTML 页面中嵌入 Java 代码。JSP 页面经过服务器端的预处理,将 Java 代码转换成标准的 HTML,以便在用户的浏览器中显示。JSP 作为 Java EE 规范的一部分,为 Web 开发提供了一种便捷的方法,使得 Java 程序员能够快速开发出动态网站。JSP 技术背后的核心思想是将业务逻辑与表现层分离,因此它结合了 HTML 标记语言和 Java 编程语言,以实现更丰富、更动态的网页内容。

weixin_27645199的博客 1597

JSP实现验证码

效果如图: 并且点击图片可以更换验证码 验证码 验证原理: JAVA绘制图片,然后将验证码的字符上传session,在登陆时候验证session 里的值和用户输入的值即可。 首先做个绘制类: package Domain.func; import javax.imageio.ImageIO; import javax.servlet.ServletOutputStream;

Knove的博客 1万+

jsp实现验证码

jsp验证码.zip 详细的描述了在jsp中如何实现验证码的功能。

jsp中四种验证码的实现

JSP中各种验证码的实现 1.数字验证码 2.英文+数字验证码 3.中文验证码 4.表达式验证码 在如下的登录页面中可以应用以上四种不同的验证码,分别使用如下四个代码,作为image.jsp的代码即可。 0.原始登录页面代码 &lt;%@ page contentType="text/html;charset=gb2312"%&gt; &lt;%@ page language=...

小怪兽的博客 2888

JSP实现用户登录验证码验证实例

本实例是用jsp实现用户登录信息的验证。适用mysql数据库。使用时先将数据文件mysql.sql导入到数据库中。然后导入工程到myeclipse中即可。

图形验证码(jsp实现)

图形验证码(jsp实现)

Jsp+Servlet+tomcat实现简单的登录验证码案例

首先声明这个案例是我白嫖的,但是嫖到一半发现代码不全,所以就自己就完善了案例代码!希望后续的小狐伴们不要碰到这个坑!!! 话不多说先看效果图: 这是登录首页:(这个案例其实很简陋,但是为了和你们分享,首页我还是花了一段时间修改的!) 这是登录成功后的界面: 说实话真的很丑!!!但是别急,作为java后台人员我们不追求这个,我们追求的是技术,是可以买到面包和爱情的技术!来看下面的案例代码结构!! 上面是实现怎个案例的所有文件,本来应该按照MVC的框架放包的,但是怕和我一样的...

weixin_41098116的博客 1347

距离多普勒谱(RD谱)绘制方法及理解

RD谱是信号处理领域常用的图形。原始信号往往是一维时域序列,如何将其二维化,并进行变换生成RD谱呢?由于刚刚接触,查阅了网络上、老师手里的资料,发现RD谱的绘制方法并不统一,有些存在一定问题。在此,将心得体会记录下来。

mddh_123的博客 3万+

产生随机验证码

<br />jsp文件:  servlet_pic.jsp<br /><%@ page language="java" pageEncoding="GBK"%><br /><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><br /><html><br />  <head><br />    <title>My JSP 'servlet_pic.jsp' starting page</title><br />    <script

D的专栏 340

【宠物识别系统】设计框架

能跑通的 Demo。收集 10,000 张同品种但不同个体的图片。训练ArcFace模型,验证准确率能否达到 99% 以上。搭建Milvus向量数据库。开发移动端 App/小程序。加入“图像质量检测”和“用户反馈纠错”功能。你是更偏向于做软件服务(如寻宠App、保险API),还是做软硬结合的产品(如智能喂食器)?这决定了我们下一步是深挖云端高并发架构,还是边缘端模型压缩。更偏向于软件,应用更广泛些,继续既然专注于纯软件/SaaS (Software as a Service) 方向。

百态·数智思维 | 聚焦大数据、量化与未来AI 1414

OpenVPN 新增 windows 客户端

虚拟私人网络(Virtual Private Network,简称VPN)是一种网络技术,它允许用户通过公共网络(如互联网)建立一个安全的连接通道。本文介绍如何添加 windows 客户端。

利昂的技术存档 3768

jsp来实现 验证码 登录案例 有图 有码

适用学习 对象 : java的 初学者 仅供参考----------- 需求 : 使用jsp来实现的 验证码 的 实现 : 分析 : login.jsp ------ LoginServlet ----- login.jsp ----------- form table 表单 : tr —td ======& jsp的预览 要在 服务器 里 运行...

qq_41934719的博客 2157

目标检测: 一文读懂 YOLOX

论文:YOLOX: Exceeding YOLO Series in 2021 论文链接:https://arxiv.org/pdf/2107.08430.pdf 代码链接:https://github.com/Megvii-BaseDetection/YOLOX. 文章目录1 为什么提出YOLOX2 YOLOX 网络架构3 YOLOX 实施细节3.1 backbone3.2 neck3.3 Head3.3.1 Decoupled Head3.3.2 Anchor-free3.4 如何计算Loss3.5 如

weixin_46142822的博客 3万+

关于jsp开发验证码的实现

前言,今天要写的是jsp开发时,需要的验证码功能。 1,实现验证码有很多方式,现在还有插件可以使用,今天主要讲的是通过代码实现验证码的功能 2,开始  1)首先我们要在前端写好验证码显示的区域 &lt;div&gt; 验证码:&lt;img src="&lt;%=request.getContextPath() %&gt;/base2/validate" alt="验证码"...

文生同学 1845

Qt开发者必看:QTimer::singleShot的5个实战避坑指南(含lambda和多线程案例)

本文为Qt开发者提供了QTimer::singleShot的5个关键实战避坑指南,涵盖lambda捕获、对象生命周期和多线程安全等核心难点。通过对比错误与正确代码示例,深入解析了如何避免悬空指针、确保线程执行上下文正确以及管理定时任务资源,帮助开发者编写更健壮、可靠的延迟执行代码。

stem5的博客 466

【GEE数据库】WRF常用数据集总结

【GEE数据库】WRF常用数据集总结

WW、forever的博客 635

最简单的验证码(利用JSP生成验证码)

可以直接利用jsp输出验证码。jsp文件如下: <%@ page contentType="image/jpeg" import="java.awt.*, java.awt.image.*,java.util.*,javax.imageio.*" pageEncoding="utf-8"%> <%! Color getRandColor(int fc,int bc) { Random ra

花2不谢 1万+

OpenMM | PDBFixer 用于蛋白质预处理

PDBFixer 用于蛋白质预处理

DrugOne 3006

jsp使用验证码及验证码的点击刷新功能的实现

昨天的主要工作就是添加验证码功能,感觉还是挺有意思的。 首先总结下流程:登录注册界面->后台生成图片和这个图片对应的数字->前台的jsp页面获得图片所对应的数字->当用户点击提交后判断用户输入的与存储的数字是否一样 后台生成图片代码number.jsp: <%! Color getRandColor(int fc,int bc){ Random random = new Random(

fengsigaoju的博客 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: JSP学习笔记(5)_9大内置对象
下一篇: JSP学习笔记(6)_中文乱码问题
晴天小风
博客等级 码龄10年 134粉丝 128原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值