package com.mweb.user.servlet;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 生成图形验证码的Servlet
*/
public class ImageCodeMakerServlet extends HttpServlet
{
@Override
public void init(ServletConfig config) throws ServletException
{
// TODO Auto-generated method stub
super.init(config);
}
/**
*
*/
private static final long serialVersionUID = -8924942016876830055L;
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
doPost(req, resp);
}
/**
* @see javax.servlet.http.HttpServlet#void
* (javax.servlet.http.HttpServletRequest,
* javax.servlet.http.HttpServletResponse)
*/
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
// 首先设置页面不缓存
resp.setHeader("Pragma", "No-cache");
resp.setHeader("Cache-Control", "no-cache");
resp.setDateHeader("Expires", 0);
// 定义图片的宽度和高度
int width = 90, height = 40;
// 创建一个图像对象
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
// 得到图像的环境对象
Graphics g = image.createGraphics();
Random random = new Random();
// 用随机颜色填充图像背景
g.setColor(getRandColor(180, 250));
g.fillRect(0, 0, width, height);
for (int i = 0; i < 5; i++)
{
g.setColor(getRandColor(50, 100));
int x = random.nextInt(width);
int y = random.nextInt(height);
g.drawOval(x, y, 4, 4);
}
// 设置字体,下面准备画随机数
g.setFont(new Font("", Font.PLAIN, 40));
// 随机数字符串
String sRand = "";
for (int i = 0; i < 4; i++)
{
// 生成四个数字字符
String rand = String.valueOf(random.nextInt(10));
sRand += rand;
// 生成随机颜色
g.setColor(new Color(20 + random.nextInt(80), 20 + random
.nextInt(100), 20 + random.nextInt(90)));
// 将随机数字画在图像上
g.drawString(rand, (17 + random.nextInt(3)) * i + 8, 34);
// 生成干扰线
for (int k = 0; k < 12; k++)
{
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(9);
int yl = random.nextInt(9);
g.drawLine(x, y, x + xl, y + yl);
}
}
// 将生成的随机数字字符串写入Session
req.getSession().setAttribute("randcode", sRand);
// 使图像生效
g.dispose();
// 输出图像到页面
ImageIO.write(image, "JPEG", resp.getOutputStream());
}
/**
* 产生一个随机的颜色
*
* @param fc
* 颜色分量最小值
* @param bc
* 颜色分量最大值
* @return
*/
public Color getRandColor(int fc, int bc)
{
Random random = new Random();
if (fc > 255)
{
fc = 255;
}
if (bc > 255)
{
bc = 255;
}
int r = fc + random.nextInt(bc - fc);
int g = fc + random.nextInt(bc - fc);
int b = fc + random.nextInt(bc - fc);
return new Color(r, g, b);
}
}
分享到:
相关推荐
Servlet随即产生验证码,在页面显示。通过Servlet验证。简单实用。
使用jsp/java-ee编程,页面提交后处理的servlet产生页面验证码。表单页面产生验证码。只有servlet文件。
servlet 验证码用于注册时自动产生验证码
所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。
生成验证码的源代码。由servlet生成验证码和...能够产生验证码但是如何传输和验证呢,一般是传回服务器在action里做验证。 我还是喜欢js页面产生验证码,因为简单,虽然效果差了点。所以也附带了个js生成验证码的例子。
java 产生随机验证码,两种方式,servlet和jsp. 带刷新按钮,点击可自动刷新验证码。
两种javaweb验证码产生方法。包含源码和产生页面。源码请自建servlet后粘贴后即可页面显示出。
java 产生随机验证码,servlet实现 点击图片可自动刷新验证码。 支持字母(可分大小写),数字
Java产生简单算术验证码图片,此为Servlet需要配置web.xml,配置方法如下: <servlet> <servlet-name>authimg</servlet-name> <servlet-class>img.AuthImg</servlet-class> </servlet> <servlet-mapping> ...
3、编写一个servlet,在servlet中产生图形验证码 ------------------------------------------------------------ //1、给客户端作出的回应是以图片的方式来回应 response.setContentType("image/jpeg"); ...
一个在登陆的时候产生验证码的类,可以根据需要转换成自己的action servlet 等 调用的部分可以用一个img 标签关联一个超连接就ok 了
定义图片的width、定义图片的height、定义图片上显示验证码的个数 创建字体,字体的大小应该根据图片的高度来定 ...随机产生的颜色将验证码绘制到图像中 四位数字的验证码保存到Session中 将图像输出到Servlet输出流中
随机生成验证码(JSP、Servlet)
jsp+servlet实现的OCR识别系统简单功能,输入手机号产生验证码 登陆后上传图片,支持中文文件名图片的上传
5.1 servlet与servlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 tomcat的安装与配置 184 5.5.1 安装tomcat 185 5.5.2 运行tomcat 186 5.5.3 tomcat启动...
5.1 servlet与servlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 tomcat的安装与配置 184 5.5.1 安装tomcat 185 5.5.2 运行tomcat 186 5.5.3 tomcat启动...
5.1 servlet与servlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 tomcat的安装与配置 184 5.5.1 安装tomcat 185 5.5.2 运行tomcat 186 5.5.3 tomcat启动...
5.1 servlet与servlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 tomcat的安装与配置 184 5.5.1 安装tomcat 185 5.5.2 运行tomcat 186 5.5.3 tomcat启动...
因为该项目的客户端是仿的,所以产生什么问题概不负责,如有雷同,请联系我删除资源 这是一个客户端+管理员后台的项目,注册使用到了ajax异步请求,注册的时候有验证码检验用户是否为机器人,管理员页面实现了分页...
课程设计:用户需要使用新闻管理功能时,需要先以管理员身份登录系统。...用户在登录页面输入用户名和密码以及随机产生的验证码,若登录失败,则清空输入,并简要显示错误原因,管理员登录页面等待下一次登录。