servlet

package com.htpo.net;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class testget extends HttpServlet {

/**
     * Constructor of the object.
     */
    public testget() {
        super();
    }

public static final char[] CHARS = { '2', '3', '4', '5', '6', '7', '8',
            '9', '0', 'A', 'Q', 'W', 'E', 'R', 'T', 'G', 'D', 'S', 'W', 'G',
            'H' };// 随机字符的字典
    public static Random random = new Random();// 随机数

public static String getRandomString() {
        // 字符的缓存
        StringBuffer buf = new StringBuffer();
        for (int i = 0; i < 6; i++) {// 循环 六次
            buf.append(CHARS[random.nextInt(CHARS.length)]);
        }
        return buf.toString();
    }

public static Color getRandomColor() {
        return new Color(random.nextInt(255), random.nextInt(255),
                random.nextInt(255));
    }

public static Color getReverseColor(Color c) {
        return new Color(255 - c.getRed(), 255 - c.getGreen(),
                255 - c.getBlue());
    }

/**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }

/**
     * The doGet method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to get.
     *
     * @param request
     *            the request send by the client to the server
     * @param response
     *            the response send by the server to the client
     * @throws ServletException
     *             if an error occurred
     * @throws IOException
     *             if an error occurred
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

/*
         * response.setContentType("text/html"); String re =
         * request.getParameter("username"); System.out.println(re); PrintWriter
         * out = response.getWriter();
         *
         * // response.sendRedirect("test.jsp"); // String s =
         * "[{ id:1, pId:0, name:"pNode
         * 1", open:true},{ id:11, pId:1, name:"pNode
         * 11"},{ id:111, pId:11, name:"leaf node
         * 111"},{ id:112, pId:11, name:"leaf node
         * 112"},{ id:113, pId:11, name:"leaf node
         * 113"},{ id:114, pId:11, name:"leaf node
         * 114"},{ id:12, pId:1, name:"pNode 12"},{ id:121, pId:12, name:"leaf
         * node 121"},{ id:122, pId:12, name:"leaf node
         * 122"},{ id:123, pId:12, name:"leaf node
         * 123"},{ id:124, pId:12, name:"leaf node
         * 124"},{ id:13, pId:1, name:"pNode 13 - no
         * child", isParent:true},{ id:2, pId:0, name:"pNode
         * 2"},{ id:21, pId:2, name:"pNode
         * 21", open:true},{ id:211, pId:21, name:"leaf node
         * 211"},{ id:212, pId:21, name:"leaf node
         * 212"},{ id:213, pId:21, name:"leaf node
         * 213"},{ id:214, pId:21, name:"leaf node
         * 214"},{ id:22, pId:2, name:"pNode 22"},{ id:221, pId:22, name:"leaf
         * node 221"},{ id:222, pId:22, name:"leaf node
         * 222"},{ id:223, pId:22, name:"leaf node
         * 223"},{ id:224, pId:22, name:"leaf node
         * 224"},{ id:23, pId:2, name:"pNode 23"},{ id:231, pId:23, name:"leaf
         * node 231"},{ id:232, pId:23, name:"leaf node
         * 232"},{ id:233, pId:23, name:"leaf node
         * 233"},{ id:234, pId:23, name:"leaf node
         * 234"},{ id:3, pId:0, name:"pNode 3 - no child", isParent:true}]";
         * out.write(s);
         *
         * out.println(
         * "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
         * out.println("<HTML>");
         * out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
         * out.println("  <BODY>"); out.print("    This is ");
         * out.print(this.getClass()); out.println(", using the GET method");
         * out.println("  </BODY>"); out.println("</HTML>");
         *
         * out.flush(); out.close();
         */
        String s = request.getParameter("username");
        System.out.println(s);
        response.setContentType("image/jpeg");// 设置输出的类型
        String randomString = getRandomString();// 得到返回的字符集
        request.getSession(true).setAttribute("randomString", randomString);
        int with = 100;
        int hight = 30;// 生成图片的大小
        Color color = getRandomColor();// 用于背景色
        Color reverse = getReverseColor(color);// 用于前景色
        BufferedImage bi = new BufferedImage(with, hight,
                BufferedImage.TYPE_INT_RGB);// 创建一个彩色的图片
        Graphics2D g = bi.createGraphics();// 获取到绘图对象
        g.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 16));// 设置字体
        g.setColor(color);// 设置颜色
        g.fillRect(0, 0, with, hight);// 绘制背景
        g.setColor(reverse);// 设置颜色
        g.drawString(randomString, 18, 20);// 绘制随机字符
        for (int i = 0, n = random.nextInt(100); i < n; i++) {// 画最多100个噪音点
            g.drawRect(random.nextInt(with), random.nextInt(hight), 1, 1);// 随机噪音点
        }
        ServletOutputStream out = response.getOutputStream();
        // 转换图片格式
        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
        encoder.encode(bi);// 对图片进行编码
        out.flush();// 输出
    }

/**
     * The doPost method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to
     * post.
     *
     * @param request
     *            the request send by the client to the server
     * @param response
     *            the response send by the server to the client
     * @throws ServletException
     *             if an error occurred
     * @throws IOException
     *             if an error occurred
     */

