java 生成验证码
来源:互联网 发布:37大闹天宫进阶数据 编辑:程序博客网 时间:2024/05/15 13:58
生成验证码的过程
1.创建BufferedImage对象,该对象存在内存中,负责保存绘制的图像;
2.创建Graphics2D对象,该对象负责绘制所需的图像;(1先画边框,2.产生码值,3.产生干扰线 )
3.当绘制完成后,调用com.sun.image.codec.jpeg包的JPEG编码器对其编码;
4.最后将编码后的数据输出至HttpResponse即可
一.validImage.jsp生成验证码代码
<%@ page language="java" pageEncoding="UTF-8"%><%@page import="java.util.Date"%><%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"%> <%@page import="java.io.InputStream"%> <% int width = 68; //图片宽度 int height = 22; //图片高度 int count = 4; //码数 //验证码源 char[] codes = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; InputStream inputStream; BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = bi.createGraphics(); g.setColor(Color.WHITE); g.fillRect(0, 0, width, height); //画背景 g.setColor(Color.BLACK); ////画着色块 g.drawRect(0, 0, width - 1, height - 1); //画边框 //设置画笔的颜色和字体 g.setFont(new Font("Fixedsys",Font.PLAIN, 14)); StringBuilder sb = new StringBuilder(); //用来保存产生的码值 Random random = new Random(); for(int i = 0; i < count; i++){ char c = codes[random.nextInt(codes.length)]; sb.append(c); //产生随机颜色 g.setColor(new Color(random.nextInt(200), random.nextInt(200), random.nextInt(200))); g.drawString(String.valueOf(c), i * (width/count)+2, height-3); } //随机数的干扰线 for(int i = 0; i < 1; i++){ g.setColor(new Color(160 + random.nextInt(96), 160 + random.nextInt(96), 160 + random.nextInt(96))); int x = 2+random.nextInt(width); int y = 2+random.nextInt(height); int x1 = random.nextInt(6); int y1 = random.nextInt(6); g.drawLine(x, y, x+x1 > width - 3 ? width-3 : x+x1, y+y1 > height-3 ? height - 3 : y+y1); } // 将认证码存入SESSION session.setAttribute("validCode", sb.toString()); g.dispose(); out.clear(); out = pageContext.pushBody(); ImageIO.setUseCache(true); //ImageIO.setUseCache(false)用系统缓存
//编码后的JPEG图像直接输出到了out对象中,我们只要传入response. getOutputStream()就可以直接输出到HttpResponse中。 ImageIO.write(bi, "JPEG", response.getOutputStream()); //保存新图片 %>
二.contrller
@RequestMapping(value="/m/login/validImage")public String validImage(){return "m/validImage";}
三.用验证码的页面的片段代码。
<img src="<ph:root/>/m/login/validImage?ran=Math.random()" width="68px" height="25px" name="validImage" id="validImage" onclick="this.src='<ph:root/>/m/login/validImage?ran='+Math.random()" />
阅读全文
0 0
- java生成验证码
- Java 生成验证码
- Java 验证码生成
- java生成验证码
- java生成验证码
- java生成验证码
- Java生成验证码
- Java生成验证码
- java生成验证码
- java生成验证码
- java验证码生成
- java生成验证码
- Java生成验证码
- java生成验证码
- Java生成验证码
- Java生成验证码
- JAVA--生成验证码
- java 生成验证码
- [置顶] app引导页(背景图片切换加各个页面动画效果)
- iOS开发之旧版本Xcode下载
- MyBatis之整合Spring(Dao和Mapper两种方式)
- 关于JS循环Table
- 深度信念网络
- java 生成验证码
- HashMap集合的使用
- @Resource
- sortedArrayUsingComparator
- RNN循环神经网络
- gcc 用法
- LeetCode c语言-Generate Parentheses和买票找零问题
- 【学习摘记】马士兵bbs初级版_课时14-15_login权限控制:session的典型用法
- Java实现——统计文件中字符串出现次数