javaweb:Response的应用(三)——验证码实现
2022/7/25 14:23:22
本文主要是介绍javaweb:Response的应用(三)——验证码实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
验证码的有以下两种实现方式:
前端实现
后端实现
本次我们采用的是后端利用Java实现利用Response生成一个可以每几秒刷新一次的验证码的目的。
直接上源码
1 package com.jms.servlet; 2 3 import java.awt.Color; 4 import java.awt.Font; 5 import java.awt.Graphics; 6 import java.awt.image.BufferedImage; 7 import java.io.IOException; 8 import java.util.Random; 9 10 import javax.imageio.ImageIO; 11 import javax.servlet.ServletException; 12 import javax.servlet.http.HttpServlet; 13 import javax.servlet.http.HttpServletRequest; 14 import javax.servlet.http.HttpServletResponse; 15 16 17 public class ImageServlet extends HttpServlet{ 18 19 @Override 20 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 21 //让浏览器每过几秒自动刷新,此处设置为3秒 22 resp.setHeader("Refresh", "3"); 23 //在内存中创建一个图片 24 BufferedImage img = new BufferedImage(100, 40, BufferedImage.TYPE_INT_RGB); 25 //让图片的得到笔,对图片进行绘制 26 Graphics g = img.getGraphics(); 27 g.setColor(Color.white);//设置画笔为白色 28 g.fillRect(0, 0, 100, 40);//将图片填充为白色 29 g.setColor(Color.BLACK);//设置画笔为黑色 30 g.setFont(new Font("黑体", Font.BOLD, 20));//设置字体 31 g.drawString(makeNum(), 20, 30);//将随机生成的验证码画在图片上 32 //告诉浏览器,这个请求以图片形式打开 33 resp.setContentType("image/jpeg"); 34 //不让浏览器缓存 35 resp.setDateHeader("expires", -1); 36 resp.setHeader("Cache-Control", "no-Cache"); 37 resp.setHeader("Pragma", "no-Cache"); 38 //把图片写给浏览器 39 ImageIO.write(img, "jpg", resp.getOutputStream()); 40 } 41 42 @Override 43 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 44 doGet(req, resp); 45 } 46 47 //生成随机的验证码 48 private String makeNum() { 49 Random random = new Random(); 50 String arr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 51 String makenum = ""; 52 for(int i = 0; i < 5; i ++) { 53 int a = random.nextInt(26);//生成到随机数为0-25 54 makenum += arr.charAt(a); 55 } 56 return makenum; 57 58 } 59 60 61 }
修改web.xml
<servlet> <servlet-name>image</servlet-name> <servlet-class>com.jms.servlet.ImageServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>image</servlet-name> <url-pattern>/image</url-pattern> </servlet-mapping>
验证
存在验证码,并且页面每三秒刷新一次,每次刷新都会生成新的验证码。
(本文仅作个人学习记录用,如有纰漏,敬请指正)
这篇关于javaweb:Response的应用(三)——验证码实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行