标签:java javaweb resp 验证码 image import servlet 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>
验证
存在验证码,并且页面每三秒刷新一次,每次刷新都会生成新的验证码。
(本文仅作个人学习记录用,如有纰漏,敬请指正)
标签:java,javaweb,resp,验证码,image,import,servlet,Response 来源: https://www.cnblogs.com/jmsstudy/p/16516158.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。