王柯,周祎,紀雯燴
(東南大學成賢學院 電子與計算機工程學院,江蘇南京,210000)
現(xiàn)在的學習交流平臺所涉及的內容很廣泛,大到12個學科門類,小到各門類下的各個專業(yè),看似內容很多但是對于只有某一特定專業(yè)知識需求的用戶來講該平臺所呈現(xiàn)的交流內容大多不符合自身需求。對于一個想在IT領域深入學習的學生而言,此類人群的需求是一個精細化的學習交流平臺。因此,本課題設計了具有高擴展性和可維護性的基于SSM框架的IT知識學習交流平臺,實現(xiàn)了IT文章知識的分類、評論、發(fā)表、管理和IT知識學習路線的梳理,方便IT學習者的使用與交流,具有很好的現(xiàn)實意義。
Spring+SpringMVC+MyBatis三部分組成了SSM框架,該框架使用Spring MVC負責請求的轉發(fā)和視圖管理,Spring實現(xiàn)業(yè)務對象管理,Mybatis作為數(shù)據(jù)對象的持久化引擎。基于SSM框架三部分結構的關系運行流程如圖1所示。
圖1 基于SSM框架三部分結構的關系運行流程
Spring作為一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器(框架),不僅是Java運用最廣泛的開源框架,而且提供了對其他優(yōu)秀開源框架的集成支持。其中,IoC是Spring框架的核心內容,IoC可以將創(chuàng)建控制對象的主動權從程序內部交到第三方系統(tǒng)手中,這使得我們程序員不再去管理對象的創(chuàng)建,用更多的精力去關注業(yè)務的實現(xiàn),耦合性大大降低,從而簡化了開發(fā)。
Spring MVC是Spring Framework的一部分,是基于Java實現(xiàn)MVC的輕量級Web框架,與Spring兼容性好、功能強大。Spring的web框架圍繞DispatcherServlet即前端控制器設計。DispatcherServlet的作用是將請求分發(fā)到不同的處理器,是整個SpringMVC的控制中心。Spring MVC框架像許多其他MVC框架一樣, 以請求為驅動 , 圍繞一個中心Servlet分派請求及提供其他功能,DispatcherServlet是一個實際的Servlet (它繼承自HttpServlet 基類)。SpringMVC的原理如圖2所示。
由圖2可知當發(fā)起請求時被前置的控制器攔截到請求,根據(jù)請求參數(shù)生成代理請求,找到請求對應的實際控制器,控制器處理請求,創(chuàng)建數(shù)據(jù)模型,訪問數(shù)據(jù)庫,將模型響應給中心控制器,控制器使用模型與視圖渲染視圖結果,將結果返回給中心控制器,再將結果返回給請求者。
圖2 SpringMVC原理
MyBatis 是一個優(yōu)秀的持久層框架,即把數(shù)據(jù)(如內存中的對象)保存到可永久保存的存儲設備中(如磁盤),是將程序數(shù)據(jù)在持久狀態(tài)和瞬時狀態(tài)間轉換的機制。MyBatis 可以使用簡單的 XML 或注解來配置和映射原生信息,將接口和 Java 的實體類映射成數(shù)據(jù)庫中的記錄,避免了幾乎所有的 JDBC 代碼和手動設置參數(shù)以及獲取結果集的過程。因此,MyBatis不會對應用程序或者數(shù)據(jù)庫的現(xiàn)有設計強加任何影響,通過sql語句就可以滿足操作數(shù)據(jù)庫的所有需求。
本系統(tǒng)有普通用戶和管理員兩種身份類型,管理員能瀏覽平臺內容、管理文章及其分類和標簽、管理用戶及其評論,用戶能瀏覽平臺內容、撰寫并發(fā)表文章、發(fā)表評論。IT知識學習交流平臺總體業(yè)務流程如圖3所示。
圖3 總體業(yè)務流程圖
IT知識學習交流平臺功能結構如圖4所示。
圖4 功能結構圖
IT知識學習交流平臺系統(tǒng)框架分為四層,分別是數(shù)據(jù)持久層、服務層(DAO層)、控制層(Controller層)、表現(xiàn)層(Web層),如圖5所示。Web層通過DispatcherServlet接收用戶發(fā)來的請求,通過注冊好的路徑轉發(fā)到相應的Controller層類中的方法上,Controller層的類開始實現(xiàn)具體業(yè)務,并根據(jù)業(yè)務邏輯調用相應的DAO層,DAO層接收請求并對數(shù)據(jù)庫進行操作,DAO層由于是由持久層文件生成,因此,持久層文件中存放實體類文件和構造函數(shù)提供給DAO層。
圖5 系統(tǒng)框架設計
本系統(tǒng)主要有五個實體,分別為用戶、評論、文章、分類和標簽,五個實體間的關系E-R圖如6所示。
圖6 E-R圖
本系統(tǒng)使用的MySql進行數(shù)據(jù)庫管理,根據(jù)本系統(tǒng)所需功能、邏輯業(yè)務對象的分析以及對象間的關系,對系統(tǒng)數(shù)據(jù)庫進行了設計,如表1~表7所示。
(1)文章信息表。文章信息表主要用于保存文章的具體信息,主要字段包括:文章ID、用戶ID、標題、內容、訪問量、評論數(shù)、點贊數(shù)、狀態(tài)、排序值、更新時間、創(chuàng)建時間、摘要、縮略圖。表結構如表1所示。
表1 文章信息表
(2)用戶評論信息表。用戶評論信息表主要用于保存用戶評論文章的內容及發(fā)表評論和被評論文章的信息。主要字段包括:評論ID、上級評論ID、上級評論名稱、文章ID、評論人名稱、評論人郵箱、評論人個人主頁、評論人頭像、內容、評論時間、是否為管理員、用戶ID。表結構如表2所示。
表2 用戶評論信息表
(3)用戶信息表。用戶信息表主要保存用戶的具體信息。主要字段包括:用戶ID、用戶名、密碼、昵稱、郵箱、個人主頁、頭像、注冊時間、上傳登錄IP、上傳登錄時間、狀態(tài)、角色。表結構如表3所示。
表3 用戶信息表
(4)文章分類信息表。文章分類信息表主要保存文章分類標簽的信息。主要字段包括:分類ID、分類父ID、分類名稱、排序值、圖標。表結構如表4所示。
表4 文章分類信息表
(5)文章標簽信息表。文章標簽信息表主要保存文章小標簽的信息。主要字段包括:標簽ID、標簽名稱。表結構如表5所示。
表5 文章標簽信息表
(6)文章與分類標簽鏈接關系表。文章與分類標簽鏈接關系表主要保存文章和對應分類標簽的關系。主要字段包括:文章ID、分類ID。表結構如表6所示。
表6 文章與分類標簽鏈接關系表
(7)文章與標簽鏈接關系表。文章與標簽鏈接關系表主要保存文章和對應小標簽的關系。主要字段包括:文章ID、標簽ID。表結構如表7所示。
表7 文章與標簽鏈接關系表
本系統(tǒng)的主要功能包括發(fā)表文章、評論文章、文章分類、瀏覽平臺內容以及管理員對平臺用戶、文章、分類標簽的管理等,由于篇幅有限,下文僅對發(fā)表文章和評論文章兩個模塊進行詳細設計。
2.5.1 發(fā)表文章用例對象設計
用戶登錄成功后可以在用戶后臺發(fā)表文章,在后臺編輯文章的界面中輸入文章內容、選擇文章對應的分類和標簽,所有的信息通過post請求發(fā)送給對應Controller層 的ArticleController類、CategoryController類和TagConrtroller類, 然 后ArticleController類通 過InsertArticle( )方 法 發(fā) 送 給ArticleService,CategoryController類通過InsertCategory( )方法發(fā)送給CategoryService,TagConrtroller類 通 過InsertTag( )方法發(fā)送給TagService,然后各Service層發(fā)送給持久層寫進數(shù)據(jù)庫,由此,ArticleService通過更新后的持久層拿到新文章及其具體信息,Controller層將新數(shù)據(jù)發(fā)送給前端頁面顯示新文章。發(fā)表文章用例實現(xiàn)順序圖如圖7所示。
圖7 發(fā)表文章用例順序圖
2.5.2 評論文章用例對象設計
用戶登錄成功后可以在文章閱讀界面發(fā)表評論,首先界面顯示文章信息,用戶閱讀完后輸入評論,評論通過post請求發(fā)送給Controller層的CommentController類,CommentController類通過AddComment( )方法發(fā)送給CommentService,然后發(fā)送給持久層寫進數(shù)據(jù)庫,CommentService通過更新后的持久層拿到評論內容,Controller層將評論發(fā)送給前端頁面顯示。評論文章用例實現(xiàn)順序圖如圖8所示。
圖8 評論文章用例順序圖
本系統(tǒng)第一個核心功能是文章發(fā)表功能,該功能能使平臺內容豐富,實現(xiàn)用戶間學習交流的重要功能之一。用戶登錄賬號后,進入后臺文章編輯界面,編輯文章內容,選擇文章分類和標簽信息,點擊提交即可發(fā)表文章。Mapper層實現(xiàn)部分代碼如下:
本文總結了IT知識學習交流平臺的系統(tǒng)分析、設計與實現(xiàn)的全過程,系統(tǒng)最終實現(xiàn)了用戶發(fā)表瀏覽文章、評論交流、文章分類等功能,為IT學習者提供了很好的學習交流平臺。本項目主要有兩個特點:
(1)業(yè)務邏輯上簡明直接,目標用戶設定準確,以IT知識學習者為主,為IT知識學習者提供了一個專門學習交流IT知識、梳理學習路線的平臺,目前網絡上雖然有類似的平臺,比如:CSDN,但是CSDN沒有梳理好學習路線,本平臺在實現(xiàn)CSDN的大部分功能的情況下,結合自身學習的狀況,整理出了一條適合大部分初學IT知識的學習路線??傮w而言,本系統(tǒng)可以填補市場空白,有著廣闊的發(fā)展空間。
(2)程序上,由于使用了Spring+SpringMVC+ Mybatis框架(SSM框架),使得項目十分精簡,降低了每個模塊之間的耦合度,便于后期維護,達到了系統(tǒng)的設計目標和整體要求。