package com.hanfeng.test;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class ImageServlet extends HttpServlet {
// 验证码图片的宽度。
private int width=60;
//验证码图片的高度。
private int height=20;
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, java.io.IOException
{
BufferedImage buffimg=new BufferedImage(width,height,
BufferedImage.TYPE_INT_RGB);
Graphics2D g=buffimg.createGraphics();
//创建一个随机数生成器类。
Random random=new Random();
g.setColor(Color.white);
g.fillRect(0,0,width,height);
//创建字体,字体的大小应该根据图片的高度来定。
Font font=new Font("times new roman",Font.PLAIN,18);
//设置字体。
g.setFont(font);
//画边框。
g.setColor(Color.black);
g.drawRect(0,0,width-1,height-1);
//随机产生160条干扰线,使图象中的认证码不易被其它程序探测到。
g.setColor(Color.gray);
for (int i=0;i<10;i++)
{
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x,y,x+xl,y+yl);
}
//randomcode用于保存随机产生的验证码,以便用户登录后进行验证。
StringBuffer randomcode=new StringBuffer();
int red=0,green=0,blue=0;
//随机产生4位数字的验证码。
for (int i=0;i<4;i++)
{
//得到随机产生的验证码数字。
String strrand=String.valueOf(random.nextInt(10));
//产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。
red=random.nextInt(200);
green=random.nextInt(200);
blue=random.nextInt(200);
//产生随机高度 13至height之间
float imght = 0;
while(imght<=12){
imght = Float.parseFloat(String.valueOf(random.nextInt(height)));
}
//用随机产生的颜色将验证码绘制到图像中。
g.setColor(new Color(red,green,blue));
g.drawString(strrand,13*i+6,imght);
//将产生的四个随机数组合在一起。
randomcode.append(strrand);
}
//将四位数字的验证码保存到session中。
HttpSession session=req.getSession();
session.setAttribute("VerifyCode",randomcode.toString());
//禁止图像缓存。
resp.setHeader("pragma","no-cache");
resp.setHeader("cache-control","no-cache");
resp.setDateHeader("expires", 0);
resp.setContentType("image/jpeg");
//将图像输出到servlet输出流中。
ServletOutputStream sos=resp.getOutputStream();
ImageIO.write(buffimg, "jpeg",sos);
sos.close();
}
}
分享到:
相关推荐
jsp验证码实现源代码,用jsp做注册验证码
【JSP验证码实现详解】 验证码(CAPTCHA)是一种防止机器自动操作的安全机制,它通过让用户输入图片或音频中显示的随机字符来验证用户是否为真实的人。在JSP(JavaServer Pages)中实现验证码,我们可以利用Java的...
以上就是JSP验证码实现的基本原理和流程。在实际开发中,我们还需要考虑一些额外的因素,比如用户体验、安全性以及如何适应不同设备和浏览器。这个压缩包中的"JSP验证码"源代码应该包含了实现上述步骤的具体Java和...
在本案例中,"jsp验证码实现源码"是一个用于用户输入页面防止重复提交的解决方案。 验证码的基本工作原理是生成一个随机字符串或图像,然后要求用户在提交表单之前正确输入这个字符串或识别出图像中的内容。这样,...
这个压缩包"5种JSP验证码的源代码.rar"提供的是五种不同的JSP验证码实现方式。下面我们将详细探讨这五种验证码的实现原理和关键知识点。 1. 图片验证码: 这是最常见的验证码类型,通过生成随机字符串并将其绘制到...
在本教程中,我们将探讨如何使用Java Server Pages (JSP)来实现一个简单的验证码功能,同时解决可能出现的`getOutStream()`相关问题。 首先,验证码的目的是确保用户是真实的,而不是自动化程序。它通常要求用户...
### JSP验证码实现 在JSP中,我们可以创建一个Servlet来生成随机的图片验证码。这个Servlet的主要任务是生成一个不可预测的字符串,并将其渲染为图像。以下是一个简单的步骤: 1. **生成随机字符串**:通常包含...
##### JSP 验证码实现原理与过程 在本文档中,我们关注一个基于JavaServer Pages (JSP) 的数字验证码生成示例。此示例主要涉及到JSP页面的配置、Java图形处理库的使用以及HTTP会话管理。 ##### 页面配置与编码设置...
6. **前端技术**:虽然主要讨论的是后端的JSP验证码实现,但前端HTML和JavaScript也需要配合,以接收和显示验证码图像,以及处理用户输入的验证码。 7. **性能优化**:大量用户同时访问时,要考虑验证码生成和验证...
2. **JSP验证码实现步骤** - **生成随机字符串**:首先,我们需要一个函数生成一个随机的字符串,通常包含字母和数字,长度可自定义。 - **图像处理**:将生成的字符串转换为图像,可以使用Java的`java.awt`和`...
这就是一个简单的JSP验证码实现。它虽然基础,但已经能够满足一般的小型项目需求。当然,对于安全性要求更高的场景,如防止机器人的大量请求,可能需要使用更复杂的验证码,如滑动验证码、拼图验证码或基于AI的图像...
在JSP验证码实现中,Model负责生成和验证验证码,View是显示验证码的JSP页面,而Controller可以是Servlet,它接收用户的请求,处理验证码验证,并控制页面跳转。 在`JspStudyEx9`这个压缩包文件中,可能包含了以下...
过分过分过分个自从用ASP来编写网站,就无时无刻想找一种兼容性强,使用方便的上传方法,用过很多的无 组件上传方法,但是都存在使用不方便,兼容性差,速度慢等的问题。终于在2003年的元旦里,想 ...
以下是关于JSP验证码实现及相关知识点的详细解释: 1. **JSP(JavaServer Pages)**:JSP是Java平台上的动态网页技术,允许开发者将HTML、CSS、JavaScript与Java代码混合编写,服务器端执行Java代码并返回结果到...
实验五主要涵盖了AJAX技术的运用以及JSP验证码的开发,这两个知识点对于前端开发者来说是至关重要的。AJAX,即Asynchronous JavaScript and XML(异步JavaScript和XML),它允许网页在不重新加载整个页面的情况下与...
在Java服务器页面(JSP)中实现数字验证码,可以确保用户是真实的个体而非程序。以下是一个简单的JSP数字验证码的实现方法: 首先,我们来看一下JSP的基本结构。`@%>` 和 `是JSP中的脚本元素,它们分别用于执行Java...
本篇文章将深入探讨5种常见的JSP验证码实现方式,以及它们的源代码分析。 ### 1. 图片验证码 图片验证码是最常见的类型,它通过生成随机字符或数字,并以图像形式显示。用户需要输入看到的字符,以证明他们是人类而...