生成随机数验证码的工具类

package com.cx;
//生成随机数的图片
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random; import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class CreateCode extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { //7.禁止浏览器缓存随机图片
response.setDateHeader("Expires", -1);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache"); //6.通知客户机以图片方式打开发送过去的数据
response.setHeader("Content-Type", "image/jpeg");
//1.在内存中创建一副图片
BufferedImage image=new BufferedImage(80, 30, BufferedImage.TYPE_INT_RGB);
//2.在图片上写数据
Graphics g=image.getGraphics(); //设背景色
g.setColor(Color.WHITE);
g.fillRect(0, 0, 80, 30); //3.设置写入数据的颜色和字体
g.setColor(Color.BLACK);
g.setFont(new Font(null,Font.BOLD, 20)); //4.向图片上写数据
String num=makeNum();
//将随机生成的数值保存到session
request.getSession().setAttribute("checkcode", num);
g.drawString(num, 0, 20); //5.把写好的数据的图片输出给浏览器
ImageIO.write(image, "jpg", response.getOutputStream()); }
//该函数生成随机7位数
public String makeNum(){
Random r=new Random();
//这里9999999可以生成7位
String num=r.nextInt(9999)+"";
StringBuffer sb=new StringBuffer();
//如果不够4位,前面不补零
for(int i=0;i<4-num.length();i++){
sb.append("0");
}
num=sb.toString()+num;
return num;
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { this.doGet(request, response);
} }
//使用
//<img src="/验证码的url"/>

生成随机数验证码的工具类(from韩顺平)的更多相关文章

  1. java生成图片验证码(转)--封装生成图片验证码的工具类

    博客部分内容转载自 LonlySnow的博客:后台java 实现验证码生成 1.controller方法 @RequestMapping(value = "/verifycode/img&q ...

  2. iOS开发——生成二维码——工具类

    啥也不说,直接上源码,拷过去就能用.生成二维码的工具类使用方法在ProduceQRCode.h里有示例说明 分别将下面的ProduceQRCode.h和ProduceQRCode.m对应的代码考到自己 ...

  3. java生成二维码工具类

    package com.runtime.extend.utils.CodeCreate; import com.google.zxing.*;import com.google.zxing.commo ...

  4. Java(日期、随机数、系统工具类)

    Date类 一般用于获取时间 Date date1 = new Date();//获取当前系统时间 Date date2 = new Date(10000);//获取从标准基准时间起10000毫秒的时 ...

  5. C#生成漂亮验证码完整代码类

    using System;using System.Web;using System.Drawing;using System.Security.Cryptography; namespace Dot ...

  6. java生成兑换码礼包码--工具类

    import java.util.HashSet; import java.util.Random; import java.util.Set; public class GenSerial { pr ...

  7. JavaWeb学习day6-Response初学2(生成随机数验证码)

    1 public class imageServlet extends HttpServlet { 2 @Override 3 protected void doGet(HttpServletRequ ...

  8. Mybitis根据工具类反射数据库生成映射+整合springboot

    一 反向生成数据库mapper的工具类: 添加依赖 <dependency> <groupId>org.mybatis.generator</groupId> &l ...

  9. (转)Android 之生成图形验证码

    import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; impor ...

随机推荐

  1. win10家庭版添加本地账户方法

    1.正常情况下,windows的使用者都习惯于用本地用户及用户组工具来创建新用户,如下图所示,在win10的开始窗口右侧的空白处,输入lusrmgr.msc 打开本地用户管理控制台. 2.在win10 ...

  2. ASP.NET MVC5 之 客户端实现文件的下载

    MVC 实现下载功能主要借助于 File 属性: //下载文件接口 public ActionResult GetTrackTempIsc(ICSModels icsModels) { bool fl ...

  3. linux C编程 gdb的使用

    linux C编程 gdb的使用 通常来说,gdb是linux在安装时自带的,在命令行键入"gdb"字符并按回车键会启动gdb调试环境. 1.gdb的基本命令 命令 说明 file ...

  4. WinForm ListBox 控件用法

    下面演示如何利用列表控件 ListBox 实现多选与移动选项: using IMS.WinFormClient.UserControls; using System; using System.Col ...

  5. Java 创建Excel并逐行写入数据

    package com.xxx.common.excel; import java.io.File; import java.io.FileInputStream; import java.io.Fi ...

  6. Dojo - 操作Dom的函数

    DOM Manipulation You might be seeing a trend here if you have gotten this far in the tutorial, in th ...

  7. 微信小程序组件解读和分析:五、text文本

    text文本组件说明: text 文本就是微信小程序中显示出来的文本. text文本组件的示例代码运行效果如下: 下面是WXML代码: [XML] 纯文本查看 复制代码 ? 1 2 3 4 <v ...

  8. 关于串通京东接口的demo

    public string Get(int id) { JObject o = new JObject( new JProperty("billNo", "ESL1363 ...

  9. jsp学习笔记 - 内置对象 application

    ---恢复内容开始--- 1.application一般用this.getServletContext()替代 2.appllication有一个非常有用的函数 getRealPath(),获取绝对路 ...

  10. HDU_1233_还是畅通工程

    还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...