<=date >
個人博客網站的設計與實現0911070419 宋雨第一章 引言博客,又譯為網絡日志、部落格或部落閣等,是一種通常由個人管理、不定期張貼新的文章的網站。博客上的文章通常根據張貼時間,以倒序方式由新到舊排
個人博客網站的設計與實現
0911070419 宋雨
第一章 引言
博客,又譯為網絡日志、部落格或部落閣等,是一種通常由個人管理、不定期張貼新的文章的網站。博客上的文章通常根據張貼時間,以倒序方式由新到舊排列。許多博客專注在特定的課題上提供評論或新聞,其他則被作為比較個人的日記。一個典型的博客結合了文字、圖像、其他博客或網站的鏈接、及其它與主題相關的媒體。能夠讓讀者以互動的方式留下意見,是許多博客的重要要素。大部分的博客內容以文字為主,仍有一些博客專注在藝術、攝影、視頻、音樂、播客等各種主題。博客是社會媒體網絡的一部分。
博客秉承了個人網站的自由精神,但是綜合了激發(fā)創(chuàng)造的新模式,使其更具開放和建設性。它作為一種新表達的方式,它的傳播不僅情緒,包括大量的智慧、意見和思想。某種意義上說,它也是一種新的文化現象,博客的出現和繁榮,真正凸現網絡的知識價值,標志著互聯網發(fā)展開始步入更高的階段。
第二章 系統(tǒng)分析
博客網站系統(tǒng)的總目標是:在計算機網絡,數據庫和先進的開發(fā)平臺上,利用現有的軟件,配置一定的硬件,開發(fā)一個具有開放體系結構的、易擴充的、易維護的、具有良好人機交互界面的個人博客網站,為網絡用戶提供進行在線交流的網絡平臺。
通過個人博客網站可以結交更多的朋友,表達更多的想法,它隨時可以發(fā)布文章。 具體的要求如下:
1). 博主可以簡單的添加和刪除文章;
2). 獨立于具體的數據庫平臺。對于與數據庫交互的部分充分考慮兼容性;
3). 容易在原先基礎上進行二次開發(fā);
4). 中間基礎平臺的無型性。盡量采用開放的標準技術,達到跨平臺運行的效果;
為了達到以上的開發(fā)目的,個人博客網站應遵循一定的設計和開發(fā)與原則:
1). 模塊接口定義清晰;
2). 基礎類庫和接口設計合理,盡量建立叮擴展的接口和抽象類;
3). 數據庫操作使用標準SQL 語句,如果一定要使用有差別的SQL 語句,則盡量集中在一起,以減少將來維護和移植的難度;
4). 采用開放的標準和工具等;
,第三章 總體設計
3.1項目規(guī)劃
博客系統(tǒng)通常提供三類服務:
1). 信息服務,它可分為:博文顯示,評論顯示,分類顯示
2). 留言服務:游客可以對博文發(fā)表看法意見
3). 管理服務:博主可以對自己的博客進行各種管理
在此,我參考現有的幾大博客網站如QQ 空間,新浪博客等,采用Browser/Server結構,將個人博客網站劃分為兩個子系統(tǒng):前臺,后臺。
下面分析各個子系統(tǒng)的功能需求。
3.1.1 前臺
在前臺的功能實現上,可以分為以下幾個部分:
1). 博文主頁:
游客可以瀏覽博客的首頁,首頁包括博文的摘要及分類。
2). 博文瀏覽:
游客可以瀏覽博客中感興趣的博文。。
3). 博文評論:
游客可以在瀏覽博文的同時進行對博文的評論。
3.1.2后臺
通過計算機網絡將前臺與后臺的數據庫相連,網站管理員將從前臺得到的信息進行處理,實現文章管理,公告管理,投票管理,個人相冊管理,朋友圈,用戶設置及博主設置等子系統(tǒng)。
1). 博主登陸:
博客主人用帳號,密碼登錄到網站。網站檢測用戶的帳號,密碼并給予管理員權限對網站進行操作
2). 博文發(fā)布:
發(fā)布博文,包括博文標題,內容及分類。
3). 博文管理:
對博客中的文章進行刪除,更新等操作。
4). 添加分類:
對博文的分類進行添加,包括分類名稱及顯示級別。
,5). 分類管理:
對博客中的分類進行刪除,更新等操作。
6). 評論管理:
對博客中的評論進行刪除,更新等操作。
7). 修改密碼:
修改博主賬號的密碼。
3.2系統(tǒng)功能結構圖
前臺:
后臺:
第四章 系統(tǒng)設計
4.1設計目標
1. 博客文章顯示管理
本模塊用于幫助用戶快速定位到自己關注的博客頁面及對應的文章信息中。
2. 博客登錄管理
本模塊實現用戶登錄功能。登錄時會對博客輸入的信息進行提示,如用戶名、密碼錯誤。
3. 發(fā)表文章管理
該模塊實現了博主發(fā)表新文章的功能。博主發(fā)表文章時,可以選擇文章所屬類別,此外只有是博主才能發(fā)表文章,對此進行了嚴格的身份驗證。
4. 發(fā)表及顯示評論管理
該模塊實現了與文章相關的評論管理。游客及管理員都可對文章進行發(fā)表評論。
4.2開發(fā)及運行環(huán)境
4.2.1 JSP的基礎——Servlet 技術
Java Servlet 是JSP 技術的基礎,JSP 本身就是預先被編譯成Servlet ,然后再運行的,而且大型的Web 應用程序的開發(fā)需要Java Servlet和JSP 配合才能完成,Servlet 這個名稱大概源于Applet ,現在國內的翻譯方式很多,本文為了避免誤會,本文直接采用Servlet 這個名稱而不做任何翻譯,讀者如果愿意,可以稱之為“小服務程序”。Servlet 其實和傳統(tǒng)的CGI 程序和ISAPI 、NSAPI 等Web 程序開發(fā)工具的作用是相同的,在使用Java Servlet 以后,用戶不必再使用效率低下的CGI 方式,也不必使用只能在某個固定Web 服務器平臺運行的API 方式來動態(tài)生成Web 頁面。許多Web 服務器都支持Servlet ,即使不直接支持Servlet 的Web 服務器也可以通過附加的應用服務器和模塊來支持Servlet 。得益于Java 的跨平臺的特性,Servlet 也是平臺無關的,實際上,只要符合Java Servlet 規(guī)范,Servlet 是完全平臺無關且是Web 服務器無關的。由于Java Servlet內部是以線程方式提供服務,不必對于每個請求都啟動一個進程,并且利用多線程機制可以同時為多個請求服務,因此Java Servlet 效率非常高。但Java Servlet也不是沒有缺點,和傳統(tǒng)的CGI 、ISAPI 、NSAPI 方式相同,Java Servlet是利用輸出HTML 語句來實現動態(tài)網頁的,如果用Java Servlet來開發(fā)整個網站,動態(tài)部分和靜態(tài)頁面的整合過程簡直就是一場噩夢。這就是為什么SUN 還要推出Java Server Pages的原因。
,4.2.2 JavaBean原理和機制
JSP 的一大特點就是與JavaBeans 的結合, 而JSP 與JavaBeans 結合的一個突出的優(yōu)點是頁面顯示和業(yè)務邏輯的分離。這可以使團隊協(xié)作的更好,開發(fā)出更高質量的站點。
JavaBean 是一種可以重用的Java 組件,它類似于COM ,在JSP 程序中常用來封裝事物邏輯、數據庫操作等,可以很好的實現業(yè)務邏輯和前臺程序的分離,使得系統(tǒng)具有更好的健壯性和靈活性。
事件處理是JavaBeans 體系結構的核心之一。通過事件處理機智,可以讓一些組件作為事件源,發(fā)出可被描述環(huán)境或其他組件接受的事件。這樣,不同的組件就可在構造工具內組合在一起,組件之間通過事件的傳遞進行通信,構成一個應用。從概念上講,事件是一種在“源對象”和“監(jiān)聽對象”之間、某種狀態(tài)發(fā)生變化的傳遞機智。事件有許多不同的用途,如:鼠標事件、窗口邊界改變事件、鍵盤事件等。在Java 和JavaBeans 中則是定義了一個一般的、可擴充的事件機制,它能夠:
1). 對事件類型和傳遞模型的定義和擴充提供一個公共框架,并適合于廣泛的應用。
2). 與Java 語言和環(huán)境有較高的集成度。
事件能描述環(huán)境捕獲和被激發(fā)。能使其他構造工具采取某種技術在設計時直接控制事件,遺跡控制事件源和事件監(jiān)聽者之間的聯系。事件本身不依賴于復雜的開發(fā)工具。
特別的,事件機制還應當:
1). 能夠發(fā)現制定的對象類可以生成的事件。
2). 能夠發(fā)現制定的對象類可以觀察監(jiān)聽到的事件。
3). 提供一個常規(guī)的注冊機制,允許動態(tài)操縱事件源與事件監(jiān)聽者之間的關系。
4). 不需要其他的虛擬機和語言即可實現。
5). 事件源與監(jiān)聽者之間可進行高效的事件傳遞。
6). 能完成JavaBean 事件模型與相關的其他組件體系結構事件模型的中立映射。
JSP 和ASP.NET 同樣是網站開發(fā)中常用的開發(fā)工具。但是,ASP 是微軟的產品,其應用只能是在Windows 平臺上,移植性差,而且以源代碼的形式存放在服務器端,安全性差。每次由服務器解釋運行,運行效率不高。Jsp 頁面文件執(zhí)行時被編譯成字節(jié)代碼,由客戶端流覽的Java 虛擬機解釋執(zhí)行,不再是源代碼,因此執(zhí)行效率和安全性高。將數據庫連接的重要信息存放在JavaBean 文件后,可以編譯成虛擬機才能解釋的字節(jié)代碼,確保了數據庫的安全。
在ASP 技術里,通過Web 頁面要實現一些特定的功能比較困難,比如基于網頁的報表,打印實現起來就比較麻煩。ASP 提供的解決方案是自己開發(fā)組件,通過在服務器端注冊組件,成為獨立的可以重復利用的模塊供讀者調用。因此要求讀者需要掌握比較復雜的變成語言的開發(fā)技術。在JSP 開發(fā)技術里,可以通過開發(fā)JavaBean 文件實現同樣的功能,JavaBean 不需要注冊,只要放置在相應的目錄下就可以運行。可以實現ASP 的COM 組件同樣的功能。此外JSP 推出主要就是考慮到平臺的無關性。JSP 代碼可以在APACHE 、IIS 等服務器上執(zhí)行,支持大部分操作系統(tǒng)。JSP 繼承JAVA 技術的優(yōu)點:一次運行,處處運行。
鑒于此, 本系統(tǒng)決定使用JSP 做為開發(fā)工具。下面簡單介紹一下相關的其他工具:
,4.2.3 開發(fā)平臺:Eclipse dreamweaver
Eclipse 是一個開放源代碼的軟件開發(fā)項目,專注于為高度集成的工具開發(fā)提供一個全功能的、具有商業(yè)品質的工業(yè)平臺。它主要由Eclipse 項目、Eclipse 工具項目和Eclipse 技術項目三個項目組成,具體包括四個部分組成——Eclipse Platform 、JDT 、CDT 和PDE.JDT 支持Java 開發(fā)、CDT 支持C 開發(fā)、PDE 用來支持插件開發(fā),Eclipse Platform則是一個開放的可擴展IDE ,提供了一個通用的開發(fā)平臺。它提供建造塊和構造并運行集成軟件開發(fā)工具的基礎。Eclipse Platform允許工具建造者獨立開發(fā)與他人工具無縫集成的工具從而無須分辨一個工具功能在哪里結束,而另一個工具功能在哪里開始。
Dreamweaver MX 是一款專業(yè)的 HTML 編輯器,用于對 Web 站點、Web 頁和 Web 應用程序進行設計、編碼和開發(fā)。無論您喜歡直接編寫 HTML 代碼的駕馭感還是偏愛在可視化編輯環(huán)境中工作,Dreamweaver 都會為您提供幫助良多的工具,豐富您的 Web 創(chuàng)作體驗。
利用 Dreamweaver 中的可視化編輯功能,您可以快速地創(chuàng)建頁面而無需編寫任何代碼。不過,如果您更喜歡用手工直接編碼,Dreamweaver 還包括許多與編碼相關的工具和功能。并且,借助 Dreamweaver,您還可以使用服務器語言(例如 ASP、ASP.NET 、ColdFusion 標記語言 (CFML )、JSP 和 PHP)生成支持動態(tài)數據庫的 Web 應用程序。
4.2.4 數據庫:MySQL
MySQL 是一個小型關系型數據庫管理系統(tǒng),開發(fā)者為瑞典MySQL AB公司。在2008年1月16號被Sun 公司收購。而2009年,SUN 又被Oracal 收購. 對于Mysql 的前途, 沒有任何人抱樂觀的態(tài)度. 目前MySQL 被廣泛地應用在Internet 上的中小型網站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了MySQL 作為網站數據庫。
4.3數據庫設計
根據系統(tǒng)功能設計要求和模塊劃分,本站的數據庫主要有Blog 表,Category 表,Comment 表和Users 表
1 Blog 表
保存所有博文的內容。包括博文id 、主題、內容、時間和所屬類別的id 值。
2 Category 表
保存所有博文的分類,id 、分類的名稱。
,3 Comment 表
保存對博文的評論,id ,評論人、評論的內容 ,所評論的博文的id 值。
Users 表
保存博主的id 、用戶名和密碼。
第五章 程序介紹
1:博客主頁,游客可瀏覽近期的博客摘要及分類查詢
主要代碼如下:
,main.jsp:
<@ page language ="java" contentType ="text/html; charset=UTF-8"> <@ page import ="java.util.List" >
<@ page import ="java.text.SimpleDateFormat" >
<@ page import ="cn.com.jobedu.blog.*">
2:在主頁點擊博文名稱連接后,可瀏覽相應博文,查看其評論及發(fā)表評論