`
qqqckm
  • 浏览: 11933 次
  • 来自: ...
社区版块
存档分类
最新评论

用ServletJSP动态生成图像验证码(转载)

    博客分类:
  • Java
阅读更多
 现在有不少网站在用户填写表单时,同时要求填写验证码,验证码的一个目的就是防范一些恶意的网站下载软件,这些软件能通过遍历链接而将网站的所有网页下载。还可以防止用户不经过本网站的页面而使用网站的资源。所以现在有不少网站都使用了验证码技术,验证码通常是一个在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的全路径。

分享到:
评论

相关推荐

    如何用ServletJSP动态生成图像验证码

    ### 如何用Servlet与JSP动态生成图像验证码 在现代Web应用中,为了防止自动化的恶意操作,常常需要实现一种简单而有效的验证机制——验证码。本文将详细介绍如何使用Servlet与JSP技术动态生成图像验证码。 #### 一...

    servletjsp

    - 如果使用的是特定版本的Tomcat,如Tomcat 7,而在开发工具(如MyEclipse)中默认支持的版本不匹配,则需要手动配置对应的Jar包以确保兼容性。 #### 二、示例代码分析 - **编写第一个Servlet**:在上述示例代码...

    servletjsp的使用

    Servlet和JSP是Java Web开发中的核心技术,用于构建动态web应用程序。Servlet是Java编写服务器端程序,处理HTTP请求,而JSP(Java Server Pages)则是将HTML、CSS、JavaScript与Java代码结合,方便在页面上生成动态...

    servletjsp的使用2

    在这个"ServletJSP的使用2"的练习中,我们将深入探讨这两者的核心概念、工作原理以及如何在实际项目中应用。 1. **Servlet基本概念** Servlet是Java服务器端程序,它可以接收并响应来自客户端(如浏览器)的请求。...

    SERVLETJSP25JSP使用javabean

    在这个"SERVLETJSP25JSP使用javabean"的资源中,我们将会探讨如何在JSP中有效地利用JavaBean来增强应用的可维护性和复用性。 首先,理解Servlet和JSP的基础概念是必要的。Servlet是Java编写的服务器端程序,它扩展...

    servletJSP开发环境.doc

    ### servletJSP开发环境配置详解 #### 一、概述 本文档主要介绍如何配置servlet与JSP开发环境,特别是采用Eclipse 3.3、Tomcat 6.0.18以及Lomboz 3.3搭建开发环境的具体步骤。servlet与JSP是Java Web开发中的两个...

    TV.ServletJSP.rar_DEMO

    而JSP(JavaServer Pages)是一种动态网页技术,允许在页面上嵌入Java代码,实现动态内容的生成。 【描述】"demo with JSP and Servlet" 暗示这是一个教学或实验性质的项目,展示了如何在实际应用中整合Servlet和...

    MVC架构下的ServletJSP在电子商务网站开发中的研究.pptx

    "MVC架构下的ServletJSP在电子商务网站开发中的研究" MVC架构是软件设计模式的一种,主要用于分离应用程序的数据访问、用户界面和业务逻辑,以提高代码的可维护性和可重用性。MVC架构包括三个组件:模型(Model)、...

    09_SERVLETJSP01_达内.pdf

    09_SERVLETJSP01_达内

    10_SERVLETJSP02_达内.pdf

    10_SERVLETJSP02_达内

    IBM关于Servlet与JSP开发的练习

    - 实现细节:编写一个JSP页面,使用脚本代码生成动态内容。 - **Exercise5:Calling JSP Pages from a Servlet** - 目标:掌握如何从Servlet中调用JSP页面。 - 实现细节:在Servlet中使用`RequestDispatcher`...

    ServletJSP课后习题解答.pdf

    - JSP(JavaServer Pages)虽然最终被编译成Servlet,但它的主要功能是在服务器端生成动态内容。 - Servlet 是纯Java类,运行在服务器端,负责处理请求和生成响应。 - Applet 是早期Java技术,用于在浏览器中运行...

    仿新浪微博servletJsp板

    图片验证码 用户头像上传 2.高级功能表 功能名称 用户注册邮件激活 用户密码找回 发表微博字数限制 发表微博使用表情 发表微博使用图片 发表微博使用视频 发表微博使用音乐 发表微博使用话题 发表微博...

    基于ServletJSP的部门管理系统.zip

    基于ServletJSP的部门管理系统 项目简介 本项目是一个基于Servlet和JSP技术的部门管理系统,主要用于管理企业内部的部门信息。系统通过Servlet处理HTTP请求,JSP页面展示数据,结合JSTL标签库和Listener监听器...

    ServletJSP深入详解:基于Tomcat的Web开发第一章02.pdf

    Servlet是Java语言编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。JSP(JavaServer Pages)是一种特殊的Servlet,它允许开发者将Java代码嵌入到HTML页面中。 在Tomcat中,Servlet和JSP...

    我的ServletJSP课件

    Servlet 和 JSP(JavaServer Pages)是 Java 用于构建动态 Web 应用程序的重要技术。这个压缩包包含了一系列与Servlet和JSP相关的课件,涵盖了从基础概念到高级特性的多个方面。 首先,"servletConfig.doc"可能涉及...

    当当网源代码(javascript,html,xml,servletjsp)

    结合"用mysql数据库"的描述,我们可以推断该项目使用MySQL作为其后端数据存储解决方案。MySQL是一个流行的关系型数据库管理系统,以其高性能、易用性和开源特性而受到广泛应用。 总结来说,这个项目展示了如何使用...

    servletjsp 技术概述

    Servlet和JSP(JavaServer Pages)是Java Web开发中的核心技术,它们在构建动态网页和Web应用程序方面发挥着关键作用。本篇文章将详细阐述Servlet和JSP的特性、工作原理以及如何将两者结合使用来实现高效的网站开发...

    ServletJSP.pdf

    Servlet与JSP(Java Server Pages)作为Java Web开发的重要组成部分,为创建动态网页提供了强大的支持。本文旨在深入浅出地介绍Servlet与JSP的基本概念、工作原理及应用场景,特别适合于初学者学习。 #### Servlet...

Global site tag (gtag.js) - Google Analytics