這個專案是我年初的時候申報的大工軟院的校級創新訓練專案,專案靈感來源於我們原來微軟組內的一名成員,最初想兩人一起合作完成,因為一些緣故,他不得不退出。於是之後的技術棧選擇,網站前端佈局,業務流程,資料庫結構等等都是我一個人從零開始探索的。這個專案的真正的開始著手的時間是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的地址現在還不好意思放出來,,等我重構的差不多的再貼出來分享給大家:)