学习笔记:java web实现网页随机验证码之图片裂开

在JavaWeb项目中,遇到验证码图片显示裂开的故障。分析原因是由于响应流使用不当导致的异常。通过在image.jsp页面末尾添加响应流关闭和清空的代码,如`response.getOutputStream().flush();`等,解决了`java.lang.IllegalStateException`。修改后,验证码能够正常显示。
摘要由CSDN通过智能技术生成

问题描述

在学习通过java web实现二手交易平台的项目中,运行出来界面发现随机验证码的图片裂开了,如下图。
随机验证码图片裂开

问题分析

验证码实际上就是随机选择一些字符以图片的形式展现在页面上,如果进行提交操作的同时需要将图片上的字符同时提交,如果提交的字符与服务器session保存的不同,则认为提交信息无效。
为了避免自动程序分析解析图片,通常会在图片上随机生成一些干扰线或者将字符进行扭曲,增加难度。
一般来看,有两种方式实现随机验证码:
1.servlet实现随机验证码,参考如下

https://www.cnblogs.com/java-class/archive/2013/05/14/3078574.html

2.jsp页面跳转实现,参考如下

https://www.cnblogs.com/java-class/archive/2013/05/14/3078574.html

我这里用的是jsp页面跳转方法,开始出现图片裂开。再根据知道方法后,在image.jsp最后添加了以下代码,加上下面代码,运行时才不会出现java.lang.IllegalStateException: getOutputStream() has already been called …等异常

   response.getOutputStream().flush();    
   response.getOutputStream().close();    
   response.flushBuffer();    
   out.clear();    
   out = pageContext.pushBody();   

修改后,验证码显示成功。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值