现在有不少网站在用户填写表单时,同时要求填写验证码,验证码的一个目的就是防范一些恶意的网站下载软件,这些软件能通过遍历链接而将网站的所有网页下载。还可以防止用户不经过本网站的页面而使用网站的资源。所以现在有不少网站都使用了验证码技术,验证码通常是一个在WEB服务器上生成的随机字符串,同时以某种方式保存起来,比如保存到与当前的Session中,然后在用户提交网页时与用户输入的验证比较是否一致,然而如果直接以明文的方式,还是不能防范一些功能较强的自动填写表格的软件。所以一般将验证码以图片的形式显示出来,同时可以将在图片中显示的字符串进行一些处理,比如使用旋转字符,添加背景纹理等技术以增大被软件识别的难度。下面简要介绍一下如果实现这种验证码:
首先实现一个servlet用来生成图片(当然也可以用jsp实现):
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import com.sun.image.codec.jpeg.*;
import java.awt.*;
import com.sun.image.codec.jpeg.*;
import java.awt.image.BufferedImage;
import java.awt.image.DataBuffer;
import java.awt.geom.GeneralPath;
import javax.swing.*;
import java.math.*;
public class Servlet1
extends HttpServlet {
//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType(CONTENT_TYPE);
response.setContentType("image/jpeg"); //必须设置ContentType为image/jpeg
int length = 4; //设置默认生成4个数字
Date d = new Date();
long lseed = d.getTime();
java.util.Random r = new Random(lseed); //设置随机种子
if (request.getParameter("length") != null) {
try {
length = Integer.parseInt(request.getParameter("length"));
}
catch (NumberFormatException e) {
}
}
StringBuffer str = new StringBuffer();
for (int i = 0; i <length; i++) {
str.append(r.nextInt(9)); //生成随机数字
}
//可以在此加入保存验证码的代码
//创建内存图像
BufferedImage bi = new BufferedImage(40, 16, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bi.createGraphics();
g.clearRect(0, 0, 16, 40);
g.setColor(Color.green.CYAN);
g.drawString(str.toString(), 4, 12);
try {
//使用JPEG编码,输出到response的输出流
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.
getOutputStream());
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
param.setQuality(1.0f, false);
encoder.setJPEGEncodeParam(param);
encoder.encode(bi);
}
catch (Exception ex) {
}
}
} |
然后在需求显示验证码的加入以下代码就可以了
<img alt="" src="/WebModule1/servlet1" width="40" height="16"/> |
将/WebModule1/servlet1替换成你用来生成验证码的servlet的全路径。
分享到:
相关推荐
### 如何用Servlet与JSP动态生成图像验证码 在现代Web应用中,为了防止自动化的恶意操作,常常需要实现一种简单而有效的验证机制——验证码。本文将详细介绍如何使用Servlet与JSP技术动态生成图像验证码。 #### 一...
- 如果使用的是特定版本的Tomcat,如Tomcat 7,而在开发工具(如MyEclipse)中默认支持的版本不匹配,则需要手动配置对应的Jar包以确保兼容性。 #### 二、示例代码分析 - **编写第一个Servlet**:在上述示例代码...
Servlet和JSP是Java Web开发中的核心技术,用于构建动态web应用程序。Servlet是Java编写服务器端程序,处理HTTP请求,而JSP(Java Server Pages)则是将HTML、CSS、JavaScript与Java代码结合,方便在页面上生成动态...
在这个"ServletJSP的使用2"的练习中,我们将深入探讨这两者的核心概念、工作原理以及如何在实际项目中应用。 1. **Servlet基本概念** Servlet是Java服务器端程序,它可以接收并响应来自客户端(如浏览器)的请求。...
在这个"SERVLETJSP25JSP使用javabean"的资源中,我们将会探讨如何在JSP中有效地利用JavaBean来增强应用的可维护性和复用性。 首先,理解Servlet和JSP的基础概念是必要的。Servlet是Java编写的服务器端程序,它扩展...
### servletJSP开发环境配置详解 #### 一、概述 本文档主要介绍如何配置servlet与JSP开发环境,特别是采用Eclipse 3.3、Tomcat 6.0.18以及Lomboz 3.3搭建开发环境的具体步骤。servlet与JSP是Java Web开发中的两个...
而JSP(JavaServer Pages)是一种动态网页技术,允许在页面上嵌入Java代码,实现动态内容的生成。 【描述】"demo with JSP and Servlet" 暗示这是一个教学或实验性质的项目,展示了如何在实际应用中整合Servlet和...
"MVC架构下的ServletJSP在电子商务网站开发中的研究" MVC架构是软件设计模式的一种,主要用于分离应用程序的数据访问、用户界面和业务逻辑,以提高代码的可维护性和可重用性。MVC架构包括三个组件:模型(Model)、...
09_SERVLETJSP01_达内
10_SERVLETJSP02_达内
- 实现细节:编写一个JSP页面,使用脚本代码生成动态内容。 - **Exercise5:Calling JSP Pages from a Servlet** - 目标:掌握如何从Servlet中调用JSP页面。 - 实现细节:在Servlet中使用`RequestDispatcher`...
- JSP(JavaServer Pages)虽然最终被编译成Servlet,但它的主要功能是在服务器端生成动态内容。 - Servlet 是纯Java类,运行在服务器端,负责处理请求和生成响应。 - Applet 是早期Java技术,用于在浏览器中运行...
图片验证码 用户头像上传 2.高级功能表 功能名称 用户注册邮件激活 用户密码找回 发表微博字数限制 发表微博使用表情 发表微博使用图片 发表微博使用视频 发表微博使用音乐 发表微博使用话题 发表微博...
基于ServletJSP的部门管理系统 项目简介 本项目是一个基于Servlet和JSP技术的部门管理系统,主要用于管理企业内部的部门信息。系统通过Servlet处理HTTP请求,JSP页面展示数据,结合JSTL标签库和Listener监听器...
Servlet是Java语言编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。JSP(JavaServer Pages)是一种特殊的Servlet,它允许开发者将Java代码嵌入到HTML页面中。 在Tomcat中,Servlet和JSP...
Servlet 和 JSP(JavaServer Pages)是 Java 用于构建动态 Web 应用程序的重要技术。这个压缩包包含了一系列与Servlet和JSP相关的课件,涵盖了从基础概念到高级特性的多个方面。 首先,"servletConfig.doc"可能涉及...
结合"用mysql数据库"的描述,我们可以推断该项目使用MySQL作为其后端数据存储解决方案。MySQL是一个流行的关系型数据库管理系统,以其高性能、易用性和开源特性而受到广泛应用。 总结来说,这个项目展示了如何使用...
Servlet和JSP(JavaServer Pages)是Java Web开发中的核心技术,它们在构建动态网页和Web应用程序方面发挥着关键作用。本篇文章将详细阐述Servlet和JSP的特性、工作原理以及如何将两者结合使用来实现高效的网站开发...
Servlet与JSP(Java Server Pages)作为Java Web开发的重要组成部分,为创建动态网页提供了强大的支持。本文旨在深入浅出地介绍Servlet与JSP的基本概念、工作原理及应用场景,特别适合于初学者学习。 #### Servlet...