现象:
访问jsp页面, 页面为空, 网络请求显示失败, 控制台打印错误net::ERR_INCOMPLETE_CHUNKED_ENCODING 200
分析:
错误描述:编码模块不完整,返回浏览器的流不完整
可能得原因:
1、网络是否稳定
2、服务器端是否有对响应数据做限制,比如:nginx转发的数据限制,spring/Servlet的HTTP响应数据大小限制,或者是自定义拦截器的响应数据限制
3、服务器的数据限制,如Tomcat
4、jsp中的参数获取的值为空(最常见的情况)
经调整上述三项都未成功, 尝试从代码层面分析
调试:
1. 先配置idea即时修改代码即时生效, 不用重启服务.
参见:idea热部署-修改代码不重启_idea修改代码不用重启_清风笑55188的博客-CSDN博客
【重要】:第一次请求接口不生效,修改是不生效的,要第二次请求接口才生效;
2. 依次注释jsp中的html代码, 最后发现这段代码注释完
页面展示部分数据
网络请求状态改为500
点开查看响应,发现对应的jsp代码返回不完整
3. 给jsp页面添加buffer="3000kb"配置,让jsp页面完整输出
当完整输出后, 又报错
最终发现是 isfinished字段返回空字符串, 所以报错, 修改后即展示页面
思考: 为何初始状态页面没有报错500, 直接把js的错误打印出来
1.初始状态<%=formcontent %>输出大量数据, 加上js错误数据, 超出了页缓存大小, 所以报错net::ERR_INCOMPLETE_CHUNKED_ENCODING 200, 然后页面什么都不展示
2.当注释掉formcontent代码后,jsp页面返回部分源码, 也是页缓存超过限制(但是为啥这次超过限制就返回部分, 是因为js返回部分,html就不显示?)
3.修改页缓存后, js完整代码全部返回, 报出完整错误信息
4.其实最初就修改页缓存, 也可以直接报出完整错误信息