输出随机认证码图片

  1 package cn.itcast.response;
  2
  3 import java.awt.Color;
  4 import java.awt.Font;
  5 import java.awt.Graphics;
  6 import java.awt.Graphics2D;
  7 import java.awt.image.BufferedImage;
  8 import java.io.FileInputStream;
  9 import java.io.IOException;
 10 import java.io.InputStream;
 11 import java.io.OutputStream;
 12 import java.io.PrintWriter;
 13 import java.util.Random;
 14
 15 import javax.imageio.ImageIO;
 16 import javax.servlet.ServletException;
 17 import javax.servlet.http.HttpServlet;
 18 import javax.servlet.http.HttpServletRequest;
 19 import javax.servlet.http.HttpServletResponse;
 20
 21 public class ResponseDemo extends HttpServlet {
 22
 23     public static final int WIDTH = 120;
 24     public static final int HEIGHT = 45;
 25
 26     public void doGet(HttpServletRequest request, HttpServletResponse response)
 27             throws ServletException, IOException {
 28
 29         BufferedImage image = new BufferedImage(WIDTH, HEIGHT,
 30                 BufferedImage.TYPE_INT_RGB);
 31
 32         Graphics g = image.getGraphics();
 33
 34         // 1.设置背景色
 35         setBackGround(g);
 36
 37         // 2.设置边框
 38         setBorder(g);
 39
 40         // 3.画干扰线
 41         drawRandomLine(g);
 42
 43         // 4.写随机数
 44         drawRandomNum((Graphics2D) g);
 45
 46         // 5.图形写给浏览器
 47         response.setContentType("image/jpeg");
 48
 49         //发头控制浏览器不要缓存
 50         response.setDateHeader("expries", -1);
 51         response.setHeader("Cache-Control", "no-cache");
 52         response.setHeader("Pragma", "no-cache");
 53         ImageIO.write(image, "jpg", response.getOutputStream());
 54     }
 55
 56     private void drawRandomNum(Graphics2D g) {
 57
 58         g.setColor(Color.RED);
 59         g.setFont(new Font("宋体",Font.BOLD,20));
 60
 61         String base = "\u7684\u4e00\u662f\u6211\u4e0d\u5728\u4eba";
 62
 63         int x=5;
 64         for(int i=0;i<4;i++){
 65
 66             int degree = new Random().nextInt()%30;
 67
 68             String ch = base.charAt(new Random().nextInt(base.length()))+"";
 69
 70             g.rotate(degree*Math.PI/180,x,20);//设置旋转角度
 71             g.drawString(ch, x, 20);
 72             g.rotate(-degree*Math.PI/180,x,20);
 73             x+=30;
 74         }
 75
 76     }
 77
 78     private void drawRandomLine(Graphics g) {
 79         g.setColor(Color.GREEN);
 80         for (int i = 0; i < 5; i++) {
 81             int x1 = new Random().nextInt(WIDTH);
 82             int y1 = new Random().nextInt(HEIGHT);
 83
 84             int x2 = new Random().nextInt(WIDTH);
 85             int y2 = new Random().nextInt(HEIGHT);
 86
 87             g.drawLine(x1, y1, x2, y2);
 88         }
 89     }
 90
 91     private void setBorder(Graphics g) {
 92
 93         g.setColor(Color.BLUE);
 94         g.drawRect(1, 1, WIDTH - 2, HEIGHT - 2);
 95
 96     }
 97
 98     private void setBackGround(Graphics g) {
 99
100         g.setColor(Color.WHITE);
101         g.fillRect(0, 0, WIDTH, HEIGHT);
102
103     }
104
105     public void doPost(HttpServletRequest request, HttpServletResponse response)
106             throws ServletException, IOException {
107
108     }
109
110 }

 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 2 <html>
 3     <head>
 4         <title>register.html</title>
 5
 6     </head>
 7     <script type="text/javascript">
 8         function changeImage(img){
 9             img.src = img.src + "?" + new Date().getTime();
10             }
11     </script>
12     <style>
13     </style>
14
15     <body>
16         <form>
17         用户名:
18         <input type="text" name="username">
19         <br />
20         密码:
21         <input type="password" name="password">
22         <br />
23         认证码:
24         <input type="text" name="checkcode" />
25         <img src="/ServletDemo/servlet/ResponseDemo"
26             onclick="changeImage(this)" alt="换一张" style="cursor:hand" />
27         <br />
28         <input type="submit" value="注册" />
29         </form>
30     </body>
31 </html>

输出随机认证码图片

时间: 2024-10-23 17:52:58

输出随机认证码图片的相关文章

输出随机认证图片

<!---首先需要用到BufferedImage在内存中构建一张图片-----> BufferedImage img = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); <!-----最后一个参数表示一个图像,它具有合成整数像素的 8 位 RGB 颜色分量-----> <!---往图片上写需要用到Graphics,相当于一个画笔-----> Graphics g = img.getGraphic

response小结(三)—输出随机图片(验证码功能实现)

本文是一个很简单的向网页上输出验证码的实现喲!通过注释解释清楚了每一步! Myeclipse下的Package Explorer显示文件结构如下: ResponseDemo.java实现了输出随机图片的功能: 1 package com.yyz.response; 2 3 import java.awt.Color; 4 import java.awt.Font; 5 import java.awt.Graphics; 6 import java.awt.image.BufferedImage;

servlet输出随机图片(验证码)

package com.baidu.web.servlet; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO;

使用response输出随机图片

本项目主要针对于JavaWeb中使用response对象的方法生成一个随机图片,在客户端进行表单注册时,需要正确输入随机图片中的汉字. 生成随机图片的类为: import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import

11-利用session校验图片认证码

/****************************************************************产生随机验证码的servlet********************************************************************/ package response; import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.aw

response常见应用、response细节、输出随机图片、定时刷新网页

response常见应用 向客户端输出中文数据 分别以OutputStream和PrintWriter输出 多学一招:使用HTML语言里面的<meta>标签来控制浏览器行为 思考:用OutputStream输出1,为什么用户看到的不是1? 文件下载和中文文件的下载 输出随机图片 package com.hbsi.response; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java

输出随机验证码图片

1 /** 2 * //输出随机验证码图片:CAPTCHA图像 3 */ 4 public class ServletDemo1 extends HttpServlet { 5 private static final long serialVersionUID = 1L; 6 7 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOEx

HMAC哈希消息认证码

收藏 137 14 hmac 编辑 HMAC是密钥相关的哈希运算消息认证码,HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出. 中文名 哈希消息认证码 外文名 Hash-based Message Authentication Code 缩    写 HMAC 概述  HMAC是密钥相关的哈希运算 运算作用 验证TPM接受的授权数 目录 1 简介 ? 运算作用 ? 算法表示 ? HMAC运算步骤 ? HMAC的应用 2 典型应用 ? 认证流程 ? 安全性浅析 简介

密码学初级教程(五)消息认证码MAC-Message Authentication Code

密码学家工具箱中的6个重要的工具: 对称密码 公钥密码 单向散列函数 消息认证码 数字签名 伪随机数生成器 MAC能识别出篡改和伪装,也就是既可以确认消息的完整性,也可以进行认证. 消息认证码的输入包括任意长度的消息和一个发送者与接受者之间共享的密钥,它可以输出固定长度的数据,这个数据就是MAC. 消息认证码是一种与密钥相关联的单向散列函数. 消息认证码的应用实例 SWIFT(Society for Wordwide Interbank Financial Telecommunication,环