随机产生验证码的工具类:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;

public class ImageUtil {
    //高度
    private static int width = 80;
    //宽度
    private static int height = 30;
    //随机对象
    private static Random rd = new Random();

public static BufferedImage createImage() {
        //创建图片对象
        BufferedImage image = new BufferedImage(width, height,
                BufferedImage.TYPE_INT_RGB);
        Graphics g = image.getGraphics();
        //设置背景颜色
        g.setColor(Color.GRAY);
        g.fillRect(0, 0, width, height);
        //设置字体颜色
        g.setColor(Color.black);
        String temp = "\u7684\u4e00\u4e86\u662f\u6211\u4e0d\u5728\u4eba\u4eec\u6709\u6765\u4ed6\u8fd9\u4e0a\u7740\u4e2a\u5730\u5230\u5927\u91cc\u8bf4\u5c31\u53bb\u5b50\u5f97\u4e5f\u548c\u90a3\u8981\u4e0b\u770b\u5929\u65f6\u8fc7\u51fa\u5c0f\u4e48";
        int len = temp.length();

    //随机选取不重复的四个汉字
        Set<String> set = new HashSet<String>();
        while (set.size() < 4) {
            int index = rd.nextInt(len);
            set.add(String.valueOf(temp.charAt(index)));
        }
        StringBuffer sb = new StringBuffer();
        for (String s : set) {
            sb.append(s);
        }
        g.drawString(sb.toString(), 15, 18);
        g.setColor(Color.orange);

// 随机产生4条直线(干扰线)
        for (int i = 0; i < 4; i++) {
            int x1 = rd.nextInt(80);
            int y1 = rd.nextInt(30);
            int x2 = rd.nextInt(80);
            int y2 = rd.nextInt(30);
            g.drawLine(x1, y1, x2, y2);
        }
        return image;
    }
}

servlet控制端验证:

public class CheckCodeServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
      /*
         * tomcat 的conf/web.xml文件中
         * <extension>jpeg</extension>
         * <mime-type>image/jpeg</mime-type>
         */
        //设置相应类型
        response.setContentType("image/jpeg");
        //打给浏览器
        ImageIO.write(ImageUtil.createImage(), "jpeg",
                response.getOutputStream());
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}

JavaWeb学习记录(五)——Servlet随机产生验证码的更多相关文章

  1. javaweb学习总结(五)——Servlet开发(一)

    一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...

  2. javaweb学习总结(五)——Servlet开发(一)(转)

    转载自 http://www.cnblogs.com/xdp-gacl/p/3760336.html 一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun ...

  3. JavaWeb学习总结-04 Servlet 学习和使用

    一 Servlet 1 Servlet概念 Servlet时运行在服务器端的Java程序. Servlet的框架核心是 javax.servlet.Servlet 接口. 所有自定义的Servlet都 ...

  4. javaweb学习总结(六)——Servlet开发(二)

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

  5. javaweb学习总结(六)——Servlet开发(二)(转)

    转载自 http://www.cnblogs.com/xdp-gacl/p/3763559.html 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文 ...

  6. JavaWeb学习记录(六)——用户登录功能之Session与验证码验证功能的实现

    一.产生验证码的工具类 package blank.util; import java.awt.Color;import java.awt.Graphics;import java.awt.image ...

  7. JavaWeb学习记录总结(二十九)--Servlet\Session\Cookie\Filter实现自动登录和记住密码

    一.Servlet package autologin.servlet.login; import java.io.IOException;import java.security.MessageDi ...

  8. JavaWeb学习记录(八)——servlet获取配置信息

    jdbc.properties内容如下: jdbcUrl=jdbc\:mysql\://localhost\:3306/animaluser=rootpass=root servlet获取资源信息代码 ...

  9. JavaWeb学习记录(十五)——浏览器Cookie禁用后的处理

    IE禁用Cookie方式:

随机推荐

  1. C-crash的方法

    #include <iostream> using namespace std; int main() { #if 0 //devide by 0 ; ; double d = i/j; ...

  2. DB2事务日志已满的解决方法

    DB2命令终端输入: db2 update db cfg for <dbname> using LOGPRIMARY 50 db2 update db cfg for <dbname ...

  3. iOS - CADisplayLink与NSTimer

    一.CADisplayLink简介 CADisplayLink 是一个定时器对象可以让你的应用以与显示器的刷新界面相同的频率进行绘图. 应用如果想要创建 display link ,需要提供一个目标对 ...

  4. c#读取文本文档实践2-计算商品价格

    商品 数量 单价英语 66 100语文 66 80数学 66 100化学 66 40物理 66 60 上面是文本文档中读入的数据. using System; using System.Collect ...

  5. 自定义圆的半径attr.xml

    <?xml version="1.0" encoding="utf-8"?><resources>    <declare-sty ...

  6. [rfc3261]sip - via header

    在很多情况下,sip并非直达目标主机的,而是要经过很多中间节点服务器.在request消息中,via头域表示当前已走过的节点(每经过一个节点,添加一个via头):在response消息中,via头域表 ...

  7. Visual Studio Ultimate 2013 with Update 4

    Visual Studio Ultimate 2013 with Update 4 是一个先进的开发解决方案,各种规模的团队通过它均可设计和创建引人注目的应用程序,使用户兴致勃勃. Visual St ...

  8. Oracle Enterprise Metadata Management (简称OEMM,Oracle元数据管理)12.1.3.0.1已经发布

    在数据处理及数据仓库建设中,元数据管理是必不可少的,OEMM可以解决元数据管理过程中各种关键业务问题和技术挑战,其中包括如何元数据的统计信息,了解变更数据之后对下游的影响范围,而且OEMM站在业务的角 ...

  9. 一个基于atomic的卖票测试

    package testAtomic; import java.util.concurrent.atomic.AtomicInteger; import sun.security.krb5.inter ...

  10. 捕获异常的两种方式Exception

    1.抛出异常:让调用此方法的代码去管 public static void GetFile() throws Exception{} package com.throwable; import jav ...