楊陽
摘 要:隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,人們的互聯(lián)網(wǎng)思維也越來越成熟,很多人期望在互聯(lián)網(wǎng)中更好地展現(xiàn)自己。傳統(tǒng)的博客系統(tǒng)由于功能固定而缺少靈活性。提出了一種基于Struts2、Spring和Hibernate框架的個性化博客系統(tǒng),該系統(tǒng)能幫助人們設(shè)計自定義博客,從而達到更好地展示網(wǎng)民個性的目的。
關(guān)鍵詞:個性化博客;SSH;Struts2+;Spring+;Hibernate
DOIDOI:10.11907/rjdk.162409
中圖分類號:TP319
文獻標識碼:A文章編號:1672-7800(2016)012-0074-03
0 引言
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,互聯(lián)網(wǎng)人群網(wǎng)絡(luò)素養(yǎng)越來越高。人們不再僅僅局限于在微信、微博、QQ互聯(lián)等應(yīng)用中作為信息的接受者,而是渴求擔(dān)當信息的制造者和發(fā)布者。在這個人人都能運營自媒體的Web3.0時代,個人獨特的見解和所產(chǎn)生的信息價值正深刻改變并指引著互聯(lián)網(wǎng)的發(fā)展。以博客技術(shù)為代表的互聯(lián)網(wǎng)應(yīng)用,作為一種全新的載體承載著人們個性化的表達與展示。針對信息內(nèi)容生產(chǎn)者的互聯(lián)網(wǎng)博客應(yīng)用系統(tǒng)有多種形式,如新浪博客,性能穩(wěn)定、容量無限,但存在可擴展性較差的問題,人們只能使用系統(tǒng)提供的固有功能,而不能將個人的想法融入到博客設(shè)計中。鑒于此,本文提出了基于Struts2、Spring和Hibernate框架(統(tǒng)稱SSH框架)的個性化博客系統(tǒng)。在SSH框架下,使用者可根據(jù)自己的需要,規(guī)劃博客系統(tǒng)功能,制作個人特色的系統(tǒng)界面,從而更好地在互聯(lián)網(wǎng)時代展示自己。
1 系統(tǒng)框架
1.1 基于MVC模式的Struts2
基于WebWork,Struts2發(fā)展為MVC[1]框架,它創(chuàng)造性地將數(shù)據(jù)庫邏輯(Model層)、頁面展示(View層)與邏輯控制(Controller層)分離,從而使整個應(yīng)用程序代碼更加健壯、優(yōu)雅。當獲取客戶端發(fā)送的請求后,作為控制器的過濾器類StrutsPrepareAndExecuteFilter,根據(jù)struts-config.xml中的配置,調(diào)用Action類中的執(zhí)行方法。該方法在經(jīng)過Model層計算后,控制器向客戶端呈現(xiàn)顯示頁面。Struts2的MVC模式有效增強了信息系統(tǒng)的復(fù)用性和可維護性[2]。
1.2 基于IoC和AOP的Spring
Spring是一個輕量級、一站式的Java企業(yè)級應(yīng)用解決方案,它提供選擇式的功能集成。本文使用Spring的IoC(Inversion of Control,控制反轉(zhuǎn))[3]和AOP(Aspect-Oriented Programming,面向切面編程)[4]功能模塊。其中,控制反轉(zhuǎn)IoC主要指由宿主容器完成依賴對象的初始化和注入,而不是傳統(tǒng)應(yīng)用程序中主動去獲取所依賴對象。面向切面編程AOP則是對面向?qū)ο缶幊蘋OP的重要補充,它將散布在核心功能代碼周圍的權(quán)限控制、日志打印、事務(wù)管理等業(yè)務(wù)功能抽取出來,形成橫斷切面,從而降低程序耦合度、提高內(nèi)聚性。
1.3 基于O/R-Mapping的Hibernate
Hibernate是流行的對象/關(guān)系映射(ORM)框架[5],它將程序數(shù)據(jù)以類表映射的形式持久化到數(shù)據(jù)庫,從而使程序數(shù)據(jù)獲得JVM之外的生命周期。這種對象/關(guān)系映射支持繼承、多態(tài)、關(guān)聯(lián)、組合、集合等多種面向?qū)ο蟮奶卣骱托问健3酥?,Hibernate還支持加載、多種抓取策略,基于自動版本和時間戳的鎖機制,從而提高應(yīng)用程序性能。在可伸縮性方面,Hibernate既適合內(nèi)部網(wǎng)中小規(guī)模訪問級別應(yīng)用,也服務(wù)于并發(fā)量高的集群式應(yīng)用;在可靠性和擴展性方面,Hibernate具有良好的穩(wěn)定性和可配置性。
1.4 SSH整合
SSH指Struts2、Spring、Hibernate三大框架整合實現(xiàn)MVC模式架構(gòu),以達到程序系統(tǒng)的穩(wěn)定性、安全性、高效性。與傳統(tǒng)的EJB(企業(yè)級JavaBean)[6]相比,SSH是輕量級的企業(yè)級應(yīng)用框架,強調(diào)低侵入性、組件間的松散耦合以及分層性,從而能夠快速適應(yīng)需求變更和問題定位,極大提高了程序開發(fā)效率。在整合過程中,由Spring起中心橋接作用,分別將Spring與Struts、Hibernate整合,并進行單元(JUnit)測試,從而完成從應(yīng)用表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層的連接貫通。
2 系統(tǒng)功能
在信息量急度膨脹時代,每個人都作為一個信息源存在。如何快速保存、整理、升華個人思想,并在互聯(lián)網(wǎng)中進行交流、溝通、傳播,是目前互聯(lián)網(wǎng)應(yīng)用亟待解決的問題。針對這些問題,本文試圖從個性化博客方向作一些嘗試和努力。首先,博客是個人自我展示的陣地和平臺,可以通過博客宣傳個人觀點、看法以及認識;其次,通過博客可以實現(xiàn)問題的開放交流、討論;第三,用戶可以定制功能模塊,如相冊、頁面皮膚、裝飾等。在安全方面,既要有認證、授權(quán)功能,也要保證會話管理中用戶個性化信息安全;在性能方面,可通過反向代理服務(wù)器、連接池、一二級緩存等措施來加速應(yīng)用程序。
基于以上目標,本文個性化博客系統(tǒng)具有以下基本功能,如圖1所示。
(1)文章編輯發(fā)布模塊。該模塊集成百度的富文本編輯器UEditor,支持可視化編輯和HTML代碼編輯。發(fā)布前支持預(yù)覽和按時間自動保存草稿功能,編輯完成后可設(shè)定文章分類和權(quán)限公開程度。
(2)文章列表展示模塊。該模塊分布在首頁和后臺管理頁面中。在首頁,文章列表支持分頁顯示和動態(tài)加載,同時支持基于主題和內(nèi)容的信息檢索。在后臺管理頁面,采用EasyUI前端框架展示文章的增刪改查操作。
(3)首頁界面裝飾模塊。該模塊主要提供頁面元素拖拉式排版、背景調(diào)色和頁面皮膚換膚功能,同時提供首頁配飾的增加,如小時鐘、HTML5動態(tài)小游戲、音樂視頻等。
(4)留言管理模塊。該模塊在于加深博主、訪客及朋友之間的交流,在展現(xiàn)形式上支持樹形列表。每當有新的留言和回復(fù),都將以站內(nèi)信息的形式通知接受方。
(5)相冊上傳下載模塊。支持多照片和視頻上傳,并為上傳照片增加自定義水印。在相片展示時,可設(shè)定瀏覽權(quán)限和相冊封面。
(6)安全功能模塊。根據(jù)用戶權(quán)限設(shè)置操作權(quán)限,對用戶進行權(quán)限分類管理。
除了以上功能外,還需要額外增加其它輔助功能,如日志管理、數(shù)據(jù)校驗、多用戶管理等。
3 關(guān)鍵技術(shù)分析
3.1 Struts2、Spring、Hibernate整合
三大框架的整合過程包括兩個階段[7]:①Struts2與Spring整合;②Spring與Hibernate整合。對于第一階段,要在web.xml中分別加入Spring初始化容器對象的監(jiān)聽器ContextLoaderListener、Struts2的核心過濾器StrutsPrepareAndExecuteFilter, 還需要加入Struts2與Spring之間的整合包,這樣,在配置文件struts.xml中,配置元素action的class屬性不再是類全稱,而是Spring容器中已配置的bean名稱。對于第二階段,只需將SessionFactory實例交給Spring容器管理,即在applicationContext.xml中指明數(shù)據(jù)庫連接池相關(guān)信息、hibernate配置文件所在位置。另外,配置聲明式事務(wù)管理。在進行上述配置后,通過簡單的增刪改查測試完成整合檢驗。
3.2 DAO設(shè)計模式
DAO(Data Access Object)設(shè)計模式是J2EE中常用的設(shè)計模式。通過DAO接口和DAO實現(xiàn)類,將數(shù)據(jù)庫底層操作和高層業(yè)務(wù)邏輯分離。針對每個實體對象,都有相對應(yīng)的DAO接口和DAO實現(xiàn)類。而對于各個DAO接口中的重復(fù)操作,可以抽取出來形成泛型類BaseDao
3.3 基于Shiro的權(quán)限安全管理
Apache Shiro是簡單易用的Java安全處理框架,其提供了認證、授權(quán)、加密以及會話管理等功能。傳統(tǒng)的用戶認證授權(quán)常常采用基于URL攔截的形式,將權(quán)限操作對應(yīng)的URL加入到數(shù)據(jù)表的字段中,將過濾器中獲取的訪問URL與用戶對應(yīng)角色所擁有的權(quán)限表中的url字段相比對,成功后繼續(xù)訪問資源。這種方式的開發(fā)效率和安全性較低,一般使用成熟的權(quán)限管理框架。Shiro作為一款輕量級框架,可以實現(xiàn)B/S、C/S、分布式系統(tǒng)的權(quán)限管理,已被越來越多的開發(fā)人員所使用。Shiro中有一個重要的概念:Realm,通過自定義的Realm可以獲取數(shù)據(jù)庫中的用戶、角色及權(quán)限信息。通過Shiro配置式的管理方式,簡化了權(quán)限管理操作,增強了系統(tǒng)的結(jié)構(gòu)性和整體性。
4 系統(tǒng)實現(xiàn)
4.1 數(shù)據(jù)庫設(shè)計
系統(tǒng)基本實體類包括用戶類、文章類、留言類、權(quán)限類、相冊類、相片類。每個實體類在數(shù)據(jù)庫中都有一張對應(yīng)的表結(jié)構(gòu)。本系統(tǒng)采用MySQL數(shù)據(jù)庫。鑒于篇幅有限,本文僅給出用戶、文章的實體表結(jié)構(gòu),如表1、表2所示。
根據(jù)業(yè)務(wù)需求,實體類與實體類之間發(fā)生關(guān)聯(lián)關(guān)系,如圖2所示。
4.2 系統(tǒng)流程設(shè)計
系統(tǒng)流程如圖3所示,分為瀏覽首頁、登錄注冊、驗證、系統(tǒng)管理4個部分。首先,用戶輸入系統(tǒng)網(wǎng)址瀏覽博客首頁,需要進行賬戶注冊。然后根據(jù)注冊帳號登錄,登錄過程中涉及到基于Shiro的認證和授權(quán)過程。進入系統(tǒng)管理界面后,既可以對博客進行個性化自定義設(shè)置,也可以對博客文章、圖片、評論進行綜合管理。
4.3 系統(tǒng)配置文件
根據(jù)系統(tǒng)框架和功能,系統(tǒng)配置以下文件,分別是Spring容器配置文件applicationContext.xml、 Struts2配置文件struts.xml、Hibernate實體/關(guān)系映射配置文件xxx.hbm.xml、日志配置文件log4j.xml、Shiro、Spring的整合配置文件applicationContext-shiro.xml以及web.xml。下面給出web.xml配置代碼:
<?xml version="1.0" encoding="UTF-8"?>
xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
5 結(jié)語
本文提出了一種基于SSH框架的個性化博客系統(tǒng)設(shè)計與實現(xiàn)方法,分別介紹了Struts2、Spring、Hibernate的特點及功能。在關(guān)鍵技術(shù)方面,提供了三大框架的整合方法、DAO設(shè)計模式以及基于Shiro的權(quán)限安全框架實施方案。在系統(tǒng)實現(xiàn)方面,對數(shù)據(jù)庫設(shè)計、系統(tǒng)流程設(shè)計及系統(tǒng)配置文件進行了討論。作為一款個性化博客系統(tǒng),重在強調(diào)用戶的個性化定制操作,展示個人觀點的特色頁面和用戶交流組件。
參考文獻:
[1] PRAVEEN GUPTA,PROF M C GOVIL.MVC design pattern for the multi framework distributed applications using XML,spring and struts framework[J].International Journal On Computer Science And Engineering,2010, 2(4):1047-1051.
[2] 林萍.基于SSH+DWR的高??蒲泄芾硐到y(tǒng)研究與實現(xiàn)[J].計算機應(yīng)用與軟件,2014,31(7):164-168.
[3] 閻娟娟,陳波,高秀娥.基于SSH架構(gòu)的INQAS的設(shè)計與實現(xiàn)[J].計算機應(yīng)用與軟件,2010,27(3):22-26.
[4] 劉榮輝,薛冰.基于Annotation的Spring AOP系統(tǒng)設(shè)計[J].計算機應(yīng)用與軟件,2009,26(9):264-267.
[5] 吳茂昌,陽玉琴.基于MVC模式的Java主流框架整合技術(shù)研究[J].計算機與數(shù)字工程,2009,37(10):91-92.
[6] 陳立巖.EJB組件技術(shù)及應(yīng)用[J].計算機技術(shù)與發(fā)展,2007,17(3):458-461.
[7] 劉靜,刑藏菊,龔凡蕾.基于SSH的高校MBA管理系統(tǒng)設(shè)計與實現(xiàn)[J].計算機應(yīng)用與軟件,2011,28(11):157-159.
(責(zé)任編輯:杜能鋼)