目 录
1 前言 3
2 出现问题 3
3 解决办法及思路 4
4 总结 5
- 前言
在现场环境使用tomat7.0,用户反馈版本较低,存在一定的安全隐患,故升级到 tomcat 9.0。
2 出现问题
升级到 tomcat 9.0 后文件导出功能无法使用,报404 错误,如下图
并且经过多人及一个多月的时间处理仍未解决。
3解决办法及思路
3.1 走过的弯路
最开始怀疑tomat ,后面怀疑 spring ,最后面怀疑tomcat 与 spring 不兼容,就差去看tomcat和spring 的源代码了。
3.2 解决办法
将请求的URL中的!替换为 / 。
3.3 分析
在查看日志时无意间发现在Spring进行IOC时类名与方法名称之间用 / 分隔,如下图
而实际请求时 类名与方法名称之间用 ! 分隔,如下图
故将 ! 改为 / 后成功访问
后面在 tomcat 7.0 上将请求地址的类名与方法名称之间的分隔符改成 / ,也能成功访问。至于请求地址 类名与方法名称之间的分隔符 的原理这部分待深入研究,有兴趣或知道答案的大牛们可以一起探讨与交流。
4 总结
4.1 感悟
深到至极便于浅,浅到至极反而深!
4.2 处理效率
总共花了 1.5天 时间。觉得可以更快速点,最好控制在 24 小时以内解决。
4.3 思考
这次问题关键是细节,我相信一个技术水平很一般的人只要够细心也能解决这个问题;并且这是一个历史遗留问题,不必要在常用的解决办法上浪费时间,因为如果像这个一般人第一反应的办法都能解决的话问题早就解决掉了。