jeecms无法修改子栏目顺序,引出的源码漏洞

老哥最近正在做一个cms的小项目(www.uni-orange.com),验收前期,逐一解决系统bug,直到一个bug的出现,害得老哥老老实实地坐了一天!!

简单介绍一下使用的cms框架:jeecms,国内开源的cms框架,其商业版jeecms并不开源,作为互联网产品,至今已经迭代到v8.1版本,这个数字说明:即使是一个产品,它仍然是存在问题,需要不断完善优化的。

相信多数使用过jeecms的开发或者网管在使用过程中多多少少都会遇到一些问题,jeecms官方提供了技术论坛去帮助用户解决问题,但是大多数问题普通用户是无权限查看的。

其商业版jeecms是提供源码的,在使用及二次开发中,通过其产生的问题作为驱动,查阅其源码,有了一点点了解,确实可以为解决问题提供帮助,不得不说,其底层实体类数据结构的设计确实很好(当然这与其选择hibernate框架是分不开的,这里并不是说hibernate框架有多好)。早前带过一个社科院的数据处理项目(数据结构偏复杂),现在回想起当初的数据结构设计......,这就是阅读源码的好处,取其糟粕,去其精华。没毛病。

不废话,上BUG:


修改排列顺序并保存,系统报错“系统发生了一点小故障”,好,开始解决这个问题:

1.查找日志,但并未发现其异常信息

2.本地debug,其日志级别配置在logback.xml中

将其改为“DEBUG”级别,便于调试,但是本地调试过程中,上述操作正常运行,问题并没有重现;

3.修改服务器上cms的日志级别,重启cms应用,远程调试tomcat,跟踪日志,发现异常:

扫描二维码关注公众号,回复: 437935 查看本文章


NPE空指针异常,智者千虑必有一失,且不论这个问题是否是由于使用不当或是数据有误引起,出现空指针异常,就一定是代码有问题,至少是有漏洞的。

4.找到源码:


5.解决问题的方法已经明了:只需增加不为空判断即可(它这块的逻辑判断确实是存在疏忽的)

6.如果想找到问题产生的具体原因,就需要更加深入的跟踪代码,了解其数据处理的逻辑了

其实无论是生活还是工作中,都会遇到很多问题,不要慌,你要相信“世上无难事,只要肯放弃”。

不管是解决什么问题,首先要确认的就是解决思路,这会让你事半功倍。

猜你喜欢

转载自blog.csdn.net/soongp/article/details/56279105