打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Servlet中实现数字英文混合验证码(2)
makeCertPic.java

package cn.cpou.core.vo;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;

import javax.imageio.ImageIO;

import com.opensymphony.xwork2.inject.Context;

public class makeCertPic {
//验证码图片中可以出现的字符集,可根据需要修改
    private char mapTable[]={
       'a','b','c','d','e','f',
       'g','h','i','j','k','l',
       'm','n','o','p','q','r',
       's','t','u','v','w','x',
       'y','z','0','1','2','3',
       '4','5','6','7','8','9'};
    /**
    * 功能:生成彩色验证码图片
    * 参数width为生成图片的宽度,参数height为生成图片的高度,参数os为页面的输出流
    */
   public String getCertPic(int width, int height, OutputStream os) {
   if(width<=0)width=60;
   if(height<=0)height=20; 
   BufferedImage image = new BufferedImage(width, height, 
      BufferedImage.TYPE_INT_RGB); 
   // 获取图形上下文 
   Graphics g = image.getGraphics(); 
   // 设定背景色 
   g.setColor(new Color(0xDCDCDC)); 
   g.fillRect(0, 0, width, height); 
   //画边框 
   g.setColor(Color.black); 
   g.drawRect(0,0,width-1,height-1); 
   // 取随机产生的认证码
   String strEnsure = "";
   // 4代表4位验证码,如果要生成更多位的认证码,则加大数值
   for(int i=0; i<4; ++i) {
strEnsure+=mapTable[(int)(mapTable.length*Math.random())];
   }  
   //   将认证码显示到图像中,如果要生成更多位的认证码,增加drawString语句
   g.setColor(Color.black); 
   g.setFont(new Font("Atlantic Inline",Font.PLAIN,18)); 
   String str = strEnsure.substring(0,1); 
   g.drawString(str,8,17); 
   str = strEnsure.substring(1,2); 
   g.drawString(str,20,15); 
   str = strEnsure.substring(2,3); 
   g.drawString(str,35,18);   
   str = strEnsure.substring(3,4); 
   g.drawString(str,45,15); 
   // 随机产生10个干扰点
   Random rand = new Random();
   for (int i=0;i<10;i++) { 
    int x = rand.nextInt(width); 
    int y = rand.nextInt(height); 
    g.drawOval(x,y,1,1); 
   } 
   // 释放图形上下文
   g.dispose();   
   try {
    // 输出图像到页面 
    ImageIO.write(image, "JPEG", os);
   } catch (IOException e) {
    return "";
   }  
   return strEnsure;
   }
 public static void main(String[] args) throws FileNotFoundException{
makeCertPic c=new makeCertPic();
 }

}

makeCertPic.jsp
 <%@page language="java" contentType="image/jpeg" import="java.util.*" pageEncoding="utf-8"%>
  <jsp:useBean id="image" scope="page" class="cn.cpou.core.vo.makeCertPic" />
<html>
<head>

</head>
<body>
<%
 String str=image.getCertPic(0, 0, response.getOutputStream());
 session.setAttribute("certCode", str);
 out.clear();
 out=pageContext.pushBody();
 %>
  
</body>
</html>

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
java 汉字转图形处理
《JSP生成验证码源程序》
servlet生产唯一图片验证码
更新之后出现The import java.io cannot be resolved错误
java socket 实现服务端与客户端
使用java实现在文件中添加字符串
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服