摘要:該系統結構合理,功能完善,實現了新聞的動態管理,采用前臺瀏覽和后臺管理雙層架構,前臺部分包括用戶登陸、新聞瀏覽及發布功能,后臺管理則包括新聞添加、修改和刪除功能。該系統用戶分為普通游客和注冊用戶。普通游客可以方便地瀏覽新聞,注冊用戶可以方便、快捷地發布和管理新聞。新聞發布及后臺管理頁面包含身份驗證的內容,未登陸的用戶無法訪問。在系統中設計了一個通用類,方便后臺頁面對數據庫所作的各種操作,比如讀取、寫入或更新數據庫。在各個頁面的上方都添加了其它頁面的鏈接,以便于在不同頁面之間快速切換。在首頁和新聞列表頁面顯示新聞列表的地方使用了GridView控件,以便于格式化地顯示新聞信息。
關鍵詞:新聞管理;ASP.NET;ADO.NET;Browser/Server
中圖分類號:TP311.52文獻標識碼:A 文章編號:1009-3044(2010)01-93-03
Concrete Realization and its Benefits of News Management System
XU Jing-zhong, ZHAO Di
(Department of Automation, Xiamen University, Xiamen 371005,China)
Abstract: This system has realized dynamic management of the news, including foreground view and background management parts, having general function as an news administrative system. Foreground part includes a user login, check and publish news features, the background management includes the news editing and news deleting functions. Registered users can quickly publish and manage news, and guests could read news easily. News issuing and background management pages contain authentication, logged-off users can not access these pages. I have written a foundation class and it’s useful when manipulating database, for instance, reading, writing or updating database. There is hyperlinks directing to other pages on each page, and it will be convenient to switch between different pages. GridView Control is added to home page and news list page, news will be orderly displayed in the GridView.
Key words: news administrative; asp.net; ado.net; Browser/Server
1 需求分析
該系統用于新聞發布,需要具有一個新聞管理系統的基本功能,對其做需求分析,可得一個新聞管理系統應具備的基本功能如下:
1) 前臺新聞查看
2) 后臺新聞管理
①新聞發布
②新聞修改
③新聞刪除
根據以上需求分析,該系統要實現的主要功能為:
1) 前臺新聞查看部分
①用戶登陸
②顯示最新的幾條新聞
③顯示所有新聞
④新聞詳細信息閱讀
2) 后臺管理部分
①登錄驗證
②根據權限顯示相應的管理目錄
③添加、修改和刪除新聞
④管理發布新聞
1.1 新聞管理系統的模型結構
該系統的模型結構如圖1所示。
該系統結構分為三個邏輯層:
Web層:Web層為客戶端瀏覽器提供對應用程序的訪問,這一層是作為解決方案文件中的Web項目實現的。Web層由ASP.NET Web窗體和代碼隱藏文件組成,Web窗體只是用HTML提供用戶操作,而代碼隱藏文件實現各種控件的事件處理程序。
業務層:包含各種業務規則和邏輯的實現,業務規則完成如客戶帳戶的驗證和字符串處理這樣的任務。
數據訪問層:數據訪問層為業務層提供數據服務,這一層是作為解決方案文件中的Conn類(數據訪問類,實現公共操作的一個通用類)實現的。
1.2 新聞管理系統的功能模塊簡介
工作流程為:
打開該系統網站,普通瀏覽者能瀏覽和閱讀新聞,能進行注冊,注冊后為新聞輸入員,登錄進入新聞后臺管理區,具有添加新聞和管理新聞的權限。
在添加新聞時,具有常規的添加新聞標題、新聞內容的選項。
管理新聞功能包括對任一條新聞內容可作相應修改,也可刪除任何一條不再需要保留的新聞。
2 數據庫的設計
該系統使用SQL Server作為應用程序的數據庫,建立了有2張數據表:User表用于存儲帳戶的信息,News表用于存儲新聞內容。具體細節如下:
News表設計如1。
User表設計如表2。
3 Web.config文件配置
ASP.NET應用程序的配置功能放在Web.config文件中,它包含每一個具體Web應用程序的配置信息。在程序運行時,ASP.NET使用分層虛擬目錄結構的Web.config文件提供的配置信息為每個惟一的URL資源計算一組配置設置,然后緩存結果配置設置,以供所有頁面對資源的請求使用。
Web.config文件對于訪問站點的用戶來說是不可見的,而且也是不可訪問的,它基于XML,每個配置文件都包含XML標記和子標記的嵌套層次結構。
新聞管理系統的Web.config文件中的配置:
providerName=\"System.Data.SqlClient\" /> 通過連接字符串“connectionStrings”配置數據庫連接的相關信息,將SQL數據庫文件database.mdf用相對路徑的方式設置為字符串\" database\"在程序代碼中進行連接引用。 4 配置發布主頁 首先要創建虛擬目錄,新建虛擬目錄的步驟如下: 1) 打開IIS(Internet 信息服務),在默認網站上右擊,在快捷菜單中選擇新建—>虛擬目錄; 2) 在彈出的虛擬目錄創建向導對話框里點擊“下一步”; 3) 輸入虛擬目錄別名; 4) 選擇網站內容所在目錄路徑; 5) 設置“訪問”權限。 在所建虛擬目錄上右擊,在彈出菜單中選擇瀏覽,或在瀏覽器里輸入相應網址,都可運行瀏覽程序。虛擬目錄不在目錄列表中顯示(也稱為 WWW 服務的“目錄瀏覽”),要訪問虛擬目錄,用戶必須知道虛擬目錄的別名并在瀏覽器中鍵入 URL。對于 WWW 服務,也可以在 HTML 頁面中創建鏈接。發布網站的時候,把程序首頁的名字(index.aspx或default.aspx)寫在IIS當中就可以訪問了。 5 系統各項功能及其關鍵代碼 5.1 通用類代碼 在所有相關頁面顯示文件和Web用戶控件的代碼隱藏文件.aspx.cs或.ascx.cs中,通過對數據訪問類的引用(以創建類實例方式),調用數據訪問類里的相應函數完成相關功能,如建立數據庫連接、打開和關閉數據庫、對數據庫執行查詢、插入、刪除和更新操作等。 此處列舉AdoSql類(數據訪問類)中關鍵函數的代碼: public class AdoSql {//執行SQL讀取語句 public DataTable ExecuteSqlRead(string SqlString) {//建立數據庫連接字符串 using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[\"database\"].ConnectionString)) { //打開數據庫連接并執行查詢命令,查詢結果返回DataTable類型 conn.Open(); SqlCommand command = new SqlCommand(SqlString, conn); SqlDataAdapter adapter = new SqlDataAdapter(command); DataSet dataSet = new DataSet(); //通過DataAdapter將數據填充到DataSet中 adapter.Fill(dataSet); return dataSet.Tables[0]; }} //執行SQL寫入語句 public static Boolean ExecuteSqlWrite(string SqlString) {//建立數據庫連接字符串 using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[\"database\"].ConnectionString)) { //打開數據庫連接并執行查詢 conn.Open(); SqlCommand command = new SqlCommand(SqlString, conn); command.ExecuteNonQuery(); }return true; } } 5.2 用戶注冊代碼 該系統的內容是需要靠眾多用戶來豐富充實的,而用戶注冊功能提供了給用戶注冊和發布新聞的作用。在首頁里只需點擊注冊按鈕即可注冊,注冊頁面里注冊按鈕的單擊事件處理程序如下: string user = \"\"; string pwd = \"\"; user = txtUserName.Text.Trim();//獲取文本框用戶名 pwd = txtPassword.Text.Trim();//獲取文本框用戶密碼 string SqlString = \"select username from [user] where username='\" + user.Replace(\"'\", \"\") + \"'\"; using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[\"database\"].ConnectionString)) { //建立連接并執行查詢 conn.Open(); SqlCommand command = new SqlCommand(SqlString, conn); //查找當前數據庫中是否存在此用戶名 if (command.ExecuteScalar() == 1) //用戶名未注冊 { //向數據庫中插入此條記錄 string SqlString2 = \"insert into [user] values ('\" + user + \"','\" + pwd + \"')\"; SqlCommand command2 = new SqlCommand(SqlString2, conn); int i = command2.ExecuteNonQuery(); Session[\"UserSession\"] = user; lblMsg.Text = \"注冊成功\"; //提示用戶注冊成功 } else //用戶名已被注冊 { lblMsg.Text = \"用戶名已存在,請重新注冊\"; //清空輸入文本框 txtUserName.Text = \"\"; txtPassword.Text = \"\"; txtConfirm.Text = \"\"; }} 在注冊頁面中用到了RequiredFieldValidator(非空)和CompareValidator(比較)驗證控件,分別用于文本輸入框的非空驗證和驗證兩個輸入框的值是否相等。 服務器端驗證控件是ASP.NET控件中新產生的一種驗證控件,可以在客戶端直接驗證用戶的輸入,但控件必須包含“runat=server”屬性。正常情況下驗證控件是不可見的,當用戶輸入數據錯誤時它們才可見。 6 結論 1) 操作簡單、界面友好:完全控件式的頁面布局,使得新聞的錄入工作更簡便,許多選項只需要點擊鼠標就可以完成。對常見網站的新聞管理的各個方面:新聞錄入、瀏覽、刪除、修改等方面都大體實現,實現了網站對即時新聞的管理要求; 2) 即時可見:對新聞的處理(包括錄入、修改、刪除)將立即在主頁的對應欄目顯示出來,達到“即時發布、即時見效”的功能; 3) 系統運行應該快速、穩定、高效和可靠; 4) 在結構上應具有很好的可擴展性,便于將來的功能擴展和維護。 參考文獻: [1] 天極網新技術研究室.ASP.NET完全入門[M].北京:人民郵電出版社,2001:15-57. [2] Rohilla S.ADO.NET專業項目實例開發[M].陳君,譯.北京:中國水利水電出版社,2003:50-67. [3] 王華杰,李律松,孫一波.C#數據庫開發技術[M].北京:清華大學出版社,2003:44-70. [4] 攀建.ASP.NET+ADO.NET項目開發實例[M].北京:清華大學出版社,2004:143-220. [5] Allen S.C#數據庫入門[M].郝啟堂,張哲峰,譯.北京:清華大學出版社,2003:10-29. [6] 微軟公司. Microsoft .NET Framework 1.1 Class Library Reference[M].北京:清華大學出版社,2004:99-103.