生成随机唯一字加图片-学习笔记


import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.UUID;

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 Yanzm01 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

//设置浏览器不能缓存
response.setHeader("expires","-1");
response.setHeader("cache-control","no-cache");
response.setHeader("pragma","no-cache");

//在内存中构造一副图片
BufferedImage image = new BufferedImage(500,25,BufferedImage.TYPE_INT_RGB);

//取得画笔
Graphics g = image.getGraphics();

//设置字体大小和颜色
g.setColor(Color.YELLOW);
g.setFont(new Font("黑体",Font.BOLD,22));
//在图片中显示字符串 1azb
g.drawString(getString(),20,20);

ImageIO.write(image, "jpg", response.getOutputStream());

}

/**产生一个随机数*/
private String getString()
{
//唯一ID号
//UUID.randomUUID().toString();

return UUID.randomUUID().toString();
}

}


    /**产生一个4位随机数第一个数字,第二个字母,第三个数字,第四个字母*/
    private String getStringfor()
    {
        String str = "";
        String numberAndLetter="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
        int length = numberAndLetter.length(); //取得全部长度
        for(int i=1;i<=4;i++){  //验证码长度
            if(i==1 || i==3){//如果1、3、位数字
                while(true){
                    Random random = new Random();
                    int index = random.nextInt(length);
                    //substring(int beginIndex, int endIndex)
                    //返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。
                    String value = numberAndLetter.substring(index,index+1);
                    if(value.matches("[0-9]")){ //正则判断
                        str += value;
                        break;
                    }
                }
            }else if(i==2 || i==4){//如果2、4位大小字母
                while(true){
                    Random random = new Random();
                    int index = random.nextInt(length);
                    String value = numberAndLetter.substring(index,index+1);
                    if(value.matches("[A-Za-z]")){
                        str += value;
                        break;
                    }
                }
            }
        }
        return str;

    }

原文地址:http://blog.51cto.com/357712148/2104694

时间: 2024-12-17 01:48:51

生成随机唯一字加图片-学习笔记的相关文章

加壳学习笔记(一)-基础知识

1.预备知识 1.关于栈,在windows里面的堆栈其实很简单,当学了才知道哈,呵呵,第一要记住的是windows里面的栈是向低地址生长的(extended,延伸,呵呵,顺便丰富下英语的单词量,确实是少的可怜),你可以这样认为,栈就像是一个倒立的箱子,箱子的口子是向下的,底是向上的,这里就表明了系统栈的分布也是延伸方向是由高地址向低地址extended,在最初的空栈阶段,栈顶(extended stack pointer,简称是esp)在栈底的低一个位置,呵呵,其实很好理解,就是说最初的箱子是空

加壳学习笔记(二)-汇编基础

7.简单的汇编语法:   堆栈平衡  PUSH,POP功能: 把操作数压入或取出堆栈语法: PUSH 操作数 POP 操作数格式: PUSH r PUSH M PUSH data POP r POP mPUSHF,POPF,PUSHA,POPA功能: 堆栈指令群格式: PUSHF POPF PUSHA POPAADD,ADC功能: 加法指令语法: ADD OP1,OP2 ADC OP1,OP2格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data影响标志: C,P,A,

加壳学习笔记(三)-简单的脱壳思路&amp;调试思路

首先一些windows的常用API: GetWindowTextA:以ASCII的形式的输入框 GetWindowTextW:以Unicaode宽字符的输入框 GetDlgItemTextA:以ASCII的形式的输入框 GetDlgItemTextW:以Unicaode宽字符的输入框 这些函数在使用的时候会有些参数提前入栈,如这函数要求的参数是字符串数目.还有大小写啦之类的东西,这些东西是要在调用该函数之前入栈,也就是依次push,就是说一般前面几个push接着一个call,那前面的push可能

Android异步加载学习笔记之四:利用缓存优化网络加载图片及ListView加载优化

如果不做任何处理,直接用网络加载图片在网速快的情况下可能没什么不好的感觉,但是如果使用移动流量或是网络不好的时候,问题就来了,要么用户会抱怨流量使用太多,要么抱怨图片加载太慢,如论从哪个角度出发,都不是好的体验!要提高用户体验,我们就要使用缓存.Android中数据缓存的方式有很多,相关介绍的文章也比较多,比如http://blog.csdn.net/dahuaishu2010_/article/details/17093139和http://www.jb51.net/article/38162

Android异步加载学习笔记之一:用AsyncTask加载服务器json数据

我们知道在Android开发中,UI主线程不能执行耗时太久的操作,Activity一般是不超过5s,BroadCaseReceiver一般不超过10s,因为这些耗时操作不仅仅阻塞UI线程操作,还可能导致用户不想见到的ANR,所以我们需要使用异步操作. 我们通常用的异步操作有两种方式: 1:多线程或线程池异步加载, 2,AsyncTask异步任务操作(底层也是用的线程池). 数据来源于慕课网:json数据地址:http://www.imooc.com/api/techer?type=4&num=3

openssl 加解密学习笔记

首先最近接到一个项目,这个项目中需要用到RSA的加密解密,因为之前没有接触过,在网上找了些资料,然后自己测试后发现其实使用openssl来进行加解密挺简单的,但是网上百度出来的很多又是一样的,有时候帮助不是很大,所以才想要写下来自己在搞整个加密过程遇到的一些问题,方便自己以后回头查看,也可能会帮到遇到同样的童鞋. 废话不多说,我接到的这个项目呢,有几个地方是需要用到RSA的加解密.1.使用.pfx格式的私钥签名.2.使用.cer的公钥文件进行加密操作.3.使用给定的指数与模进行公钥加密.下面有些

圆角边框以及阴影制作卡片式图片 - 学习笔记

圆角边框以及阴影制作卡片式图片 圆角边框 border-radius 卡片使用阴影 box-shadow 利用阴影给图片底部创造一个长方形 内部的元素会直接覆盖整个阴影 HTML 部分 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>卡片式图片&l

jQuery箭头切换图片 - 学习笔记

jQuery箭头切换图片 布局 3d位移 变形原点 jQuery transform:translate3d(x,y,z):        x 代表横向坐标移向量的长度       y 代表纵向坐标移向量的长度       z 代表Z轴移向量的长度 取值不可为百 scale() 缩放 transform-origin:0 50%:        top left | left top 等价于 0 0       top | top center | center top 等价于 50% 0   

Object-C 学习笔记(一) Hello Objective-C

#import <Foundation/Foundation.h> int main(int argc, const char *argv[]) { NSLog(@"Hello Object-C!"); return (0); } 单击Build and GO或Mac键+R,将生成并运行程序: Object-C 学习笔记(一) Hello Objective-C