在web.xml配置:
<servlet>
<servlet-name>image</servlet-name>
<servlet-class>org.test.web.AuthImage</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>image</servlet-name>
<url-pattern>/authImage</url-pattern>
</servlet-mapping>
其servlet源代码:
public class AuthImage extends HttpServlet
{
private static final String CONTENT_TYPE = "text/html; charset=gb2312";
//设置字母的大小,大小
private Font mFont = new Font("Times New Roman", Font.PLAIN, 17);
public void init() throws ServletException
{
super.init();
}
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);
}
public void service(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");
int width=100, height=18;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
Random random = new Random();
g.setColor(getRandColor(200,250));
g.fillRect(1, 1, width-1, height-1);
g.setColor(new Color(102,102,102));
g.drawRect(0, 0, width-1, height-1);
g.setFont(mFont);
g.setColor(getRandColor(160,200));
//画随机线
for (int i=0;i<155;i++)
{
int x = random.nextInt(width - 1);
int y = random.nextInt(height - 1);
int xl = random.nextInt(6) + 1;
int yl = random.nextInt(12) + 1;
g.drawLine(x,y,x + xl,y + yl);
}
//从另一方向画随机线
for (int i = 0;i < 70;i++)
{
int x = random.nextInt(width - 1);
int y = random.nextInt(height - 1);
int xl = random.nextInt(12) + 1;
int yl = random.nextInt(6) + 1;
g.drawLine(x,y,x - xl,y - yl);
}
//生成随机数,并将随机数字转换为字母
String sRand="";
for (int i=0;i<6;i++)
{
int itmp = random.nextInt(26) + 65;
char ctmp = (char)itmp;
sRand += String.valueOf(ctmp);
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
g.drawString(String.valueOf(ctmp),15*i+10,16);
}
HttpSession session = request.getSession(true);
session.setAttribute("rand",sRand);
g.dispose();
ImageIO.write(image, "JPEG", response.getOutputStream());
}
public void destroy()
{
}
}
怎样用:
在页面显示随机图片,可在JSP页面中增加如下代码即可:
<img src="authImage">
转至:http://menjoy.iteye.com
分享到:
相关推荐
本教程主要讲解如何利用Servlet来实现动态生成验证码的功能,这对于防止机器人或恶意自动化程序在网站上进行非法操作至关重要。验证码通常由一串随机字符组成,用户需要正确输入才能完成特定操作,如注册、登录或...
### JSP中利用Servlet生成验证码图片 在Web应用开发中,验证码被广泛应用于用户登录、表单提交等场景,以防止自动化的恶意攻击。本文将详细介绍如何在Java Server Pages (JSP) 和 Servlet 技术的基础上,实现一个...
`index.jsp`文件通常是用户首次请求验证码的页面,它可能包含一个HTML表单,用户可以通过点击按钮触发Servlet生成验证码。表单的ACTION属性应该指向我们的Servlet。 `result.jsp`文件则用于显示验证结果。当用户...
本笔记将详细探讨如何使用Servlet来生成验证码。 一、验证码的原理与作用 验证码的主要目的是区分人类用户和自动化程序,通过要求用户输入图片上的文字或者完成简单的数学问题,来验证其为真实的人类。这有助于防止...
总的来说,使用Servlet生成动态验证码是一项涉及服务器端编程、图像处理和随机数生成的综合任务。熟练掌握这些技术,不仅可以提升Web应用的安全性,也有助于开发者对Java EE体系的深入理解。通过实践和不断的优化,...
3. **响应HTTP请求**:当用户请求验证码时,Servlet接收到请求后,生成验证码并绘制图像,然后将其编码为Base64字符串,通过HTTP响应发送到客户端。客户端可以通过JavaScript动态创建img标签,设置src属性为这个Base...
在本主题“利用jsp生成图片验证码”中,我们将探讨如何在JavaServer Pages (JSP)上下文中创建一个简单的图片验证码,而无需使用Servlet。首先,我们要明白JSP是Java Web开发中的视图层技术,它允许我们在HTML页面中...
接下来,利用`Random`类生成一个随机数,作为要生成的验证码长度。最后,从合并的字符集中随机选取字符,组成验证码。 2. **图像生成**: 使用Java的`java.awt`和`javax.imageio`包创建一个新的空白图像。然后,...
总的来说,"jsp+servlet 生成验证码"是一个典型的前后端交互的例子,它展示了如何利用Java Web技术实现动态的、安全的验证码功能,为Web应用提供了一道基础的安全屏障。对于初学者来说,理解和实现这个过程有助于...
通过servlet生成验证码的小工具类,使用时在web.xml里面配置,页面上引用时利用img标签引用这个servlet就可以实现验证码实例: <img src="checkCode.do" id="img" height="30px"></a> 实现点击图片时更换验证码
在Java Web环境中,我们可以利用Servlet来生成和校验验证码。以下是一个简单的步骤概述: 1. **生成验证码**:首先,我们需要创建一个Servlet来生成验证码。这通常包括以下几个部分: - 生成随机字符串:使用`...
同时,Servlet可能还会利用Java的图形库(如Java2D)来绘制验证码图像,并将其以流形式返回到客户端。 **验证码的实现流程** 1. 用户打开含有验证码的网页,JSP生成初始的随机验证码并显示为图像。 2. 用户如果需要...
2. **Servlet处理**:在Servlet中,接收到这个请求后,重新生成一个验证码并返回新图像的二进制数据。浏览器接收到数据后,会自动更新图像。 四、验证码校验 1. **用户输入**:用户在表单中输入看到的验证码,表单...
1. **存储验证码**:当页面加载时,Servlet生成一个验证码字符串,并将其存储在服务器的会话(session)中,以便后续验证。 2. **响应图像**:当JavaScript请求验证码图像时,Servlet根据存储的字符串生成图像并...
- 可以使用更复杂的算法生成验证码,比如使用字体映射、动态验证码等。 通过以上步骤,我们就实现了一个基于Servlet的简单验证码功能。这个demo不仅展示了Servlet的基本用法,还涵盖了图像处理、HTTP响应以及...
### 如何用Servlet与JSP动态生成图像验证码 在现代Web应用中,为了防止自动化的恶意操作,常常需要实现一种简单而有效的验证机制——验证码。本文将详细介绍如何使用Servlet与JSP技术动态生成图像验证码。 #### 一...
### Servlet生成验证码知识点详解 #### 一、Servlet与验证码简介 - **Servlet**: Servlet是一种Java技术,用于扩展服务器的功能。Servlet被容器(如Tomcat)管理,并且可以生成动态的Web页面。它允许开发人员创建...
利用java开源组件及servlet实现生成验证码
在Java Web开发领域中,经常利用JSP(JavaServer Pages)与Servlet技术来实现验证码功能。本文将详细解析一个具体的JSP Servlet验证码实现案例。 #### 二、核心概念 1. **Servlet**:Servlet是一种基于Java的技术...
本示例中的代码展示了如何通过JSP和Servlet生成一个简单的四位数字验证码。以下是具体的知识点解析: 1. **Servlet基础**: Servlet是Java Web应用程序中的服务器端组件,用于处理HTTP请求并生成响应。`...