李宗毅
摘要:該文針對(duì)傳統(tǒng)新聞發(fā)布系統(tǒng)存在的問(wèn)題,設(shè)計(jì)并實(shí)現(xiàn)了基于Web的新聞發(fā)布系統(tǒng)。根據(jù)動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)的工作原理,該新聞發(fā)布系統(tǒng)的開(kāi)發(fā)以VisualStudio作為平臺(tái),使用VB.NET網(wǎng)絡(luò)程序設(shè)計(jì)語(yǔ)言、SQL Server數(shù)據(jù)庫(kù)技術(shù),開(kāi)發(fā)出基于Web的新聞發(fā)布系統(tǒng)。新系統(tǒng)的研究開(kāi)發(fā)對(duì)實(shí)際工作有實(shí)際意義,能大大提高信息傳播的效率,保證新聞的準(zhǔn)確性和時(shí)效性。
關(guān)鍵詞:新聞發(fā)布系統(tǒng);B/S;VB.NET;網(wǎng)頁(yè)設(shè)計(jì);數(shù)據(jù)庫(kù)
中圖分類號(hào):TP311? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2021)10-0087-03
1 引言
部分學(xué)校所使用的新聞發(fā)布系統(tǒng)是靜態(tài)網(wǎng)站,隨著信息發(fā)布量的增加,問(wèn)題日益突出:信息發(fā)布的過(guò)程煩瑣,不支持動(dòng)態(tài)信息查詢,費(fèi)時(shí)費(fèi)力,時(shí)效性難以達(dá)到。學(xué)校遇到的問(wèn)題通過(guò)基于WEB的新聞發(fā)布系統(tǒng)就能解決。動(dòng)態(tài)網(wǎng)頁(yè)的工作原理:客戶端通過(guò)瀏覽器URL地址的形式向服務(wù)器發(fā)出訪問(wèn)Web網(wǎng)頁(yè)的請(qǐng)求,服務(wù)器收到請(qǐng)求后查詢數(shù)據(jù)庫(kù)找到內(nèi)容,編譯程序代碼,發(fā)送網(wǎng)頁(yè)到客戶端。
2 系統(tǒng)開(kāi)發(fā)理論基礎(chǔ)
筆者實(shí)現(xiàn)新聞發(fā)布系統(tǒng)采用基于數(shù)據(jù)庫(kù)的方法,該方法優(yōu)點(diǎn)在于系統(tǒng)維護(hù)方便。系統(tǒng)架構(gòu)為B/S架構(gòu),客戶借助瀏覽器就能夠輕松地獲取網(wǎng)上由多種Web 服務(wù)器生成的各種各樣的數(shù)據(jù)資源[1]。系統(tǒng)模型使用三層架構(gòu)模型開(kāi)發(fā)。三層架構(gòu)對(duì)易變、核心的業(yè)務(wù)邏輯以組件的形式加以封裝,在邏輯上將應(yīng)用分成獨(dú)立的三層:用戶表示層、應(yīng)用邏輯層、數(shù)據(jù)訪問(wèn)層,三層間的邏輯劃分明確,使各層間的耦合性降到最低,架構(gòu)具有較好的靈活性、易維護(hù)性和可重用性[2]。系統(tǒng)的表現(xiàn)層使用html、css+div布局方法,該方法很好地解決了表現(xiàn)層與其他層的分離。數(shù)據(jù)層使用sqlserver,該數(shù)據(jù)庫(kù)性能強(qiáng),滿足大的并發(fā)訪問(wèn)量。程序設(shè)計(jì)采用ASP.NET,ASP.NET是微軟公司推出的編程框架,兼容主流的編程語(yǔ)言。整個(gè)系統(tǒng)使用VisualStudio作為開(kāi)發(fā)工具。
3系統(tǒng)功能設(shè)計(jì)
在使用動(dòng)態(tài)新聞發(fā)布系統(tǒng)的解決方案下,將系統(tǒng)分解為后臺(tái)、前臺(tái)兩部分,功能結(jié)構(gòu)設(shè)計(jì)如圖1所示。
4數(shù)據(jù)庫(kù)設(shè)計(jì)
對(duì)于新聞發(fā)布系統(tǒng),其核心活動(dòng)是新聞信息(包含新聞、文件、視頻、通知),普通管理員與新聞信息是通過(guò)編輯發(fā)表產(chǎn)生聯(lián)系的,訪客與新聞信息是通過(guò)查詢?cè)L問(wèn)產(chǎn)生聯(lián)系的。其次系統(tǒng)管理員和普通管理員是通過(guò)授權(quán)產(chǎn)生聯(lián)系。因此,此系統(tǒng)E-R圖如圖2。
本系統(tǒng)采用SQL Server數(shù)據(jù)庫(kù)系統(tǒng)。首先,在站點(diǎn)根目錄建立app_data文件夾,用于存放數(shù)據(jù)庫(kù)。后面很多程序頁(yè)面用到的|DataDirectory| 就是指app_data這個(gè)目錄,該目錄是專門(mén)用來(lái)放數(shù)據(jù)庫(kù)的,即使知道數(shù)據(jù)庫(kù)文件具體路徑也無(wú)法下載。其次,新建一個(gè)數(shù)據(jù)庫(kù)將它命名為KFScode。最后,依據(jù)各實(shí)體的基本屬性,在該數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)表。重要數(shù)據(jù)表如下所示。
5 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)
5.1自定義控件程序設(shè)計(jì)
ASP.NET提供的服務(wù)器控件具有十分強(qiáng)大的功能,但是在實(shí)際工作中,會(huì)遇到更復(fù)雜的問(wèn)題。自定義控件是一項(xiàng)十分靈活的新興技術(shù),具有可編程性和可復(fù)用性[3]。為了解決這個(gè)問(wèn)題,可以編寫(xiě)符合自己需求的控件。系統(tǒng)所設(shè)計(jì)的用戶控件為:導(dǎo)航條header.ascx、底部信息條Footer.ascx、站內(nèi)搜索search.ascx、用戶登錄控件login.ascx。這里以用戶登錄控件為例介紹,用戶登錄控件用于用戶登錄和管理員登錄。系統(tǒng)登錄流程為:1)驗(yàn)證登錄;2)查詢相關(guān)權(quán)限;3)進(jìn)入系統(tǒng)并獲得相應(yīng)菜單[4]。這里用到的數(shù)據(jù)表是admin數(shù)據(jù)表,界面設(shè)計(jì)上用到兩個(gè)文本框、一個(gè)按鈕,一個(gè)標(biāo)簽控件。當(dāng)用戶點(diǎn)擊確定按鈕后,文本框接收的用戶名和密碼會(huì)經(jīng)過(guò)哈希算法加密,通過(guò)session存儲(chǔ)數(shù)據(jù),驗(yàn)證登錄。如果用戶名不在admin數(shù)據(jù)表中或密碼不正確,則無(wú)法登錄。如果驗(yàn)證通過(guò),則進(jìn)入下個(gè)環(huán)節(jié),判斷用戶權(quán)限,依據(jù)權(quán)限進(jìn)入不同的管理權(quán)限頁(yè)面。登錄模塊算法流程圖如圖3所示。
5.2新聞發(fā)布系統(tǒng)后臺(tái)管理程序設(shè)計(jì)
1)普通新聞添加功能
Admin_newsadd.aspx用于實(shí)現(xiàn)普通新聞添加功能,該web頁(yè)面使用到文本框、下拉列表、多行文本框、命令按鈕等控件。普通新聞添加模塊算法流程圖如圖5所示。
這里算法的難點(diǎn)是過(guò)濾HTML字符。內(nèi)容寫(xiě)入數(shù)據(jù)庫(kù)過(guò)程中出現(xiàn)禁用符號(hào)(如”<、>、引號(hào)、換行符、&等”)會(huì)出錯(cuò),因此需要對(duì)禁用符號(hào)進(jìn)行處理。使用replace函數(shù)將禁用符號(hào)用其它符號(hào)代替。實(shí)現(xiàn)過(guò)濾HTML字符的代碼如下:Request.Form("content0").Replace("<", "<").Replace(">",">").Replace(" ", " ").Replace(Chr(34), """).Replace(Chr(13), "
")。發(fā)布新聞的作者和時(shí)間由系統(tǒng)直接賦值。使用session里存儲(chǔ)的登錄帳號(hào)直接賦值給程序,發(fā)文時(shí)間使用today() 函數(shù)賦值給程序。發(fā)布頁(yè)面使用代碼分離技術(shù)。在ASP.NET中利用code_behind表單可以使HTML代碼與實(shí)現(xiàn)其功能的代碼分開(kāi), 分別放在不同的文件中實(shí)現(xiàn)表示層與模型相分離。在這里,Admin_newsadd.aspx是前臺(tái)代碼,Admin_newsadd.aspx.vb是后臺(tái)代碼。提交新聞后會(huì)跳轉(zhuǎn)到附件頁(yè)面,被詢問(wèn)是否添加附件,如“是”,則鏈接到附件添加頁(yè)面,否則完成新聞添加并返回管理頁(yè)面。
2)圖片上傳程序
在網(wǎng)站中,上傳文件到服務(wù)器是一個(gè)開(kāi)發(fā)中常見(jiàn)的問(wèn)題。ASP.NET提供了一個(gè)FileUpload控件,可以更加簡(jiǎn)單地完成文件上傳的工作。注意,為input元素增加type=”file”的屬性,相應(yīng)地,在form表單中使用這種input的時(shí)候,表單的method必須為post方式,同時(shí),表單的enctype也必須為multipart/form-data。本系統(tǒng)中圖片上傳程序Admin_appendix.aspx就使用到了FileUpload控件。
附件上傳程序Admin_appendix.aspx重點(diǎn)解析,重命名上傳的文件名稱使用了多個(gè)函數(shù)處理now()函數(shù)得出,分別是replace函數(shù)、mid函數(shù)。即rnfilename = Replace(Replace(Replace(Now(), "-", ""), ":", ""), " ", "")。后面是后綴名的添加rnfilename = rnfilename & Mid(filename, filename.LastIndexOf(".") + 1)。并用到了ASP.NET內(nèi)部對(duì)象server的mappath方法。顯示附件信息使用message.innerhtml。
5.3新聞發(fā)布系統(tǒng)前臺(tái)程序設(shè)計(jì)
1)顯示新聞詳細(xì)內(nèi)容(shownews.aspx)-三級(jí)界面程序設(shè)計(jì)
顯示新聞詳細(xì)內(nèi)容頁(yè)面shownews.aspx用于將具體新聞信息標(biāo)題、作者、內(nèi)容、附件等詳細(xì)信息顯示出來(lái)。該web頁(yè)面是新聞發(fā)布系統(tǒng)的重點(diǎn),要求內(nèi)容的排版整齊、美觀,并實(shí)際測(cè)試頁(yè)面效果。該web頁(yè)面實(shí)現(xiàn)恢復(fù)HTML字符是個(gè)難點(diǎn),它通過(guò)下面代碼實(shí)現(xiàn)<%#Server.Htmldecode(DataBinder.Eval(Container, "DataItem.News_content"))%>。具體實(shí)現(xiàn)步驟:新建web窗體命名為shownews.aspx,并存放在網(wǎng)站根目錄下。然后在web頁(yè)面上添加自定義控件、repeater控件、label標(biāo)簽控件。
顯示新聞詳細(xì)內(nèi)容shownews.aspx使用了代碼分離模式,代碼位于shownews.aspx.vb文件中。該web頁(yè)面中多圖的顯示是個(gè)難點(diǎn),這里用到分支結(jié)構(gòu)、數(shù)組、循環(huán)結(jié)構(gòu)來(lái)實(shí)現(xiàn)。具體是定義imgurl()為變長(zhǎng)數(shù)組,用它來(lái)接收多圖文件名信息,然后用for循環(huán)結(jié)構(gòu)依次將imgurl數(shù)組從0到upbound(imgurl)讀取出來(lái),最后結(jié)合label標(biāo)簽控件依次將每個(gè)數(shù)組元素顯示成圖片并換行。最終實(shí)現(xiàn)多圖顯示。
6結(jié)束語(yǔ)
本新聞發(fā)布系統(tǒng)提高了工作效率。該系統(tǒng)隨著校園信息化進(jìn)程的深入,會(huì)和更多校園資源網(wǎng)整合在一起,新聞發(fā)布只是最簡(jiǎn)單的一個(gè)應(yīng)用,后面還會(huì)有成績(jī)管理系統(tǒng),在線考試系統(tǒng)、學(xué)籍管理系統(tǒng)、教師管理系統(tǒng)、圖書(shū)管理系統(tǒng)、招生就業(yè)信息系統(tǒng)等等。當(dāng)這些信息管理系統(tǒng)整合在一起后,會(huì)形成較完整的校園網(wǎng)。信息化系統(tǒng)給校園內(nèi)外帶來(lái)的方便將無(wú)處不在。
參考文獻(xiàn):
[1] 王瑾.基于B/S模式的高校畢業(yè)生就業(yè)信息管理系統(tǒng)設(shè)計(jì)[J].自動(dòng)化與儀器儀表,2017(12):95-97.
[2] 宗梅,馬小平.基于.Net的三層Client/Server結(jié)構(gòu)及其應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2005,26(2):520-522.
[3] 鄭秋梅,劉真,蘇政,等.基于Android的自定義通用可視化控件[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2017,26(1):222-226.
[4] 廖亮,劉瑛.基于VB.net和SQL Server的權(quán)限動(dòng)態(tài)管理的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2017,13(36):1-3.
【通聯(lián)編輯:唐一東】