实现网站验证码切换功能

 实现网站验证码切换功能

一、样例

 样例1、

样例2、

 

 

 

 

 二、实现原理

 

 

三、实现代码

com.fry.servlet.VerifyCodeServlet

 1 package com.fry.servlet;
 2 
 3 import javax.imageio.ImageIO;
 4 import javax.servlet.ServletException;
 5 import javax.servlet.annotation.WebServlet;
 6 import javax.servlet.http.HttpServlet;
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9 import java.awt.*;
10 import java.awt.image.BufferedImage;
11 import java.io.IOException;
12 import java.util.Random;
13 
14 /**
15  * Created by fry on 2017/5/31.
16  */
17 @WebServlet(name = "VerifyCodeServlet", urlPatterns = "/code")
18 public class VerifyCodeServlet extends HttpServlet {
19     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
20 
21     }
22 
23     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
24         int width = 100;
25         int height = 30;
26 
27         String data = "abcdefghijklmnopqrst01234567890";
28 
29         Random random = new Random();
30         //1、用BufferedImage生成一张图片,最后一个参数是图片类型
31         BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
32 
33         //3、调用image的画图对象
34         Graphics graphics = image.getGraphics();
35         graphics.setColor(Color.gray);
36         //左上角和右下角
37         graphics.fillRect(0, 0, width, height);
38 
39 
40         graphics.setColor(Color.black);
41         for (int i = 0; i < 4; i++) {
42             //4、随机生成字符串,取到随机的位置,就取到了随机的字符串
43             int position = random.nextInt(data.length());
44             String randomStr = data.substring(position, position + 1);//分割字符串
45             graphics.drawString(randomStr, width / 5 * (i + 1), 15);//画字符串
46 
47         }
48 
49         //2、ImageIO的write()方法可以将图片转化为OutputStream类型
50         /**
51          * 第二个参数是要格式化的类型
52          * 最后一个参数是将格式化的图片写到response的输出流中
53          */
54         ImageIO.write(image, "jpg", response.getOutputStream());
55 
56 
57     }
58 }

 

verifyCode.html

 要让按钮一直能点

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8 
 9 </body>
10 <center>
11     <h2>切换验证码</h2>
12 <!--js代码-->
13 <script>
14     function changeImageCode() {
15         document.getElementById('btn').isDisabled=true;
16         <!-- 为了使每次的验证码都不一样,防止页面缓存,所以加上时间,ts是get方式请求传过去的参数,每次的请求都不一样,所以页面没法缓存-->
17         document.getElementById('identity').src='code?ts='+new Date().getTime();
18     }
19 </script>
20     <!--从servlet的映射是code的servlet处获取图片-->
21     <image  src="code"  id="identity" onload="btn.disable=false;" style="cursor:pointer; vertical-align:middle"></image>
22     <input type="button" value="看不清,更换验证码" onclick="changeImageCode()" id="btn"  style="vertical-align:middle">
23 
24 </center>
25 </html>

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

校园春色关不住,怎奈何唯有花枝俏,不见赏花人?

受新冠肺炎疫情的影响&#xff0c;直至今天&#xff08;2020年4月16日&#xff09;&#xff0c;各大学依然是人去楼空&#xff0c;我的大学也不例外。春天来了&#xff0c;本应是校园春色关不住&#xff0c;却怎奈何唯有花枝俏&#xff0c;不见赏花人&#xff1f;这也正应了那句…

CSDN是如何让我副业月入过万的?

始 我跟 CSDN 的缘分要从 2011 年说起&#xff0c;当时我正上高二&#xff0c;当时好像是在搞鼓 MFC。当时家里有了第一台电脑&#xff0c;我也再也不用去黑网吧去敲代码了&#xff0c;在家搜索资料的时候出现在我眼帘之中&#xff0c;并且对我有帮助的基本上都是 CSDN 上的内…

MSMQ消息广播

安装配置MSMQ消息广播&#xff0c;并验证是否可以发送广播消息&#xff0c;过程实录。1. 安装MSMQ with broadcasting support选择安装“消息队列”&#xff0c;并在子选项中选择“多播支持”一起安装。2. 注册表修改MulticastBindIPIf Message Queueing found multiple IP add…

【操作系统】操作系统不可怕,重装系统不求人,因为我们是GISer!

GISer不仅可以用意念操作软件,而且可以轻松自如重装系统!今天我们分享用U制作启动盘,并安装Win7系统。 一、系统安装必备 优盘(现在的U盘内存都比较大,大于4G即可)电脑店操作系统(Win7 64位专业版)二、安装过程 1、系统启动盘制作 下载电脑店优盘制作软件,安装,运行…

看聊天记录都学不会C语言?太菜了吧》(16)我一直以为校花很漂亮,直到我叫了她一声...

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我&#xff0c;若你是真心学习可以送你书籍&#xff0c;指导你学习&#xff0c;给予你目标方向的学习路线&#xff0c;无套路&#xff0c;博客为证。 本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖…

小米空调来了,意外的是还一起来了一个马桶盖

8月10日下午&#xff0c;小米旗下生态链企业智米召开了新品发布会&#xff0c;发布会上正式推出了智米全直流变频空调和智米智能马桶盖。 智米全直流变频空调采用了纯白配色&#xff0c;外观设计较为简洁&#xff0c;空调底部有一个圆形的显示屏&#xff0c;可显示温度、电量统…

