作者:贤闲咸大_552 | 来源:互联网 | 2023-12-13 18:08
本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。
这个项目是我年初的时候申报的大工软院的校级创新训练项目,项目灵感来源于我们原来微软组内的一名成员,最初想两人一起合作完成,因为一些缘故,他不得不退出。于是之后的技术栈选择,网站前端布局,业务流程,数据库结构等等都是我一个人从零开始探索的。这个项目的真正的开始着手的时间是17年8月份左右,现在走到了一个迷茫的时期,所以决定把自己的想法都落实在文档中,希望能够理出一些头绪。是记录,更是规划与探索。
项目简介
高校天文共享平台希望能够给高校学生提供一个天象预报,科普知识,高校组团观测活动,图片、日志分享等功能的一站式平台。希望能追踪近期的天文观测事件,帮助在最佳观测带的不同学校的同学主办、参与到线下的观测活动中,同时记录下活动中的点点滴滴。
功能剖析
- 注册、登陆
- 好友添加
- 博客发布
- 图片上传
- 天象信息的抓取和推送
- 高校观测活动的主办与参与
- 天文知识、图片的抓取、整理
8月~12月的架构
前端
- Bootstrap
- jQuery
后端
- servlet
- tomcat
依赖构建
- Maven
数据传送
- Ajax
- json
数据存储
- mysql(信息)
- 服务器路径(文件)
上述架构存在的问题
前后端没有分离
java web因为使用了jstl与EL表达式,导致前后端分离做的很差;在接触了Ajax之后,比较喜欢这种前后数据分离开的感觉,但是之前的代码并没有进行重构向这方向发展,比较混乱。
有很多基础功能需要自己实现
比如文件的上传下载,用java web需要额外的很多代码去处理。
filter这里遇到了问题一直没能解决
我的COOKIE filter一直有问题,程序运行到这个filter中就不动了,甚至连在其中第一行中写好的println都无效。
觉得jsp编译的速度太慢了
每一次整个环境都要重新编译,并且对jsp的微小的调整都要重新来,在调试前端效果时尤其不方便。而且bootstrap在IntelliJ
IDEA的java web项目中有个莫名其妙的bug,我不得不在每个jsp都要插入的header和footer的模板中分别写一次对bootstrap.js和jquery.js的引用,才能够保证bootstrap中的下拉框能够正常运行。
前端对复杂DOM的生成操作很耗费精力
为了每加载一张图片便jQuery动态生成一个DOM,并且DOM中有多层嵌套与属性赋值,我不得不写几十行的几乎没有技术含量的代码。
资料老旧
目前遇到java web的问题找到的各种博客基本都是好多年以前的了,而且很少用纯servlet来编写java web项目的,基本上不是Struts2就是Spring,这个项目之所以没用Struts2是因为之前尝试过,但是在配置Struts2拦截器时遇到了问题好久都没能解决,导致我放弃了,回到了servlet。
已有的成果
- 注册、登陆
- 用户个人信息页面
- 用户相册图片上传下载
- 论坛发帖回帖操作
12月的打算
- 想做到真正的前后端分离,前端就是纯粹的html页面,借助React实现更便捷强大的前端js效果
- 使用RESTful的方式去构建前后端的交互,构建更简洁的地址栏(学习github)
- 后端使用Spring MVC的架构(想尝试下新的技术)
- 改写与完善浩然大佬提供的论坛发帖相关代码(虽然我还没能跑起来他的这部分代码)
- 完成用户的日志发布(使用markdown与用户相册图片链接的组合,解决markdown不能直接上传图片的烦恼)
- 完成用户间的关注(其实并不是很复杂)
- 杜撰一些活动,完成校园对活动的主办与参与操作(想参与的人数最多的学校获得主办权,其他学校可以根据学生想参与的程度自行决定是否以官方形式参与到活动当中)
为达到12月目标的小步骤
- 先跳过之前filter的问题,跑起来浩然大佬的代码,能运行起来是第一位的
- 快速了解RESTful的设计模式,摸清请求与数据在前后端的交互方式,据此去规划新的后端结构
- 使用Spring MVC的设计模式快速将已有的代码移植过去
- 使用最简单、足够的页面布局,把其他所有的前端需求页面先做出来,并安排好与后端交互的接口
- 按顺序,完成markdown博客撰写发布,用户间互相关注,首页推送用户博客,首页推送活动报名功能
我先去调试浩然大佬的代码去!搞定后就回来还愿!
Github的地址现在还不好意思放出来,,等我重构的差不多的再贴出来分享给大家:)