servlet 验证码生成

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()"/>

时间: 2024-10-11 12:33:59

servlet 验证码生成的相关文章

servlet中生成验证码

在servlet中生成验证码 package login; import java.awt.Color; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import java.util.Random; import javax.servlet.Ser

GOOGLE kaptcha 验证码生成插件 servlet/jsp项目中使用步骤

步骤一: 在项目中添加kaptchar的jar包,下载地址:http://code.google.com/p/kaptcha/(建议使用迅雷下载) 步骤二: 配置web.xml,详细配置如下(这里不是所有的配置,这里的参数还有很多可以酌情精简): <!-- 配置验证码插件servlet类 --> <servlet> <servlet-name>kaptcha</servlet-name> <servlet-class> com.google.co

JSP+Servlet实现验证码生成

主要利用JSP+Servlet实现验证码生成 利用JQuery的ajax技术实现异步更换图片地址 BufferedImage实现验证码图片的生成 Servlet代码: package Register; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOEx

java web验证码生成总结(包括servlet、jsp和struts2实现)(转)

一.使用纯Servlet实现验证码 (1)在web.xml配置: [java] view plaincopy <servlet> <servlet-name>image</servlet-name> <servlet-class>org.test.web.AuthImage</servlet-class> </servlet> <servlet-mapping> <servlet-name>image</

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

1 package main.com.smart.controller; 2 3 import com.google.code.kaptcha.Producer; 4 import main.com.smart.utils.CaptchaProducer; 5 import main.com.smart.utils.RedisClient; 6 import org.apache.log4j.Logger; 7 import org.apache.log4j.spi.LoggerFactory;

Jsp+servlet 验证码案例

昨晚在csdn看到一位前辈写一个ajax+servlet+jsp验证.顿时心血来潮,在阅读前辈的代码下我亲手体验一下,做了一个验证码生成工具类.以供大家做个參考. 1:加入VeriyCodeUtils类生成验证码图像 package com.servlet; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import jav

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

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

随机验证码生成代码 (转)

随机验证码生成代码 package com.zuidaima.core.util; import java.util.Random; public class RandomUtil { public static final String ALLCHAR = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; public static final String LETTERCHAR = "abc

验证码生成代码范例

在网站的登陆和注册的时候,经常会用到验证码来防止别人用机械暴力注册或登陆,加上验证码这样一定程度上让网站安全很多,下面是一个比较简单的验证码生成,同时给session赋值. <?php session_start(); header(“Content-type: image/png”); http://www.douban.com/note/452296816/ //创建真彩色白纸 $im = @imagecreatetruecolor(50, 20) or die(“建立图像失败”); //获