/**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException
     *             if an error occurs
     */
    public void init() throws ServletException {
        // Put your code here
    }

}
---------------------------------------

jsp

function reloadImage(){
            document.getElementByIdx_x_x("btn").disabled=false;
            document.getElementByIdx_x_x("Identity").src='testget?ts='+new Date().getTime();
            
         }
         
         function yanzheng() {
         
            
        }
         
    </script>

<img src="testget" id="Identity" />
   <input type="button" id="btn" value="换个图片" onclick="reloadImage()"/>

servlet 验证码生成的更多相关文章

  1. servlet中生成验证码

    在servlet中生成验证码 package login; import java.awt.Color; import java.awt.Graphics; import java.awt.image ...

  2. Web---图片验证码生成教程详解-从简单到复杂-从本地到前后台

    首先,我们先来看本地如何生成图片验证码的,再来写输出到网页的验证码如何实现. 先来看最简单的-实现的功能是,将一个字符串变成图片写入到文件中 实现代码: package cn.hncu.img; im ...

  3. 利用谷歌 kaptcha 进行验证码生成

    package main.com.smart.controller; import com.google.code.kaptcha.Producer; import main.com.smart.ut ...

  4. 轻量级验证码生成插件webutil-licenseImage

    轻量级验证码生成插件webutil-licenseImage源码与实例应用   webutil-licenseImage 插件内置4种验证码样式,支持用户扩展.自定义样式实现简单验证码. 源码脱管地址 ...

  5. JAVA 验证码生成(转)

    最近做了一下验证码的功能,网上找了一篇还不错,引用下:http://blog.csdn.net/ruixue0117/article/details/22829557 这篇文章非常好,但是web和js ...

  6. Web后端 JAVA实现验证码生成与验证功能

    首先,写一个验证码生成帮助类,用来绘制随机字母: <span style="font-size:14px;">import java.awt.Color;  impor ...

  7. java web中验证码生成的demo

    首先创建一个CaptailCode类 package com.xiaoqiang.code; import java.awt.*; import java.awt.font.FontRenderCon ...

  8. JavaWeb开发之普通图片验证码生成技术与算术表达式验证码生成技术

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6134649.html    另:算术验证码生成的JSP.Servlet实现均已移植github:https:/ ...

  9. 轻量级验证码生成插件webutil-licenseImage源码与实例应用

    webutil-licenseImage 插件内置4种验证码样式,支持用户扩展.自定义样式实现简单验证码. 源码脱管地址: http://code.google.com/p/licenseimage/ ...

随机推荐

  1. Android 支付密码输入框,自定义EditText实现密码输入框功能;

    刚撸出来的密码输入框,注释和逻辑看着挺清晰的,一些属性还没有添加,下个博客把属性添加上去: 看一下图: 直接看代码吧! import android.content.Context; import a ...

  2. Solr Date类型的哪些你不得不了解的细节

    我们先来看看Solr日期类型的一些内幕,然后讨论一下Solr日期类型存在的一些问题,最后我们看看怎么解决现存的问题.概述 DateField 在Solr4.x之前,我们只有DateField,这类型现 ...

  3. POJ2311 Cutting Game 博弈 SG函数

    Cutting Game Description Urej loves to play various types of dull games. He usually asks other peopl ...

  4. 微信小程序自定义微信客服按钮

    微信小程序官方api中提到的微信客服,是一个固定的组件,图标样式固定,大小最多27px 很明显这个是不能满足我们各种奇葩需求的.下面提供一个野蛮的自定义方法. 比如做一个这样的按钮: 图标用自定义的, ...

  5. 使用Eclipse编译运行MapReduce程序 Hadoop2.6.0_Ubuntu/CentOS

    使用Eclipse编译运行MapReduce程序 Hadoop2.6.0_Ubuntu/CentOS  2014-10-10 (updated: 2016-05-22) 64246 153 本教程介绍 ...

  6. linux问题集

    Too many authentication failures for root (code 2) 原因:服务器可能由于装了一下安全软件导致有时用ssh远程工具登陆不了,提示太多认证失败for ro ...

  7. (一)apache atlas源代码编译与打包

    特别注意: atlas已经提供了0.8版本可以安装了,只有在国外的服务器上安装编译才比较顺利,可以按照官方文档去安装. 国内很多网址有被墙的问题,目前还没有完全解决,可能安装不成功 安装文档地址:ht ...

  8. 【转】 C#操作FTP

    代码不要忘记引入命名空间using System.Net;using System.IO;下面的几个步骤包括了使用FtpWebRequest类实现ftp功能的一般过程1.创建一个FtpWebReque ...

  9. Error: 实例 "ddd" 执行所请求操作失败,实例处于错误状态。: 请稍后再试 [错误: Exceeded maximum number of retries. Exhausted all hosts available for retrying build failures for instance 6f60bc06-fcb6-4758-a46f-22120ca35a71.].

    Error: 实例 "ddd" 执行所请求操作失败,实例处于错误状态.: 请稍后再试 [错误: Exceeded maximum number of retries. Exhaus ...

  10. <转载> js 闭包

    http://www.haorooms.com/post/js_bbtwo http://www.jb51.net/article/24101.htm http://www.cnblogs.com/f ...