验证码
        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>

验证码的编写——本质:图片目的:防止恶意表单注册相关推荐

  1. html把保留图片改为提交按钮,如何制作图片按钮,并为图片按钮添加提交表单和重置表单功能...

    网页中有表单,表单的默认按钮样式不是很好看,很多人为了美观使用图片做按钮. 今天中国在 一.图片按钮的制作方法 1. 定义图像形式的提交按钮. 2.用CSS把图片设为按钮的背景 3.作用,设置其bac ...

  2. html标签:表格、列表、图片、文字、表单、以及h5新增特性

    文章目录 前言 一.表格 二.列表 三.图片 四.文字 五.表单 六.h5新增特性 1.语义化标签 2.表单新增input属性 3.datalist 4.filedset 5.mark标记标签 6.多 ...

  3. html form背景图片设置,input 提交表单按钮 背景图片的完美设置

    import java.awt.*; import javax.swing.*; public class TestBackgroundColor extends JFrame  { public s ...

  4. 用PHP编写,猜数字游戏,表单页面输入一个数字,随机产生1-10的整数,用户在表单填入数字,猜大小提示“猜大了、猜对了、猜小了”,如果猜对了重新产生随机数,进行下一轮。

    图片: 代码: <!DOCTYPE html> <html> <head><title></title> </head> < ...

  5. html表单ui图片,别人的UI表单为什么设计这么漂亮?

    在产品设计里面,用户的注册流程.输入界面.设置页面.操作的页面,表单都是产品设计中最重要的组件之一.填写表单并不是所有人都喜欢做的事情,但是有时候要用户必须注册完成,所以表单设计原则一定要高效简单. ...

  6. Flask项目实战——7—(Redis数据库存储验证码信息、验证登录界面的表单信息、注册功能实现、登录实现)

    推荐一个API平台:聚合数据 1.Redis数据库存储验证码信息 保存手机验证码到Redis数据库 公有视图文件:apps/common/views.py # -*- encoding: utf-8 ...

  7. html表单输入框添加验证码,织梦Dedecms为自定义表单添加验证码功能

    使用织梦Dedecms自定义表单的时候,即使你做了字段的验证,也很有可能被人刷很多垃圾的内容,更加安全的一个方法是为自定义表单添加上验证码功能.今天我就来为大家分享一下怎样给自定义表单添加验证码! 一 ...

  8. Java Web注册表单编写

    编写注册表单 1.要做下列的这样一个表单信息: 2.方法主体里面添加表单 < form action="提交地址" method="post"> 表 ...

  9. Itext7表单域处理(文字和图片)及添加水印

    Itext7改版相对于Itext5改版很大,由于新出来,很多文档都找不到.最近项目用到,就研究并记录了一下. 本文解决的问题: 1.替换表单域的变量: 2.在表单域位置插入图片,图片根据表单域的大小自 ...

最新文章

  1. [洛谷P4171][JSOI2010]满汉全席
  2. 7、ns-3建立拓扑
  3. NLP通用模型decaNLP诞生,一个模型搞定十大自然语言常见任务
  4. mysql 日志还原数据库_通过Mysql-bin日志恢复还原数据
  5. 与用户登录shell相关的文件/etc/profile,~/bashrc等浅析
  6. linux基础系统命令大全
  7. 如何在Word,Excel和PowerPoint 2010中裁剪图片
  8. java spring mvc json ajax 优势_SpringMVC后台json数据前台ajax获取不到!!!急求解答!!!...
  9. android系统自动休眠代码流程,Android P 电源管理(4)待机流程
  10. ubuntu pycharm设置快捷图标_这些Ubuntu中的小技巧,你知道吗?
  11. 沉浸式状态栏的简易实现
  12. IDM磁力解析 IDM磁力使用教程
  13. 数据库实验四 视图实验
  14. 微信小程序背景图片 模拟器正常显示 真机无法显示
  15. 如何打造一个高效的研发团队
  16. 大学生计算机应用基础赵山林高媛,我院学生获“第四届全国大学生计算机应用能力与信息素养大赛(IC3)”全国一等奖...
  17. java 量化指标_量化投资学习笔记13——各种指标的绘图、计算及交易策略
  18. 企业人脸识别解决方案,让员工考勤更高效
  19. Ubuntu16.04使用sudo add-apt-repository时报错:aptsources.distro.NoDistroTemplateException
  20. [京东实践干货]手把手教你实现「京喜工厂」的CSS动画效果

热门文章

  1. flex布局知识点总结
  2. 让Win10文件管理器的详细信息窗格显示更多信息
  3. Windows 10 周年更新正式版下载 + win10 快捷键
  4. 【Java】实战Java虚拟机之五“开启JIT编译”
  5. px/em/pt区别和转换
  6. oracle 表空间的相关操作
  7. 理解ROS话题---ROS学习第5篇
  8. Makefile常用函数总结
  9. android生成大分辨率图片,自动生成Android不同分辨率下的图片
  10. python2中的unicode_python2中的unicode()函数在python3中会报错: