Servlet实现的图形验证码
import java.io.*;
import java.util.*;
import com.sun.image.codec.jpeg.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.awt.*;
import java.awt.image.*;
public class ValidateCode extends HttpServlet {
private Font mFont=new Font("宋体", Font.PLAIN,12);//设置字体
//处理post
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
doGet(request,response);
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
//取得一个1000-9999的随机数
String s="";
int intCount=0;
intCount=(new Random()).nextInt(9999);//
if(intCount<1000)intCount+=1000;
s=intCount+"";
//保存入session,用于与用户的输入进行比较.
//注意比较完之后清除session.
HttpSession session=request.getSession (true);
session.setAttribute("validateCode",s);
response.setContentType("image/gif");
ServletOutputStream out=response.getOutputStream();
BufferedImage image=new BufferedImage(35,14,BufferedImage.TYPE_INT_RGB);
Graphics gra=image.getGraphics();
//设置背景色
gra.setColor(Color.yellow);
gra.fillRect(1,1,33,12);
//设置字体色
gra.setColor(Color.black);
gra.setFont(mFont);
//输出数字
char c;
for(int i=0;i<4;i++) {
c=s.charAt(i);
gra.drawString(c+"",i*7+4,11); //7为宽度,11为上下高度位置
}
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
}
}
java的图片处理包需要图形环境,而linux上没有启动图形环境,找不到图形环境的server(X11 window server using ':0.0' )所以会报这个错。而通过java -Djava.awt.headless=true 这个参数的指定就可以避免java 2d去找图形环境。
要么这样试试,应该也可以。在servlet里一开始写一句:
System.setProperty("java.awt.headless","true");
web服务器的java虚拟机必须加以个参数java.awt.headless=true
以tomcat为例
可以在/etc/profile或启动web服务的用户的.bash_profile中的CATALINA_OPTS变量中加入:
CATALINA_OPTS="... -Djava.awt.headless=true"
其他的也可以看看启动脚本。只要加上这个参数就没问题了。
分享到:
相关推荐
本篇文章将深入探讨如何使用Servlet技术来实现图形验证码的生成与验证。 首先,我们需要了解Servlet。Servlet是Java EE中的一部分,它是一个服务器端的Java应用程序,主要用于处理HTTP请求。在图形验证码的实现中,...
这可以通过使用HTML的`<img>`标签和Servlet的图形处理能力来实现。Servlet会生成验证码的图像,并将其作为HTTP响应返回。这里,我们可以使用Java的`java.awt`和`javax.imageio`库来创建和输出图像。 ```java // ...
Servlet是Java Web开发中的一...总之,Servlet生成图片验证码是一种常见的Web安全实践,通过结合Java的图形库和HTTP交互,可以实现高效且安全的用户验证机制。在设计和实现时,应充分考虑用户体验和安全性之间的平衡。
首先,JavaScript通常在客户端运行,它可以生成随机的图形验证码并在网页上显示。这个过程涉及以下几个步骤: 1. **生成随机字符串**:JavaScript可以生成一个包含字母、数字或其他特殊字符的随机字符串。这个字符...
同时,Servlet可能还会利用Java的图形库(如Java2D)来绘制验证码图像,并将其以流形式返回到客户端。 **验证码的实现流程** 1. 用户打开含有验证码的网页,JSP生成初始的随机验证码并显示为图像。 2. 用户如果需要...
在这个"JSP+servlet验证码登陆"的场景中,我们主要讨论的是如何在MVC(Model-View-Controller)架构下实现一个安全的登录系统,特别是涉及到验证码的生成和验证。 验证码是一种防止恶意自动程序(如机器人)进行...
2. Java图形绘制,主要利用Graphics2D类创建验证码图片。 3. 部署描述符`web.xml`的配置,包括Servlet的URL映射和初始化参数。 4. JSP页面的使用,如`index.jsp`用于请求验证码,`result.jsp`展示验证结果。 5. ...
这是我做毕业设计时用到的参考文献,发出来大家共享一下。
#### 三、图形验证码实现原理 图形验证码通常由随机数字或字母组成,并且通过图像的形式展示给用户。为了防止自动化程序识别这些字符,图像通常会添加一些干扰元素,如线条、点等。下面我们将具体介绍如何在JSP中...
本话题主要围绕如何使用Servlet技术来实现一个简单的图形验证码。 Servlet是Java EE平台中用于处理HTTP请求的服务端组件。在这里,我们将讨论如何通过Servlet生成随机字符串,并将其转化为图像输出到客户端,以此...
通过上述分析,我们可以看到这是一个完整的Java图形验证码实现案例。它不仅展示了如何生成随机颜色和绘制验证码图片,还涉及了HTTP响应头的设置以及Session的使用。这对于学习如何在Java Web应用中实现图形验证码...
在Java Web开发中,我们可以使用Servlet和JSP来实现一个简单的图形验证码。以下将详细介绍如何利用这两个技术进行验证码的实现。 首先,理解验证码的基本原理:验证码是一种通过图像显示随机字符或数字的方式,用户...
在验证码实现中,Servlet可以生成随机的验证码字符串,将其存储在服务器端,并同时将该字符串转化为图像显示给用户。 1. **生成验证码字符串**: - 首先,我们需要创建一个随机字符串,通常包含大小写字母、数字...
【图形验证码(jsp实现)】 在网络安全领域,图形验证码(CAPTCHA)是一种广泛使用的安全机制,用于防止自动机器人或恶意脚本对网站进行非法操作,如注册、登录、发布评论等。图形验证码要求用户在输入框中正确识别并...
本示例通过使用Buffalo框架和Servlet来实现一个简单的图形验证码功能。下面将详细介绍这个实现过程中的关键知识点。 1. **Buffalo框架**:Buffalo是一个轻量级的Java服务框架,它提供了一种简单的方式来处理HTTP...
本主题将深入探讨如何使用Servlet来实现验证码功能。验证码的主要目的是为了防止自动化程序(如机器人)对网站进行恶意操作,它通常要求用户在输入框中正确输入一串随机生成的图像中的字符或数字。 首先,我们需要...
本文主要介绍如何使用Servlet来生成图形验证码。 #### 二、准备工作 在开始编写代码之前,请确保已具备以下条件: 1. **Java环境**:确保安装了Java JDK,并且版本符合项目需求。 2. **IDE**:推荐使用Eclipse或...
Java Web 开发之 Servlet 图形验证码功能的实现 Java Web 开发中,图形验证码是一种常用的安全机制,旨在防止自动工具的滥用和恶意攻击。在本文中,我们将详细介绍如何使用 Java 技术和 Servlet 实现一个图形...
在这个"oltl图形验证码-jsp"的案例中,我们关注的是如何在JavaServer Pages (JSP) 中实现基于Ajax的图形验证码功能。 首先,我们需要理解JSP的基础。JSP是一种动态网页技术,允许开发者在HTML页面中嵌入Java代码,...