一、项目来源:
在b站视频的评论里搜到了java的前端页面项目源码的zip文件,将源码的zip文件解压后用idea打开,打开后部署Tomcat,并将源码包中的数据库资源打开在MySQL中,连接数据库后运行该项目。
二、逆向开发过程:
1.首先运行原先项目查看运行效果。
如果输入验证码错误,会出现报错提示:
登录成功后,进入主页面,点击左侧的功能,测试使用效果。
通过该项目的运行得知项目的主要功能有:
1.登录该页面,输入密码和验证码,并可以安全退出。
2.增加体育赛事的信息,刷新后展示出添加的赛事信息。
3.修改和删除添加的体育赛事信息。
2.查看原先项目中源码文件的目录(结构)和每个代码对应的功能实现方式。
先查看有哪些包,再依次阅读HTML,jsp,servlet文件。
通过查看包的结构可以了解到该项目采用了MVC架构开发了前端代码,再通过查看HTML代码和jsp代码查看页面的实现。
查看jsp代码可以发现该界面分为了顶部,底部,左侧部分和中间部分四个部分,查看左侧的字可以了解到功能的实现,这在后续改进功能的时候可以在原先项目的基础位置上进行修改。
比如,如果想添加购买体育赛事的功能,则可以在左侧页面的界面部分,下面加上一段代码,便可以在原先项目的基础上进行功能改进。
在阅读代码的时候,右键使用idea的搜索功能,在项目中搜索这段代码,然后可以转入到相应的文件中,比如搜索sport.let会转入到sport的servlet文件中,然后再翻到对应的servlet代码中阅读,继续了解下一步的功能。
通过阅读代码和注释(因为该项目命名清晰且注释详细,因此便于理解功能的实现,了解到dao包管理数据库的增删改查,util包用来连接数据库,biz包解决dao层抛出的业务异常等等。
大致了解了原先代码的实现方式后,知道了数据库的增删改查功能写在dao包中,后续功能改进的时候,就可以找到该段代码的位置,然后进行功能修改,修改数据库和相应的操作。
三、找到该项目的功能缺陷和不足,并提出改进意见
缺陷1:在登录的时候,实现登录的方式是输入现有的管理员昵称和密码,这些密码是数据库中已经有了的,只能在数据库中修改账户信息。
改进点:添加注册用户账号和密码的功能,如果是新用户则点击“注册用户”,这样登录的功能可以更加完善。
缺陷2:该项目只能实现赛事新闻的增加,修改,删除,却未实现赛事信息的查找功能。
改进点:增加信息查找功能,可以以赛事名称作为关键字进行查找。
缺陷3:用户在查看新闻赛事的时候,不仅有查看搜索的需求,还有体育赛事购票的需求。
改进点:可以在相关新闻的信息中添加赛事价格的信息,增加体育赛事购票功能。
改进后的功能结构图:(橘色为改进后功能)
四、心得体会
1.需要掌握一定的技术,否则看不懂原先的项目源码,比如该项目采用的技术是MVC框架和JDBC连接MySQL数据库,如果不了解这些,可能无法阅读代码。
2.在逆向二次开发的时候,需要找到可以添加改进内容的代码位置,这样才能在后续改进功能的时候和原先项目连接起来。
3.在了解技术的基础上,通过注释可以了解到原作者想在这个代码中实现什么功能。因此,清楚的文件命名,对功能的代码注释是必要的,如果没有注释可能不容易理解原先项目的功能实现方式。
所以写项目尽量写清楚命名和注释,对于后续的维护,合作写代码都是有帮助的,要在日常养成这种好习惯。
4.在改进功能的时候可以通过项目用户的需求进行功能扩展,在发现项目缺陷的时候也可以从用户的角度换位思考发现用户的需求,进而发现项目的缺陷,比如本文的新用户注册和赛事购票功能就是基于用户需求进行考虑,最后提出改进意见的。