06验证码

ValidateCode.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.Random"%>
<%@ page import="java.io.OutputStream"%>
<%@ page import="java.awt.Color"%>
<%@ page import="java.awt.Font"%>
<%@ page import="java.awt.Graphics"%>
<%@ page import="java.awt.image.BufferedImage"%>
<%@ page import="javax.imageio.ImageIO"%>
<%
    int width = 80;
    int height = 32;
    //create the image
    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    Graphics g = image.getGraphics();
    // set the background color
    g.setColor(new Color(0xDCDCDC));
    g.fillRect(0, 0, width, height);
    // draw the border
    g.setColor(Color.black);
    g.drawRect(0, 0, width - 1, height - 1);
    // create a random instance to generate the codes
    Random rdm = new Random();
    String hash1 = Integer.toHexString(rdm.nextInt());//随机数转16进制数
    // make some confusion
    for (int i = 0; i < 50; i++) {
        int x = rdm.nextInt(width);
        int y = rdm.nextInt(height);
        g.drawOval(x, y, 0, 0);
    }
    // generate a random code
    String capstr = hash1.substring(0, 4);//截取随机数的前四位
    session.setAttribute("key", capstr);//以键值对,保存验证码
    g.setColor(new Color(0, 100, 0));
    g.setFont(new Font("Candara", Font.BOLD, 24));
    g.drawString(capstr, 8, 24);
    g.dispose();
    response.setContentType("image/jpeg");
    out.clear();
    out = pageContext.pushBody();
    OutputStream strm = response.getOutputStream();//使用一个输出流写到页面上
    ImageIO.write(image, "jpeg", strm);
    strm.close();
%>

引入方式:添加一个单击事件,点击重新访问它原来的地址+防止浏览器缓存(Math.random(););这样就能保证每次点击都会有不同的效果展示.

<img id="loginform:vCode" src="${pageContext.request.contextPath }/validatecode.jsp"
                                
onclick="javascript:document.getElementById('loginform:vCode').src='${pageContext.request.contextPath }/validatecode.jsp?'+Math.random();" />
                        
初始化用户密码
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,803评论 18 399
  • 一. Java基础部分.................................................
    wy_sure阅读 3,846评论 0 11
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,925评论 25 709
  • 妈妈曾经也有妈妈, 暖暖的围炉暖暖的家, 漫天的星星眨呀眨, 贫瘠的泥土开出七色的花, 一瓣瓣都浸染着梦的色彩呀。...
    梦碎了现实阅读 840评论 0 0
  • 亲情 最近可能中“奇葩说”的毒比较深,我本最不喜欢的就是辩论,因为在我的意识里辩手是很极端的,因为他们会为了自己的...
    青惠色阅读 1,635评论 0 0