验证码的编写——本质:图片目的:防止恶意表单注册
验证码
1. 本质:图片
2. 目的:防止恶意表单注册
CheckCodeServlet.java
package cn.itcast.web.servlet;import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;@WebServlet("/checkCodeServlet")
public class CheckCodeServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {int width = 100;int height = 50;//1.创建一对象,在内存中图片(验证码图片对象)BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);//2.美化图片//2.1 填充背景色Graphics g = image.getGraphics();//画笔对象g.setColor(Color.PINK);//设置画笔颜色g.fillRect(0,0,width,height);//填充背景色//2.2画边框g.setColor(Color.BLUE);g.drawRect(0,0,width - 1,height - 1);String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789";//生成随机角标Random ran = new Random();for (int i = 1; i <= 4; i++) {int index = ran.nextInt(str.length());//获取字符char ch = str.charAt(index);//随机字符//2.3写验证码g.drawString(ch+"",width/5*i,height/2);}//2.4画干扰线g.setColor(Color.GREEN);//随机生成坐标点for (int i = 0; i < 10; i++) {int x1 = ran.nextInt(width);int x2 = ran.nextInt(width);int y1 = ran.nextInt(height);int y2 = ran.nextInt(height);g.drawLine(x1,y1,x2,y2);}//3.将图片输出到页面展示ImageIO.write(image,"jpg",response.getOutputStream());}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);}
}
register.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script>/*分析:点击超链接或者图片,需要换一张1.给超链接和图片绑定单击事件2.重新设置图片的src属性值*/window.onload = function(){//1.获取图片对象var img = document.getElementById("checkCode");//2.绑定单击事件img.onclick = function(){//加时间戳 加上时间戳的原因是因为浏览器的缓存问题var date = new Date().getTime();img.src = "/day15/checkCodeServlet?"+date;}var change=document.getElementById("change");change.onclick = function(){//加时间戳 加上时间戳的原因是因为浏览器的缓存问题var date = new Date().getTime();img.src = "/day15/checkCodeServlet?"+date;}}</script>
</head>
<body><img id="checkCode" src="/day15/checkCodeServlet" /><a id="change" href="">看不清换一张?</a>
</body>
</html>
验证码的编写——本质:图片目的:防止恶意表单注册相关推荐
- html把保留图片改为提交按钮,如何制作图片按钮,并为图片按钮添加提交表单和重置表单功能...
网页中有表单,表单的默认按钮样式不是很好看,很多人为了美观使用图片做按钮. 今天中国在 一.图片按钮的制作方法 1. 定义图像形式的提交按钮. 2.用CSS把图片设为按钮的背景 3.作用,设置其bac ...
- html标签:表格、列表、图片、文字、表单、以及h5新增特性
文章目录 前言 一.表格 二.列表 三.图片 四.文字 五.表单 六.h5新增特性 1.语义化标签 2.表单新增input属性 3.datalist 4.filedset 5.mark标记标签 6.多 ...
- html form背景图片设置,input 提交表单按钮 背景图片的完美设置
import java.awt.*; import javax.swing.*; public class TestBackgroundColor extends JFrame { public s ...
- 用PHP编写,猜数字游戏,表单页面输入一个数字,随机产生1-10的整数,用户在表单填入数字,猜大小提示“猜大了、猜对了、猜小了”,如果猜对了重新产生随机数,进行下一轮。
图片: 代码: <!DOCTYPE html> <html> <head><title></title> </head> < ...
- html表单ui图片,别人的UI表单为什么设计这么漂亮?
在产品设计里面,用户的注册流程.输入界面.设置页面.操作的页面,表单都是产品设计中最重要的组件之一.填写表单并不是所有人都喜欢做的事情,但是有时候要用户必须注册完成,所以表单设计原则一定要高效简单. ...
- Flask项目实战——7—(Redis数据库存储验证码信息、验证登录界面的表单信息、注册功能实现、登录实现)
推荐一个API平台:聚合数据 1.Redis数据库存储验证码信息 保存手机验证码到Redis数据库 公有视图文件:apps/common/views.py # -*- encoding: utf-8 ...
- html表单输入框添加验证码,织梦Dedecms为自定义表单添加验证码功能
使用织梦Dedecms自定义表单的时候,即使你做了字段的验证,也很有可能被人刷很多垃圾的内容,更加安全的一个方法是为自定义表单添加上验证码功能.今天我就来为大家分享一下怎样给自定义表单添加验证码! 一 ...
- Java Web注册表单编写
编写注册表单 1.要做下列的这样一个表单信息: 2.方法主体里面添加表单 < form action="提交地址" method="post"> 表 ...
- Itext7表单域处理(文字和图片)及添加水印
Itext7改版相对于Itext5改版很大,由于新出来,很多文档都找不到.最近项目用到,就研究并记录了一下. 本文解决的问题: 1.替换表单域的变量: 2.在表单域位置插入图片,图片根据表单域的大小自 ...
最新文章
- [洛谷P4171][JSOI2010]满汉全席
- 7、ns-3建立拓扑
- NLP通用模型decaNLP诞生,一个模型搞定十大自然语言常见任务
- mysql 日志还原数据库_通过Mysql-bin日志恢复还原数据
- 与用户登录shell相关的文件/etc/profile,~/bashrc等浅析
- linux基础系统命令大全
- 如何在Word,Excel和PowerPoint 2010中裁剪图片
- java spring mvc json ajax 优势_SpringMVC后台json数据前台ajax获取不到!!!急求解答!!!...
- android系统自动休眠代码流程,Android P 电源管理(4)待机流程
- ubuntu pycharm设置快捷图标_这些Ubuntu中的小技巧,你知道吗?
- 沉浸式状态栏的简易实现
- IDM磁力解析 IDM磁力使用教程
- 数据库实验四 视图实验
- 微信小程序背景图片 模拟器正常显示 真机无法显示
- 如何打造一个高效的研发团队
- 大学生计算机应用基础赵山林高媛,我院学生获“第四届全国大学生计算机应用能力与信息素养大赛(IC3)”全国一等奖...
- java 量化指标_量化投资学习笔记13——各种指标的绘图、计算及交易策略
- 企业人脸识别解决方案,让员工考勤更高效
- Ubuntu16.04使用sudo add-apt-repository时报错:aptsources.distro.NoDistroTemplateException
- [京东实践干货]手把手教你实现「京喜工厂」的CSS动画效果
热门文章
- flex布局知识点总结
- 让Win10文件管理器的详细信息窗格显示更多信息
- Windows 10 周年更新正式版下载 + win10 快捷键
- 【Java】实战Java虚拟机之五“开启JIT编译”
- px/em/pt区别和转换
- oracle 表空间的相关操作
- 理解ROS话题---ROS学习第5篇
- Makefile常用函数总结
- android生成大分辨率图片,自动生成Android不同分辨率下的图片
- python2中的unicode_python2中的unicode()函数在python3中会报错: