JSP页面使用后台生成的图片验证码

后台生成验证码图片代码

@Controller

@Scope("prototype")

@RequestMapping(value = "/imageCode")

public class ImageCodeController extends BaseController {

private static final long serialVersionUID = 1L;

private static Logger logger = Logger.getLogger(ImageCodeController.class);

@RequestMapping(value = "/get")

public void getImageCode(HttpServletRequest request, HttpServletResponse response)

throws IOException {

//创建图像缓冲区

BufferedImage bi=new BufferedImage(68, 22, BufferedImage.TYPE_INT_RGB);

//通过缓冲区创建一个画布

Graphics g=bi.getGraphics();

//创建颜色

Color c=new Color(200,150,255);

//为画布创建背景颜色

g.setColor(c);

//fillRect:填充指定的矩形

g.fillRect(0, 0, 68,22);

//转化为字符型的数组

char[] ch="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();

Random r=new Random();

int len=ch.length;

//index用于存放随机数字

int index;

StringBuffer sb=new StringBuffer();

for(int i=0;i<4;i++){

//产生随机数字

index=r.nextInt(len);

//设置颜色

g.setColor(new Color(r.nextInt(88),r.nextInt(188),r.nextInt(255)));

//画数字以及数字的位置

g.drawString(ch[index]+"",(i*15)+3, 18);

sb.append(ch[index]);

}

//将数字保留在session中,便于后续的使用

request.getSession().setAttribute("piccode",sb.toString());

//执行到此处页面不会出现验证码图片

ImageIO.write(bi, "JPG", response.getOutputStream());

}

}

Firefox可以显示,chrome不显示

设置断点调试时,在imagecode.htm最后一步return时chrome页面可以显示,继续执行验证码图片消失

Chrome提示错误:

Failed to load resource: net::ERR_INCOMPLETE_CHUNKED_ENCODING

这是因为,对于非持久连接,浏览器可以通过连接是否关闭来界定请求或响应实体的边界;而对于持久连接,这种方法显然不奏效。上例中,尽管我已经发送完所有数据,但浏览器并不知道这一点,它无法得知这个打开的连接上是否还会有新数据进来,只能傻傻地等了。

HTTP/1.0 的持久连接机制是后来才引入的,通过 Connection: keep-alive 这个头部来实现,服务端和客户端都可以使用它告诉对方在发送完数据之后不需要断开 TCP 连接,以备后用。HTTP/1.1 则规定所有连接都必须是持久的,除非显式地在头部加上 Connection: close。所以实际上,HTTP/1.1 中 Connection 这个头部字段已经没有 keep-alive 这个取值了,但由于历史原因,很多 Web Server 和浏览器,还是保留着给 HTTP/1.1 长连接发送 Connection: keep-alive 的习惯。

分块传输编码只在HTTP协议1.1版本(HTTP/1.1)中提供。

问题出现原因:

Chrome浏览器使用的是HTTP/1.1,无法得知数据是否传输完成

解决办法:

下面是我尝试的方法

response.setHeader("Transfer-Encoding","JPG");

疑问:Transfer-Encoding的可选值chunked/identity

java验证码不显示_chrome无法显示Java生成的验证码图片相关推荐

  1. 用PyTorch训练模型识别captcha库生成的验证码

    目录 制作训练数据集 用Dataloader加载自定义的Dataset 训练模型 识别验证码 总结与提高 源码下载 在本节,我们将使用深度学习框架PyTorch来训练模型去识别一种难度稍大一点的数字+ ...

  2. java连接mysql数据库(jsp显示和控制台显示)

    很多事情,在我们没有做之前我们觉得好难,但是只要你静下心来,毕竟这些都是人搞出来的,只要你是人,那就一定可以明白. 配置:JDK1.8,MySQL5.7,eclipse:Neon Release (4 ...

  3. java web 项目在tomcat上显示空白页的解决

    今天调试一java web项目,所有页面都显示空白,有如下的解决过程: 一 切换浏览器模式 tomcat打开页面是空白 用localhost:8080打开页面显示空白,以前用着没问题. 浏览器兼容性问 ...

  4. idea java 非法字符_解决IDEA显示非法字符 \ufeff 的问题

    一.问题 在txt文本中复制代码进入IDEA报错 Error:(1, 1) java: 非法字符: '\ufeff' Error:(1, 10) java: 需要class, interface或en ...

  5. 编写Java程序,在屏幕上显示带标题的窗口,并添加一个按钮。当用户单击按钮时,结束程序。

    编写Java程序,在屏幕上显示带标题的窗口,并添加一个按钮.当用户单击按钮时,结束程序. package p3;import java.awt.event.ActionEvent; import ja ...

  6. Java创建SpringBoot服务时yml文件显示粉色不显示绿色小叶子

    在做项目的时候遇到了一个问题:在搭建后台环境的时候创建Spring服务时yml文件显示粉色不显示绿色小叶子,而且一开始没注意,目录结构下的java目录和resources目录也不显示应有的蓝色和黄色的 ...

  7. java jsp网页无法显示_jsp网页显示不了

    Read.jsp 读取一个文件 Read.jsp 读取一个文件 文件内容: 第行: //DelimitedDataFile.java bean文件源代码 //导入java包 import java.i ...

  8. java如何在窗口上显示数据_如何把Java程序窗口在屏幕中间显示

    摘要:这篇Java开发技术栏目下的"如何把Java程序窗口在屏幕中间显示",介绍的技术点是"Java程序.屏幕中间.Java.显示.窗口.中间",希望对大家开发 ...

  9. 【解决Maven项目module不显示蓝色小方块/java文件显示灰色橙色/module already exists问题】

    目录 解决Maven项目module不显示蓝色小方块/java文件显示灰色橙色 修复办法 删除后无法创建同名 module 的问题解决 解决Maven项目module不显示蓝色小方块/java文件显示 ...

  10. 关于sqoop抽取数据时显示ERROR :/QueryResult.java‘ already exists 解读

    关于sqoop抽取数据时显示ERROR :/QueryResult.java' already exists 解读 报错日志 ERROR orm.CompilationManager: Could n ...

最新文章

  1. linux系统安装服务器过程,Linux系统服务器安装宝塔面板图文过程详解
  2. python中all函数的用法_python中map、any、all函数用法分析
  3. SAP 电商云 Spartacus UI 支持延迟加载的新功能的入口设计
  4. zabbix简单介绍(1)
  5. 视频播放器for android
  6. 前端学习(1932)vue之电商管理系统电商系统之tree树形控件
  7. localStorage 简单示例
  8. pythonajax学习_python学习-- django 2.1.7 ajax 请求
  9. java中的POJO、PO、VO分别是什么?
  10. PowerDesigner导出SQL脚本运行注释出现乱码问题
  11. tf.train.Saver,和模型参数微调
  12. expert php and mysql_Expert PHP and Mysql
  13. excel解决线性规划求解问题
  14. CentOS查看端口
  15. C#开根号函数:math.pow()函数
  16. RHCE第一讲【II】
  17. 线性约束最小方差准则
  18. python气象卫星云图解析_python下载卫星云图合成gif的方法示例
  19. 蓝牙成为物联网市场中的有力竞争者
  20. Linux kernel Namespace源码分析

热门文章

  1. 单片机定时器程序c语言,单片机定时器程序
  2. 微信商户收款码在哪里下载 -PC端
  3. ruby on rails_通过Ruby on Rails中的关系调试Has_Many
  4. 抖音上热门的小技巧你都掌握了吗?
  5. zip解压缩jar包,像jar包中add文件
  6. 【ROS小车9】仅用 RPLIDAR A1(思岚 A1) 雷达在 Ubuntu 虚拟机跑 gmapping
  7. word文档如何设置四级标题
  8. CAD坐标系(UCS)
  9. 洛谷 P3382(三分查找凹点和凸点)
  10. mysql stmt num rows_php – MySQLi stmt num_rows返回0