陳焜
【摘 要】本文采用Eclipse4.5+Mysql5.5開發(fā)環(huán)境,結(jié)合JavaWeb、Struts2等多種技術(shù),實(shí)現(xiàn)了一個(gè)新聞發(fā)布系統(tǒng)。通過DTO和DAO實(shí)現(xiàn)數(shù)據(jù)庫層的訪問,而Struts2實(shí)現(xiàn)表現(xiàn)層。軟件經(jīng)過測(cè)試,滿足新聞發(fā)布的需求,也達(dá)到了便于維護(hù)的目的。
【關(guān)鍵詞】Java;Struts2;Web;應(yīng)用
1.引言
當(dāng)今社會(huì)是一個(gè)信息化的社會(huì),新聞作為信息的一部分有著信息量大,類別繁多,形式多樣的特點(diǎn),新聞發(fā)布系統(tǒng)的概念就此提出。新聞發(fā)布系統(tǒng)的提出使電視不再是唯一的新聞媒體,從此以后網(wǎng)絡(luò)也充當(dāng)了一個(gè)重要的新聞媒介的功能。本文用Eclipse4.5和Mysql5.5設(shè)計(jì)一個(gè)新聞發(fā)布系統(tǒng),方便人們的工作和生活。
2.Struts2技術(shù)簡介
Struts 2是Struts的下一代產(chǎn)品,是在 struts 1和WebWork的技術(shù)基礎(chǔ)上進(jìn)行了合并的全新的Struts 2框架。其全新的Struts 2的體系結(jié)構(gòu)與Struts 1的體系結(jié)構(gòu)差別巨大。Struts 2以WebWork為核心,采用攔截器的機(jī)制來處理用戶的請(qǐng)求[1],這樣的設(shè)計(jì)也使得業(yè)務(wù)邏輯控制器能夠與ServletAPI完全脫離開,所以Struts 2可以理解為WebWork的更新產(chǎn)品。雖然從Struts 1到Struts 2有著太大的變化,但是相對(duì)于WebWork,Struts 2的變化很小。
3.系統(tǒng)功能模塊
該系統(tǒng)分如下幾個(gè)模塊:
登錄驗(yàn)證子系統(tǒng):
系統(tǒng)啟動(dòng)時(shí),將出現(xiàn)登錄窗口,要求用戶輸入正確的用戶名和密碼,否則無法進(jìn)入系統(tǒng)。
新聞模塊子系統(tǒng):
本系統(tǒng)中,將所有新聞分到不同的模塊,本子系統(tǒng)就是對(duì)新聞模塊進(jìn)行添加、刪除、修改和瀏覽:
新聞子系統(tǒng):
本子系統(tǒng)對(duì)新聞進(jìn)行添加、刪除、修改和瀏覽:
前臺(tái)子系統(tǒng):
本子系統(tǒng)在前臺(tái)以不同模塊展示所有新聞,并可對(duì)新聞進(jìn)行搜索,點(diǎn)擊新聞后可以查看新聞詳細(xì)信息。
4.關(guān)鍵實(shí)現(xiàn)技術(shù)
4.1數(shù)據(jù)庫設(shè)計(jì)
4.2 DB類
由于該系統(tǒng)多處需要連接數(shù)據(jù)庫然后執(zhí)行SQL命令,為了提高代碼的重用率,減少代碼冗余,便于以后維護(hù),故將所有操作數(shù)據(jù)庫的代碼放到一個(gè)名為DB的類中,在該類中定義一個(gè)連接類型的字段,在構(gòu)造函數(shù)中實(shí)現(xiàn)數(shù)據(jù)庫的連接。
4.3 DTO與DAO
DTO是Data Transfer Object數(shù)據(jù)傳輸對(duì)象,這個(gè)對(duì)象封裝你需要傳輸?shù)臄?shù)據(jù) 在模型,視圖,控制這三個(gè)層傳遞[2]。根據(jù)上述三張數(shù)據(jù)表,對(duì)應(yīng)的本系統(tǒng)使用了三個(gè)DTO:adminDto、moduleDto、newsDto。并且由于moduleDto與newsDto是一對(duì)多的關(guān)系,所以在moduleDto中有List
DAO是Data Access Object數(shù)據(jù)訪問接口,數(shù)據(jù)訪問:故名思義就是與數(shù)據(jù)庫打交道。夾在業(yè)務(wù)邏輯與數(shù)據(jù)庫資源中間。本系統(tǒng)使用了三個(gè)DAO:adminDAO、moduleDAO、newsDAO,這些DAO的功能主要是根據(jù)系統(tǒng)的業(yè)務(wù)邏輯而定,主要是對(duì)三張數(shù)據(jù)表的增刪改查,但是它們所有的方法使用的參數(shù)及返回值是DTO或DTO列表。
4.4權(quán)限管理的實(shí)現(xiàn)
本系統(tǒng)要求用戶登錄成功后才能查看系統(tǒng)中的某個(gè)視圖資源;否則直接轉(zhuǎn)入登錄頁面。對(duì)于上面的需求,可在每個(gè)Action執(zhí)行實(shí)際處理邏輯之前,先執(zhí)行權(quán)限檢查邏輯,但這種做法不利于代碼復(fù)用。因?yàn)榇蟛糠諥ction里的權(quán)限檢查代碼都大同小異,故將這些權(quán)限檢查邏輯放在攔截器中將會(huì)更加優(yōu)雅。
檢查用戶是否登錄,通常都是通過跟蹤用戶的HTTP Session來完成的,通過ActionContext即可訪問到Session中的屬性,攔截器的intercept(ActionInvocation arg0)方法的agr0參數(shù)可以很輕易地訪問到請(qǐng)求相關(guān)的ActionContext實(shí)例。同時(shí)可以在攔截器中實(shí)現(xiàn)亂碼的處理:
5 .結(jié)束語
本系統(tǒng)的開發(fā)環(huán)境為Eclipse4.5,以Mysql5.5為后臺(tái)數(shù)據(jù)庫支撐環(huán)境,設(shè)計(jì)出了有實(shí)用價(jià)值的新聞發(fā)布系統(tǒng),該系統(tǒng)與同類系統(tǒng)相比,不僅性能較高、運(yùn)行較為穩(wěn)定,而且可維護(hù)性和可擴(kuò)展型都比較出色。
參考文獻(xiàn):
[1] 李剛. Struts 2.x權(quán)威指南第三版[M].電子工業(yè)出版社,2012,10.
[2] 李剛.輕量級(jí)Java EE企業(yè)應(yīng)用實(shí)戰(zhàn)第四版[M].電子工業(yè)出版社,2014,10.