⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 validatecodeservlet.java

📁 一个基于java工厂模式的 的实现
💻 JAVA
字号:

package com.ebuy.web.servlets;
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;

import java.awt.*;
import java.awt.image.*;
import javax.imageio.ImageIO;
import java.util.*;
/**
 *
 * @author Administrator
 * @version
 */

public class ValidateCodeServlet extends HttpServlet
{
    private static int WIDTH=80;
    private static int HEIGHT=30;
    private static String SEAD="1234567890";
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        //设置浏览器不要缓存
        response.setHeader("Pragma","No-cache");
        response.setHeader("Cache-Control","no-cache");
        response.setDateHeader("Expires", 0);
        //设置发送到客户端的数据格式
        response.setContentType("image/jpeg");
        //创建一个Image对象
        java.awt.image.BufferedImage img=new java.awt.image.BufferedImage(WIDTH,HEIGHT,java.awt.image.BufferedImage.TYPE_INT_RGB);
        //获取画笔
        java.awt.Graphics g=img.getGraphics();
        //设置画笔颜色
        g.setColor(Color.WHITE);
        //画一个白色矩形
        g.fillRect(0,0,WIDTH,HEIGHT);
        int red,green,blue;
        //画500个点
        for (int i=0;i<500;i++)
        {
            //产生随机器颜色
            red=new java.util.Random().nextInt(255);
            green=new Random().nextInt(255);
            blue=new Random().nextInt(255);
            //设置颜色
            g.setColor(new Color(red,green,blue));
            int x = new Random().nextInt(WIDTH-1);
            int y = new Random().nextInt(HEIGHT-1);
            //画一条线(线的起点和终点相同,实际上就是一个点)
            g.drawLine(x,y,x,y);
        }
        //获取验证码
        char[] code=this.getCode(4);
        //设置画笔的颜色和字体
        g.setColor(Color.BLACK);
        g.setFont(new Font("Times New Roman",Font.ITALIC,26));
        //画4个字符
        g.drawString(String.valueOf(code[0]),10,21);
        g.drawString(String.valueOf(code[1]),24,22);
        g.drawString(String.valueOf(code[2]),38,21);
        g.drawString(String.valueOf(code[3]),52,22);
        //销毁画笔
        g.dispose();
        
        //把验证吗保存在session中
        request.getSession().setAttribute("code",String.valueOf(code));
        //内存写入流
        java.io.ByteArrayOutputStream bos=new java.io.ByteArrayOutputStream();
        //把图片数据保存到内存流
        javax.imageio.ImageIO.write(img,"JPEG",bos);
        //获取图片数据
        byte[] b=bos.toByteArray();
        //设置应答数据的长度
        response.setContentLength(b.length);
        javax.servlet.ServletOutputStream sos=response.getOutputStream();
        //把数据写入应答流水
        sos.write(b);
        
        bos.close();
        sos.close();
    }
    private char[] getCode(int count)
    {
        int length=SEAD.length();
        char[] code=new char[count];
        for(int i=0;i<count;i++)
        {
            java.util.Random rand=new java.util.Random();
            int k=rand.nextInt(length);
            code[i]=SEAD.charAt(k);
        }
        return code;
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        processRequest(request, response);        
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        processRequest(request, response);
    }
    public String getServletInfo()
    {
        return "Short description";
    }
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -