2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Java Tomcat生成图片验证码不显示问题 超坑记录

Java Tomcat生成图片验证码不显示问题 超坑记录

时间:2019-11-28 00:06:57

相关推荐

Java Tomcat生成图片验证码不显示问题 超坑记录

问题现象:登陆页面验证码,在一次更新后无法显示,后台没有错误日志,浏览器里code 200 没找到一点儿错误,就是不显示!!在本地开发环境正常!

。。。。。此处省略一下午的操作

问题原因:

生成验证码的图片使用的这段代码

ServletOutputStream out = null;try { // 图像输出out = response.getOutputStream();ImageIO.write(bufferImg, "jpeg", out);} catch (IOException e) {try {out.close();} catch (IOException e1) {e1.printStackTrace();}}

首先问题是ImageIO.write 使用了tomcat下的temp临时目录,这个在部署的时候删除了,导致无法显示;

然后就是,本来找不到零食目录时会报异常:

javax.imageio.IIOException: Can't create cache file!

at javax.imageio.ImageIO.createImageInputStream(ImageIO.java:361)

at javax.imageio.ImageIO.read(ImageIO.java:1351)

但是catch (IOException e)这个并没有捕获到这个异常,后台什么日志都没记录到,导致浪费了很长时间没发现,后来抄了一段别人的代码,里面是catch(Exception e)才注意到错误!!

解决方法:就是新建个temp目录就好了;

另外还可以通过ImageIO.setUseCache(false)设置,更改缓存策略,使用内存缓存,不使用文件目录缓存;或者ImageIO.setCacheDirectory(cacheDirectory),指定缓存目录

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。