`
EJB_wawa
  • 浏览: 107085 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Servlet实现的图形验证码

    博客分类:
  • web
阅读更多
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"

  其他的也可以看看启动脚本。只要加上这个参数就没问题了。

分享到:
评论
1 楼 Uncle.Jiang 2008-09-22  
3Q,java.awt.headless的设置非常有用.

相关推荐

    图形验证码(servlet实现)

    图形验证码(servlet实现)

    基于Servlet的图形验证码研究与实现

    这是我做毕业设计时用到的参考文献,发出来大家共享一下。

    JSP+servlet验证码登陆

    JSP下MVC架构的验证码登陆,验证码单独封装形成,存于session中实现验证

    图形验证码

    servlet编程,在jsp页面实现图形验证码的生成,并在后端判断

    java web开发之servlet图形验证码功能的实现

    主要为大家详细介绍了java web开发之servlet中图形验证码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Java Web开发之图形验证码的生成与使用方法

    假设在Servlet生成图形验证码,在JavaBean或者JSP中生成的基本过程是相同的。设计如下过程: ① 设置响应的文档类型; ② 生成随机码; ③ 把随机码保存到session中; ④ 生成图片; ⑤ 把随机码画到内存图片上; ⑥...

    采用ajax实现的图片验证码

    采用ajax技术实现的图形验证码,在前端进行验证。验证码信息为图片。每一行代码均有注释,通俗易懂。 实现步骤: 1、创建web工程 2、在jsp页面,编写一个请求servlet的名称"&gt; 3、编写一个servlet,在servlet中产生...

    基于SpringMVC annotation 的图形验证码

    基于SpringMVC annotation 的图形验证码 主要是controller的写法 实现前台验证码的显示 和刷新 验证功能相信大家都能写出来 访问 http://localhost:8080/SpringMVC_annotation_volidate/login jsp页面关键代码 ...

    生成图片验证码

    servlet生成图片验证码简单的实现。 ps:摘自Javaweb王者归来

    java生成验证码代码

    通过servlet生成一个验证码图片,加载在页面的img标签中,通过js方法点击事件来控制。

    正则表达式—帮助文档

    包括所有正则表达式的详解,让你由一个门外汉在瞬间成为一个高手,还有用servlet生成图形验证码...

    FreeMarke实例代码

    FreeMarker允许Java servlet保持图形设计同应用程序逻辑的分离,这是通过在模板中密封HTML完成的。模板用servlet提供的数据动态地生成 HTML。模板语言是强大的直观的,编译器速度快,输出接近静态HTML页面的速度。 ...

    J2EE经典案例设计与实现

    案例3:Servlet动态生成图像验证码 案例4:Servlet使用连接池访问数据库 案例5:实现多个URL映射一个Servlet 案例6:为Servlet创建JSP形式的URL 案例7:实现服务器自动激活的Servlet 案例8:访问Servlet的安全限制 ...

    java完美的验证码生成

    可以定制的验证码 可以数字、英文、中文其中的任意组合,也可以定制组合的长度 这是一个完整的示例,可以根据自己的需求稍作修改 里面有完整的注释和操作方法

    platform.captcha:用于生成验证码图像的 Servlet 3

    平台验证码 这是一个用于生成 GIF 验证码图像的简单 java servlet。 从源代码(宽度、高度、噪声、字典、字体大小)配置它。 要求:服务器上的 Java 1.6+、Servlet 3 和图形环境。

    jcaptcha-1.0

    jcaptcha是一个开源的用来生成图形验证码的Java开源组件,使用起来也是非常的简单方便。

    javaWeb传智播客网上书城项目源码(设计以及实现论文)

    &gt; 表单页面使用一次性图形验证码; &gt; 在servlet中再次做了表单校验。 &gt; 注册成功时,使用javaMail给注册用户发送激活邮件,邮件中包含用于激活的链接,链接包含激活码参数; 用户激活:通过激活码查询用户,如果...

    JAVA WEB典型模块与项目实战大全

    5.4 实现图形验证码  5.5 避免重复提交功能  5.6 缩略加水印图像  5.7 小结  第6章 网络硬盘  6.1 网络硬盘功能原理  6.2 网络硬盘功能具体实现——浏览磁盘和显示文件信息  6.3 网络硬盘功能具体...

    传智播客网上书城毕业设计资料和代码

    &gt; 表单页面使用一次性图形验证码; &gt; 在servlet中再次做了表单校验。 &gt; 注册成功时,使用javaMail给注册用户发送激活邮件,邮件中包含用于激活的链接,链接包含激活码参数; * 用户激活:通过激活码查询用户,...

    Java案例开发锦集

    案例1 用户登录验证的完整程序 案例2 MD5的Javabean实现 案例3 用公钥计算消息摘要的验证码 案例4-1 Java中的数字证书的生成及维护方法 案例4-2 数字证书的签发(签名) 案例4-3 利用数字证书给...

Global site tag (gtag.js) - Google Analytics