熊宏杰 李祥 余筱
【摘? 要】每年各校讀書協會的同學都會舉行圖書漂流活動,但效果甚微,相應的網站系統雖能實現圖書的交流,但仍不能在圖書的管理和用戶的交互有而很大的改進。圖書流動困難,圖書利用率低。本項目旨在開發一個SSM(spring+springMVC+mybatis)框架的圖書管理系統,與學校網站如信息門戶相結合,將其推廣實現圖書資源的高效利用。本項目的特點在于將實體的圖書漂流角進行網絡虛擬化,提高可管理性,將圖書資源最大化利用建立統一的高校管理服務平臺,提供專業和高質量的學習交流途徑。
【關鍵詞】圖書漂流;SSM;JavaWeb
1.項目背景
1.1項目背景及目標
“圖書漂流角”在每個學校都存在,并且每年各校讀書協會的同學都會舉行圖書漂流活動,但效果甚微。主要的問題在于圖書管理問題難以解決,即使有學生愿意將自己的書籍捐出去,但是過不了多長時間就會丟失,而且想要尋找資源的人往往不能準確迅捷的找到自己的目標,只能在眾多書籍中一一尋找。雖然相應的網站系統能具備圖書的交流功能,但仍不能得到廣泛的支持。一是學生捐獻圖書的意向,因為收集地點的距離消退,而是只有在正規的網站發表和宣傳同學們才能接受圖書漂流這種書籍資源高效利用的新方法,因此可將本項目與學校網站如信息門戶相結合,將其推廣實現圖書資源的高效利用。
本項目的目標是讓更多學生參與圖書漂流,使之在校內流轉,推而廣之,各高校學生之間也可進行相應圖書交流。項目成熟后,我們會為系統升級,實現除圖書資源以外其它資料的交流。本項目實現圖書的簡便管理以方便用戶的操作以及管理員的管理,投放圖書的人會詳細提供圖書信息,此保證書籍的完整和真實。
1.2項目創新特色概述
(1)中通過分類實現自主管理實現用戶輕松使用和管理員輕松管理。
(2)將實體的圖書漂流角進行網絡虛擬化,提高可管理性,將圖書資源最大化利用,建立統一的高校管理服務平臺,提供專業和高質量的學習交流途徑。
2.技術簡介
此系統采用Spring、SpringMVC、Mybatis后端技術進行網站后臺的搭建,使用JQuery、HTML、CSS、JavaScript、Ajax進行前端頁面的編寫,主要技術如下:
2.1 Spring、SpringMVC簡介
Spring是一個開源的、輕量級的Java開發框架,在該網站使用Spring減少了代碼的書寫量,將實例交給spring進行管理,通過Bean進行Java對象、Java組件的管理和處理。在系統創建的過程中使用的是Maven進行項目的管理,減少出錯的概率。
Spring組成:
Spring Core:提供Spring框架的基本功能,提供了依賴注入來實現容器對Bean的管理。
Spring AOP:面向切面編程 ,使用AOP可以將通用邏輯(事務管理、日志管理等)分離出來然后統一切入到業務邏輯代碼中。
Spring DAO:使用JDBC時需要取得連接、創建語句、處理結果、關閉連接,這會導致大量的重復代碼,而SpringDAO模塊抽取了這些重復的代碼,不僅能保證數據庫方位代碼的過程簡潔而且還能防止因數據庫資源關閉失敗而引起的問題。
Spring Context:向Spring框架提供上下文信息。如果說BeanFactory使Spring成為一個容器,那么上下文模塊便使得Spring成為一個框架。
SpringIOC::控制反轉,由Spring來負責對象的生命周期和對象間的關系。主要通過DI(依賴注入)來實現IOC,本系統使用標注注入的方式。注入需要在配置文件中寫大量的代碼為了簡化配置文件,Spring提供了標注注入,常見的注解標記如下:
@Component:通用注解
@Controller:控制層組件注解
@Resource:默認按照名稱進行注入
@Autowired:默認按類型注入
@Service:業務層組件注解
@Value:基本值注入
SpringMVC簡介:
SpringMVC是典型的MVC結構,其提供了模型、視圖和控制器相關的主要實現組件,具體如下:
DispatcherServlet:前端控制器,是SpringMVC的中央調度器,是請求的入口,當請求到達前端控制器,由其來調用其他的組件處理用戶的請求。
HandlerMapping:處理器映射,請求派發,DispatcherServlet會一句HandlerMapping來調用相應的Controller組件
Controller:二級控制器,也可以成為后端控制器,負責具體的請求處理流程,然后將處理結果返回給前端控制器
ModelAndView:模型,封裝了處理結果數據和視圖名稱信息。
ViewResolver:視圖,視圖顯示處理器
SpringMVC常見注解:
@Controller:定義控制器,簡化配置文件,降低侵入性
@Responsebody:放在方法上,表示返回類型將會直接作為HTTP響應字節輸出,此注解可以方便的將數據自動轉換為JSON格式字符轉返回到客戶端。
@RequestMapping:用來定義訪問的URL,放在類級別上,也可以放在方法級別上
@PathVariabble:用來獲取請求URL中的動態參數,在使用SpringMVC創建RESTful API時會用到
2.2 Mybatis技術介紹
Mybatis支持普通SQL查詢,存儲過程和高級映射;對JDBC戶數進行封裝,簡化數據庫操作代碼;使用簡單的XML或注解用于配置和映射,將接口和Java對象映射成數據庫中的記錄。此系統中使用注解的方式對數據庫中的數據進行操作。
按照功能Mybatis可以分為三層,分別是接口層、數據處理層、基礎支撐層。
接口層:作用是和數據庫進行交互,提供可供外部使用的接口,開發人員可以通過這些本地接口來操作數據庫。包括數據的增刪改查,獲取配置接口
數據處理層:是Mybatis的核心層。包括參數映射、SQL解析、SQL執行和結果映射四部分。
基礎支撐層:將共用的組件抽取出來為數據處理層提供最基礎的功能支撐,包含連接管理、事務管理、配置加載和緩存處理。
2.3 Ajax及JQuery、Thymeleaf
JQuery是一個強大的JavaScript庫??梢钥焖?、簡潔的實現JavaScript代碼可以簡化HTML文檔元素的遍歷、事件處理、動畫和Ajax交互可以實現快速的Web開發。
功能:
方便快捷獲取DOM元素:使用純JavaScript的方式遍歷DOM以及查詢DOM中的某一部分,需要編寫冗余的代碼,使用JQuery只需要一行代碼就可以了。
動態修改CSS樣式:使用JQuery可以動態修改頁面的CSS,即使在頁面展現出來以后,JQuery仍然可以改變文檔中某個部分的類或者樣式屬性。
動態改變DOM內容:使用JQuery可以很容易的對頁面DOM進行修改。
響應用戶的教化操作:JQuery提供了截取頁面時間的適當方式,而不需要使用時間處理程序拆散HTML代碼。此外,他的事件處理API也滿足瀏覽器的不一致性。
為頁面添加動態效果:JQuery內置了一批淡入、淡出、擦除等動態效果
JQuery Ajax操作:JQuery統一了多種瀏覽器的Ajax操作。
Thymeleaf是一個XML/XHTML/HTML5模板引擎,可用于Web與非Web環境中的應用開發。它是一個開源的Java庫,Thymeleaf提供了一個用于整合Spring MVC的可選模塊。 使用Thymeleaf可以創建動態的頁面渲染頁面,減少了使用jQuery對頁面進行數據操作,可以實現頁面數據的動態更新等。
此系統中使用JQuery和Ajax實現前后端數據的交互行為。
2.4加密
使用Java自帶的Base64對輸入的重要信息進行加密存儲,保證系統的安全性,防止數據的泄露。
3.系統概述
3.1表現層
本系統的表現層是通過HTML、JQuery、Ajax、CSS技術,以web頁面的方式展示給用戶,在從前端向后端傳輸數據的過程中利用了兩種技術方式,一種是通過form表單的形式,另一種是通過ajax技術的方式,進行前后端的交互,ajax的使用使前后端交互更加便捷,同時可以實現異步刷新的作用,不會每次都刷新整個頁面,這樣極大的提高了用戶的體驗。利用jquery框架可以更容易的對JavaScript進行使用,在部分頁面使用CSS和Thymeleaf對頁面進行渲染。
所需要的主要頁面有:
(1)注冊頁面:用來填寫普通用戶的主要信息。(2)登錄頁面:填寫登錄用戶信息的用戶名和密碼,并進行登錄驗證。(3)主頁:就是用戶進入的首頁,在這里展示的該網站所表達的主題,可以看到網站的功能,可以搜索書籍,查看書籍信息。(4)管理員管理頁面:對管理員進行分級,不同級別的管理員擁有不同的權限。(5)書籍詳情頁:書籍詳情頁顯示的是該書籍的所有信息,包括作者和時間,同時在文章的底部將看到評論的內容,所有用戶對該文章的評論的內容都會顯示在底部。
3.2業務邏輯層
業務邏輯層主要處理前端控制器傳來的請求和數據,后端通過地址映射分發到對應的控制器,進行相應的業務上的邏輯處理,在進行業務邏輯處理的時候,通過springmvc注解的形式。通過注解的形式減少了配置文件的繁瑣,代碼整體看上去更加整潔,維護性起來更加方便,在后端進行控制器,服務接口層,服務實現層的分層排布,同時利用mybatis框架對DAO層進行封裝,在mybtis的DAO文件中寫sql語句,這樣方便修改和便于對sql語句的管理。
服務接口層主要是用來向各個實現方法提供接口,不同的方法根據不同的功能可以對同一個接口進行不同的業務邏輯,接口層的使用讓代碼邏輯看起來更加的清晰,服務實現層主要實現的是對數據的處理,通過調用數據層的方法來從數據庫中取出相應的數據,根據固定返回條件,返回給控制器的業務邏輯中,控制器對返回來的數據進行處理,經過業務邏輯處理,通過Model類進行封裝,返回給前端控制器。
3.3數據層
該層主要對數據進行更新和讀取,作為業務層和數據庫的中間層,主要為邏輯服務提供數據,通過DAO層對數據進行分離,將數據邏輯和數據源進行分離操作,并最終能夠實現對數據對象的基本操作。
數據庫的需求分析:
數據庫需求分析屬于軟件過程的需求分析階段,數據庫分析的作用是通過搜集用戶的需求來指導數據庫的設計。
通過以上分析,現在可以將數據庫的需求整理出來:
(1)用戶信息表:包括用戶名,密碼,電話號碼, (2)用戶角色表:用戶的id,標志位判斷是否是管理員,還是普通用戶,還是超級管理員。(3)內容表,該表存儲了書籍的信息。包括的字段有:書名,簡介,書籍id,書籍編號,標志位判斷內容的分類信息。(4)圖片表:存儲圖片的信息。(5)評論表,該表存儲了對書籍的評論內容,包括評論的內容,評論者,回復對象的用戶名,用戶id,回復對象的id,文章的id.
代碼地址:https://gitee.com/skyspatur/demo
參考文獻
[1]郭炳宇,王田甜等.移動互聯后臺設計與開發[M].北京:高等教育出版社,2017
[2]郭炳宇,王田甜等.移動互聯Web前端開發[M].北京:高等教育出版社,2017
基金項目:江蘇大學2019年度大學生實踐創新訓練計劃項目,項目編號:201910299504X
作者簡介:
熊宏杰(2000.3--),,男,漢族,甘肅華亭人,江蘇大學本科在讀,計算機方向。
李祥(2000.9--),男,漢族,江蘇宿遷人,江蘇大學本科在讀,計算機方向。
余筱(2000.8--),女,漢族,江蘇南京人,江蘇大學本科在讀,計算機方向。