聊一聊 CLR 中的 typedef 是怎么玩的

一&#xff1a;背景 在 CLR 源码中&#xff0c;我们会看到很多关于 typedef 的定义&#xff0c;比如下面这样&#xff1a;// Callback function type used by DacStreamManager to coordinate // amount of available memory between multiple streamable data // structures (…

JAVA如何正确处理Unicode字符

最近在开发输入法程序时遇到一个小问题&#xff0c;就是删除一个emoji时&#xff0c;不能一次删干净&#xff0c;需要执行两次操作才可以。Intuitively&#xff0c;这肯定是java操作unicode字符的问题&#xff0c;于是找了JAVA官方文档参考一下&#xff0c;解决了这个问题&…

透过面试题,洞察Hbase 核心知识点

LSM 算法 HFile 索引 &#xff0c;二级索引 hbase的问题 1.hbase怎么预分区&#xff1f; 2.hbase怎么给web前台提供接口来访问&#xff1f; 3.htable API有没有线程安全问题&#xff0c;在程序中是单例还是多例&#xff1f; 4.我们的hbase大概在公司业务中&#xff08;主要…

《看聊天记录都学不会Python到游戏实战?太菜了吧》(4)小白不知道这个知识点将会错漏百出

本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新&#xff0c;包括别的语言以及实战都将使用对话的方式进行教学&#xff0c;基础编程语言教学适用于零基础小白&#xff0c;之后实战课程也将会逐步更新。 若…

【Pix4d精品教程】打开Pix4DMapper时提示Pix4DMapper.exe已停止工作的完全解决办法

本文为作者在使用软件时,打开Pix4DMapper时提示Pix4DMapper.exe已停止工作的完全解决办法,亲测可用! 目录 一、问题错误提示 二、问题分析及解决方法 一、问题错误提示 打开Pix4DMapper时,提示Pix4DMapper.exe已停止工作,错误提示如下: 展开问题详细信息:

Framework Design Studio 发布了

介绍 Krzysztof Cwalina 和他的伙计们最近在开发一个工具&#xff0c;可以帮助框架设计者更容易地进行设计、复查和维护高度易用的API&#xff0c;你可一定要看看Framework Design Studio&#xff08;FDS&#xff09;。 可以在此处下载FDS和它的快速入门文档。 目前这个工具主要…

微服务 配置中心 Nacos .Net 5

本文来自投稿&#xff1a;蓝创精英团队基于Nacos来一篇关于微服务的配置中心方案Demo。Nacos是开源的&#xff0c;同时&#xff0c;阿里云也有收费的关于它的服务&#xff0c;公司刚好是依托阿里云的服务体系&#xff0c;所以&#xff0c;使用它作为配置中心的可能性还是很大的…

看聊天记录都学不会C语言?太菜了吧》(17)5分钟搞懂指针与多重指针

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我&#xff0c;若你是真心学习可以送你书籍&#xff0c;指导你学习&#xff0c;给予你目标方向的学习路线&#xff0c;无套路&#xff0c;博客为证。 本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖…

如何保护你的linux操作系统

导读在现在这个世道中&#xff0c;Linux操作系统的安全是十分重要的。但是&#xff0c;你得知道怎么干。一个简单反恶意程序软件是远远不够的&#xff0c;你需要采取其它措施来协同工作。那么试试下面这些手段吧。 使用SELinuxSELinux是用来对Linux进行安全加固的&#xff0c;有…

无人职守安装的设计与部署

无人职守安装的设计与部署 (2009-2-19) 安装前需要生成一个应答文件&#xff0c;此时需要一个光盘中的工具。首先&#xff0c;将WINDOWN2003光盘载入CD&#xff0c;---单击退出。接下来打开光盘&#xff0c; 选择SUPPORT—并打开&#xff0c; --TOOLS –并打开 -----…

干掉RedisHelper,请这样用分布式缓存

前言我们在项目中使用Redis时通常是写一个单例模式的RedisHelper静态类&#xff0c;暴露一些常用的Get、Set等操作&#xff0c;在需要使用地方直接RedisHelper.StringGet(xx,xx)就可以了&#xff0c;这样虽然简单粗暴地满足我们对Redis的所有操作需要&#xff0c;但是这在Asp.N…

《看聊天记录都学不会C#?太菜了吧》(2)C#那么简单我为何之前还学C语言?

本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新&#xff0c;包括别的语言以及实战都将使用对话的方式进行教学&#xff0c;基础编程语言教学适用于零基础小白&#xff0c;之后实战课程也将会逐步更新。 若…

Android之java.lang.ClassCastException: *****cannot be cast to*******

1 问题 在写BaseMultiItemQuickAdapter适配器的时候&#xff0c;更具不同类型构建不同的实体对象&#xff0c;提示错误如下 2 原因 Overrideprotected void convert(BaseViewHolder helper, MultiItemEntity item) {switch (helper.getItemViewType()) {case AppCleanHead.app…

php函数的初步使用

通过调用函数&#xff0c;实现打印半金字塔、全金字塔、空心金字塔、菱形、空心菱形 调用例程 huaTuMain.php被调用函数 huaTu.php转载于:https://www.cnblogs.com/seaBiscuit0922/p/5613141.html