问题描述
在学习通过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();
修改后,验证码显示成功。