网站java验证码不显示_jsp验证码无法显示

本文探讨了Java验证码在某些Linux服务器上无法显示的问题,原因是AWT依赖于X Window系统而未启动。当系统以init 5级别启动时验证码显示正常,而以init 3级别启动时则显示为小红叉。解决方案是在启动参数中添加'-Djava.awt.headless=true',但可能引发新的错误。最终成功解决方法是在catalina.sh文件中加入'export CATALINA_OPTS="-Djava.awt.headless=true"'。
摘要由CSDN通过智能技术生成

把开发好的代码,放到Linux服务器上面,有的Linux服务器可以显示,有的没有显示。

经过对比,发现该问题更深一步是这样:

1 如果以init 5的级别启动centos系统,再启动tomcat,在客户端浏览器上查看验证码图形显示正常;

2 如果以init 3的级别启动centos系统,再启动tomcat,在客户端浏览器上查看验证码图形显示显示为小红叉;

这是很重要的结论,这个错误是因为图表程序是通过AWT实现的,AWT会调用操作系统本地窗口资源绘图,windows对此支持很好,

在linux下如果没有进到X window,AWT就不能绘图。

代码如下

java.awt.image.*,java.util.*,javax.imageio.*" pageEncoding="GB18030"%>

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);

}

%>

//设置页面不缓存

response.setHead

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值