版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 摘 要</b></p><p> 當(dāng)今社會(huì)是一個(gè)高速發(fā)展的社會(huì),在高壓的生活狀態(tài)下,通常都會(huì)身心疲憊,都會(huì)想要找尋一些方式來減少壓力,不論如何減壓,都不會(huì)少了音樂的陪伴。如今隨著網(wǎng)絡(luò)的發(fā)展,各國(guó)人都可以進(jìn)行交流,所以不同風(fēng)格、不同國(guó)度的音樂開始到處傳播,使我們有了很大的選擇空間。音樂的種類多了,人們的需求也在發(fā)生變化,對(duì)音樂的管理網(wǎng)站也要在不斷地升級(jí),本系統(tǒng)
2、就是為人們查詢和收集音樂提供更方便的途徑。在找到自己喜歡的音樂以后,還為用戶表現(xiàn)了多樣化的音樂平臺(tái)。</p><p> 本文分以下幾部分闡述了基于使用操作,采用NEO框架和NEO框架中包括的Struts2, Spring,FreeMarker,js技術(shù)設(shè)計(jì)實(shí)現(xiàn)過程。</p><p> 該音樂系統(tǒng)運(yùn)用了NEO框架和其中的部分技術(shù)來完成開發(fā),是一個(gè)基于Java的音樂管理系統(tǒng)。在該論文中主要
3、有以下工作要完成:</p><p> 一、對(duì)開發(fā)的系統(tǒng)要用到的技術(shù)和功能進(jìn)行了解和介紹,從用戶對(duì)系統(tǒng)的需求進(jìn)行實(shí)際的需求分析和總體設(shè)計(jì),詳細(xì)說明音樂系統(tǒng)應(yīng)具備的基本功能,對(duì)全部功能進(jìn)行分類設(shè)計(jì)。</p><p> 二、根據(jù)設(shè)計(jì)的方案,實(shí)現(xiàn)音樂網(wǎng)站分類管理的詳盡方案,系統(tǒng)主要分為兩大模塊:游客模塊和用戶模塊,游客模塊包括試聽音樂和登錄功能,用戶模塊包括試聽音樂、增加歌曲、刪除歌曲、修改歌
4、手名信息、查找歌手功能。</p><p> 三、最后對(duì)設(shè)計(jì)的音樂系統(tǒng)進(jìn)行測(cè)試和評(píng)論。</p><p> 關(guān)鍵詞:Struts2 NEO框架 FreeMarker</p><p><b> ABSTRACT</b></p><p> Our society is a society with high-
5、speed development. Living with high pressure, people will usually feel tiredness, and want to find some way to reduce the pressure, no matter how to reduce the pressure; there is no way without the company with music. No
6、wadays all the countries exchange frequent, different styles and different countries’ music spread, and give us a very wide space of selection. many people's demands is also changing with so many kinds of music, the
7、web site of the management of</p><p> This article describes with following sections based on use and operation, use the struts2, spring, freemarke and js of the neo framework and operation to achieve the p
8、rocess.</p><p> The music website system use neo framework and part of the technology to complete the development, a management system to java. Mainly, there are following works to finish in this article.&l
9、t;/p><p> Firstly,to understand and introduce the technology and function used by the developed system, To make actual needs analysis and gross design from the needs of user , and dentally introduce what basi
10、c functions the music system should have Classification and design to all functions. </p><p> Secondly,according to the design, implementation of classified management of the detailed plan of the music, the
11、 system is mainly divided into two modules:tourists module and users module, tourists module includes the functions of increase and check, user module include the functions of increase delete change and check .</p>
12、<p> Thirdly,test and comment the music of the web site.</p><p> Key words: Struts2 NEO FreeMarker</p><p><b> 目 錄</b></p><p> 1 前 言1</p><p&g
13、t; 1.1 開發(fā)背景1</p><p> 1.2 國(guó)內(nèi)外研究現(xiàn)狀1</p><p> 1.3 系統(tǒng)設(shè)計(jì)目標(biāo)2</p><p> 2 系統(tǒng)開發(fā)所采用的技術(shù)3</p><p> 2.1 NEO框架3</p><p> 2.2 各項(xiàng)技術(shù)與分層之間的對(duì)應(yīng)關(guān)系3</p><p>
14、 2.2.1 表現(xiàn)層3</p><p> 2.2.2 控制層4</p><p> 2.2.3 業(yè)務(wù)邏輯層和數(shù)據(jù)持久層5</p><p> 3 傾聽音樂系統(tǒng)需求分析8</p><p> 3.1 可行性分析8</p><p> 3.1.1 技術(shù)可行性分析8</p><p>
15、 3.1.2 安全性分析8</p><p> 3.2 功能分析9</p><p> 3.3 系統(tǒng)業(yè)務(wù)流程分析9</p><p><b> 4 概要設(shè)計(jì)10</b></p><p> 4.1 設(shè)計(jì)指導(dǎo)思想和原則10</p><p> 4.1.1 指導(dǎo)思想10</p>
16、<p> 4.1.2 軟件設(shè)計(jì)原則10</p><p> 4.2 構(gòu)架概述10</p><p> 4.3 系統(tǒng)功能模塊設(shè)計(jì)10</p><p> 4.4 數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)12</p><p> 4.4.1 整體E-R圖設(shè)計(jì)12</p><p> 4.4.2 數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)13&
17、lt;/p><p> 5 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)15</p><p> 5.1 游客模塊的實(shí)現(xiàn)15</p><p> 5.1.1 登陸頁(yè)面的實(shí)現(xiàn)15</p><p> 5.1.2 搜索歌手的實(shí)現(xiàn)16</p><p> 5.2 用戶模塊的實(shí)現(xiàn)17</p><p> 5.2.1 上傳歌
18、曲的實(shí)現(xiàn)17</p><p> 5.2.2 修改歌手的實(shí)現(xiàn)20</p><p> 5.2.3 刪除歌曲的實(shí)現(xiàn)21</p><p> 5.2.4 留言的實(shí)現(xiàn)22</p><p><b> 6 系統(tǒng)測(cè)試23</b></p><p> 6.1 測(cè)試概論23</p>&
19、lt;p> 6.2 傾聽音樂系統(tǒng)采用的測(cè)試方法24</p><p> 6.3 傾聽音樂系統(tǒng)登錄功能測(cè)試25</p><p> 6.4 傾聽音樂系統(tǒng)注冊(cè)功能測(cè)試26</p><p><b> 結(jié) 論28</b></p><p><b> 謝 辭29</b></p&g
20、t;<p><b> 參考文獻(xiàn)30</b></p><p><b> 附 錄31</b></p><p><b> 1 前 言</b></p><p> 目前,隨著Internet在全球的推廣和普及,越來越多的人開始進(jìn)入這個(gè)全球范圍的計(jì)算機(jī)網(wǎng)絡(luò),世界因此變成了一個(gè)小小
21、的地球村,人們通過互聯(lián)網(wǎng)彼此溝通和交流。各種各樣的網(wǎng)站也隨之產(chǎn)生了,比如音樂網(wǎng)站、新聞網(wǎng)站、娛樂網(wǎng)站、政府網(wǎng)站等等,它們的出現(xiàn)使得人們甚至可以待在家里就可以知道外面的世界正發(fā)生著什么樣的變化。而在如今這樣一個(gè)信息化的網(wǎng)絡(luò)時(shí)代,音樂變得無(wú)處不在,尤其是多媒體的出現(xiàn)讓音樂更加大眾化、普及化了?,F(xiàn)在只要你鼠標(biāo)輕輕一點(diǎn),就可以找到各種各樣的,甚至是不同國(guó)家的音樂信息供你選擇來試聽和下載。這樣一來,對(duì)于音樂網(wǎng)站的要求就更加高了,不但要求在線音樂試
22、聽的速度,而且需要及時(shí)的更新音樂信息,這就意味著要不斷提升網(wǎng)絡(luò)的帶寬,同時(shí)也需要新的網(wǎng)絡(luò)技術(shù)來支持該系統(tǒng),數(shù)據(jù)的壓縮編碼和用于發(fā)布媒體的網(wǎng)絡(luò)技術(shù)就是在這樣的背景下誕生的。而該音樂系統(tǒng)正是利用流媒體技術(shù)設(shè)計(jì)開發(fā)的,它的出現(xiàn)將使得用戶收聽音樂更加方便快捷。</p><p> 現(xiàn)在,網(wǎng)絡(luò)應(yīng)用軟件運(yùn)行的模式主要有二類:C/S模式和B/S模式。前者主要的缺點(diǎn)是維護(hù)、升級(jí)較麻煩,后者是近幾年伴隨Internet迅速發(fā)展起來
23、的一種技術(shù)。它與客戶/服務(wù)器方式類似,客戶端是一個(gè)標(biāo)準(zhǔn)的瀏覽器,服務(wù)器端是IIS,而IIS與數(shù)據(jù)庫(kù)和應(yīng)用服務(wù)器的緊密結(jié)合,使得這種模式的應(yīng)用范圍不斷擴(kuò)大,它已不僅僅用于網(wǎng)上查詢、有很多部門的業(yè)務(wù)系統(tǒng)、企業(yè)的MIS系統(tǒng)紛紛采用這種模式。它的主要優(yōu)點(diǎn)是便于擴(kuò)充應(yīng)用、升級(jí)維護(hù)簡(jiǎn)便?;谏鲜隹紤],用B/S模式來設(shè)計(jì)在線音樂系統(tǒng)比較合適。</p><p><b> 1.1 開發(fā)背景</b></
24、p><p> 網(wǎng)絡(luò)技術(shù)以及計(jì)算機(jī)的發(fā)展,網(wǎng)友們對(duì)網(wǎng)絡(luò)的要求也在日益增長(zhǎng),平常在網(wǎng)絡(luò)上聽歌用一大堆的軟件下載下來又要管理,又占空間。比如那些流行歌曲,下載下來聽了之后又要?jiǎng)h除,很是不方便。而該系統(tǒng)改變了這一現(xiàn)狀。他本身就是一個(gè)音樂互交的系統(tǒng),用戶通過它可以方便、快捷、安全地實(shí)現(xiàn)音樂搜索,并能實(shí)時(shí)試聽,將自己喜愛的歌曲加入自己的主頁(yè),為用戶建立一個(gè)自由、自主、安全的音樂系統(tǒng)。</p><p>
25、 1.2 國(guó)內(nèi)外研究現(xiàn)狀</p><p> 音樂,它本身作為一種藝術(shù)、一種社會(huì)意識(shí)形態(tài),反映的是人類社會(huì)生活,人類思想感情。通過節(jié)奏、旋律、和聲、音色完美的結(jié)合,感染欣賞者。人們常說,音樂可以陶冶情操,凈化靈魂,這些當(dāng)然和音樂的特性以及人們對(duì)音樂的心里感知是分不開的。人們對(duì)音樂的感知理解與欣賞是通過一系列心理活動(dòng)來完成的,而音樂的社會(huì)功能主要是以潛移默化的方式,通過欣賞者的心里活動(dòng)得以發(fā)揮。</p>
26、<p> 隨著社會(huì)發(fā)展,各國(guó)的交流非常頻繁,人們所熟悉的音樂和音樂人不再單單局限于國(guó)內(nèi),還有很多來自國(guó)外,中國(guó)的音樂也隨著國(guó)家間的交流被傳播得更遠(yuǎn)。記得在04年的雅典奧運(yùn)會(huì),最后的8分鐘時(shí)間里,中國(guó)的一首《茉莉花》響徹整個(gè)體育場(chǎng),隨后《茉莉花》成了中國(guó)歌曲的代表,也成為國(guó)外人了解中國(guó)音樂、文化的傳送帶?,F(xiàn)在,有很多的外國(guó)人來到中國(guó),專門來學(xué)習(xí)中國(guó)的民俗音樂。在我們經(jīng)常看到的娛樂節(jié)目中,經(jīng)??梢钥吹酵鈬?guó)人演唱中國(guó)的歌曲。&
27、lt;/p><p> 音樂不僅僅用于陶冶情操和休閑娛樂,他還隨著社會(huì)的發(fā)展,用于文化交流。所以各國(guó)的音樂不進(jìn)行明確的分類和管理是不可行的。所以,就要有一個(gè)系統(tǒng)來管理和歸納分類這些多樣的歌曲。</p><p> 海外,現(xiàn)在大部分的中國(guó)年輕人都比較偏向于日韓明星,再有搞藝術(shù)的還鐘情于美國(guó)的朋克風(fēng)格、搖滾風(fēng)格等。都是來自海外的藝術(shù),對(duì)我們現(xiàn)在的年輕人也很有影響,形成了一股潮流風(fēng)。記得前一陣的邁克
28、爾杰克遜的離開,就對(duì)整個(gè)歐美,甚至是全球的音樂愛好者一個(gè)沉重的打擊。歌迷們相擁而泣,來懷念這位偉大的音樂人??梢娨魳返挠绊懖粏螁问菍?duì)一個(gè)國(guó)家歌迷的影響,有時(shí)可以影響全世界,是人們相聚在一起,來懷念他。</p><p> 國(guó)內(nèi),國(guó)內(nèi)的部分藝術(shù)已經(jīng)在國(guó)際上有一定的影響力,像成龍?jiān)诤萌R塢的影響一樣,我們中國(guó)的民族音樂在外國(guó)那也是有很大的影響力。都對(duì)中國(guó)的民族藝術(shù)更有了一定的了解。</p><p&g
29、t; 音樂網(wǎng)站系統(tǒng)就是為了更好的來管理音樂,將音樂分類。方便大家查找音樂,更好的了解不同國(guó)家的音樂風(fēng)格、特色。</p><p> 1.3 系統(tǒng)設(shè)計(jì)目標(biāo)</p><p> 音樂系統(tǒng)實(shí)現(xiàn)的功能很簡(jiǎn)單,將系統(tǒng)分為游客和用戶兩個(gè)模塊,主要實(shí)現(xiàn)傳統(tǒng)的增刪改查功能,用戶和游客都具有試聽音樂和查詢歌手的權(quán)限,但用戶在游客的權(quán)限基礎(chǔ)上還具有上傳音樂、留言、刪除歌曲和修改歌曲名功能。</p>
30、;<p> 2 系統(tǒng)開發(fā)所采用的技術(shù)</p><p><b> 2.1 NEO框架</b></p><p> NEO框架采用了分層體系的思想以及MVC設(shè)計(jì)模式,定位為三層體系結(jié)構(gòu),即表現(xiàn)層、業(yè)務(wù)邏輯層以及數(shù)據(jù)層,其中表現(xiàn)層又細(xì)分為頁(yè)面資源層和頁(yè)面模板層,業(yè)務(wù)邏輯層細(xì)分為控制層和業(yè)務(wù)處理層,NEO框架的體系結(jié)構(gòu)如圖2-1所示。</p>
31、<p> 圖2-1 NEO框架體系結(jié)構(gòu)</p><p> 我應(yīng)用的NEO框架則是對(duì)于FreeMarker模板技術(shù)和Struts2、Spring框架技術(shù)進(jìn)行了整合,而提出的新框架。</p><p> 2.2 各項(xiàng)技術(shù)與分層之間的對(duì)應(yīng)關(guān)系</p><p> 整合后新的框架分為四個(gè)層,各項(xiàng)技術(shù)與分層之間的對(duì)應(yīng)關(guān)系如下:表現(xiàn)層:FreeMarker;控制層
32、:Struts2;業(yè)務(wù)邏輯層:SpringFramework;數(shù)據(jù)持久層:Spring JdbcTemplate。</p><p><b> 2.2.1 表現(xiàn)層</b></p><p> 表現(xiàn)層主要包括頁(yè)面資源層和頁(yè)面模板層。在頁(yè)面資源中采用了HTML、CSS、JavaScript技術(shù),在頁(yè)面模板層則采用了FreeMarker模板技術(shù)。FreeMarker允許Ja
33、va servlet保持圖形設(shè)計(jì)同應(yīng)用程序邏輯的分離,這是通過在模板中密封HTML完成的。模板用servlet提供的數(shù)據(jù)動(dòng)態(tài)地生成HTML。模板語(yǔ)言是強(qiáng)大的直觀的,編譯器速度快,輸出接近靜態(tài)HTML頁(yè)面的速度。FreeMarker是一個(gè)模板引擎,一個(gè)基于模板生成文本輸出的通用工具,使用純Java編寫。FreeMarker被設(shè)計(jì)用來生成HTML Web頁(yè)面,特別是基于MVC模式的應(yīng)用程序。雖然FreeMarker具有一些編程的能力,但通常
34、由Java程序準(zhǔn)備要顯示的數(shù)據(jù),由FreeMarker生成頁(yè)面,通過模板顯示準(zhǔn)備的數(shù)據(jù)。FreeMarker不是一個(gè)Web應(yīng)用框架,而是適合作為Web應(yīng)用框架一個(gè)組件。FreeMarker與容器無(wú)關(guān),因?yàn)樗⒉恢繦TTP或Servlet;FreeMarker同樣可以應(yīng)用于非Web應(yīng)用程序環(huán)境 FreeMarker更適合作為Model2框架(如Struts)的視圖組件,你也可以在</p><p><b>
35、; 2.2.2 控制層</b></p><p> Struts2是一個(gè)MVC Web框架。Struts2是Struts的下一代產(chǎn)品,是在struts和WebWork的技術(shù)基礎(chǔ)上進(jìn)行了合并的全新的Struts2框架。其全新的Struts2的體系結(jié)構(gòu)與Struts 1的體系結(jié)構(gòu)的差別巨大。Struts2以WebWork為核心,采用攔截器的機(jī)制來處理用戶的請(qǐng)求,這樣的設(shè)計(jì)也使得業(yè)務(wù)邏輯控制器能夠與Ser
36、vletAPI完全脫離開,所以Struts2可以理解為WebWork的更新產(chǎn)品。雖然從Struts1到Struts2有著太大的變化,但是相對(duì)于WebWork,Struts2只有很小的變化。</p><p> Struts2的核心機(jī)制如圖2-2所示。</p><p> 圖2-2 Struts2的核心機(jī)制</p><p> 根據(jù)Struts2的核心機(jī)制圖,基本可以
37、看出Struts2的運(yùn)行過程如下:接收到請(qǐng)求,核心控制器FilterDispatcher找到合適的Action,攔截器調(diào)用Action中的方法執(zhí)行,Result進(jìn)行輸出。同時(shí),可以看出Struts2具體的作用如下分為的情況為:將用戶的請(qǐng)求封裝為一個(gè)數(shù)據(jù)對(duì)象。根據(jù)請(qǐng)求的不同,調(diào)用相應(yīng)的邏輯處理單元,并將數(shù)據(jù)對(duì)象作為參數(shù)傳入。邏輯處理單元完成后,返回一個(gè)結(jié)果數(shù)據(jù)對(duì)象。將結(jié)果數(shù)據(jù)對(duì)象中的數(shù)據(jù)與預(yù)先設(shè)計(jì)的表現(xiàn)層相融合并展現(xiàn)給用戶。</p&
38、gt;<p> Struts2的體系與Struts1體系的差別非常大,因?yàn)镾truts2使用了WebWork的設(shè)計(jì)核心,而不是Struts1的設(shè)計(jì)核心。Struts2中大量使用攔截器來處理用戶的請(qǐng)求,從而允許用戶的業(yè)務(wù)邏輯控制器與Servlet API分離。</p><p> Struts2框架的大概處理流程如下:</p><p> 1 加載類(FilterDispat
39、cher)</p><p> 2 讀取配置(struts配置文件中的Action)</p><p> 3 派發(fā)請(qǐng)求(客戶端發(fā)送請(qǐng)求)</p><p> 4 調(diào)用Action(FilterDispatcher從struts配置文件中讀取與之相對(duì)應(yīng)的Action )</p><p> 5 啟用攔截器(WebWork攔截器鏈自動(dòng)對(duì)請(qǐng)求應(yīng)用通
40、用功能,如驗(yàn)證)</p><p> 6 處理業(yè)務(wù)(回調(diào)Action的execute()方法)</p><p> 7 返回響應(yīng)(通過execute方法將信息返回到FilterDispatcher)</p><p> 8 查找響應(yīng)(FilterDispatcher根據(jù)配置查找響應(yīng)的是什么信息如:SUCCESS、ERROR,將跳轉(zhuǎn)到哪個(gè)jsp頁(yè)面)</p>
41、;<p> 9 響應(yīng)用戶(jsp--->客戶瀏覽器端顯示)</p><p> 10 Struts2標(biāo)簽庫(kù)(相比struts1的標(biāo)簽庫(kù),struts2是大大加強(qiáng)了,對(duì)數(shù)據(jù)的操作功能很強(qiáng)大)</p><p> 2.2.3 業(yè)務(wù)邏輯層和數(shù)據(jù)持久層</p><p> 在業(yè)務(wù)邏輯層和數(shù)據(jù)持久層中用到了Spring框架技術(shù),Spring和Struts
42、2一樣都是一種輕量級(jí)的JavaEE應(yīng)用程序框架,Struts2注重的是降低表現(xiàn)層和邏輯層的耦合程度,主要是把業(yè)務(wù)邏輯和表現(xiàn)層分開,但是不涉及業(yè)務(wù)層與持久層的關(guān)聯(lián)。Spring主要是對(duì)業(yè)務(wù)層的細(xì)化,也就是更深層次的降低耦合程度。</p><p> Spring框架核心的思想就是建立一個(gè)Java對(duì)象的大工廠,用戶只要給工廠一個(gè)指令,工廠就能將用戶需要的對(duì)象根據(jù)配置文件組裝好煩壞給用戶。用戶需要做的許多工作則可以寫成
43、簡(jiǎn)單的配置文件。組成Spring框架的每個(gè)模塊(或組件)都可以單獨(dú)存在,或者與其他一個(gè)或多個(gè)模塊聯(lián)合實(shí)現(xiàn)。每個(gè)模塊的功能如下:</p><p> 1 核心容器:核心容器提供Spring框架的基本功能(Spring Core)。核心容器的主要組件是BeanFactory,它是工廠模式的實(shí)現(xiàn)。BeanFactory使用控制反轉(zhuǎn)(IOC)模式將應(yīng)用程序的配置和依賴性規(guī)范與實(shí)際的應(yīng)用程序代碼分開。 </p>
44、<p> 2 Spring上下文:Spring 上下文是一個(gè)配置文件,向Spring框架提供上下文信息。Spring上下文包括企業(yè)服務(wù),例如JNDI、EJB、電子郵件、國(guó)際化、校驗(yàn)和調(diào)度功能。 </p><p> 3 Spring AOP:通過配置管理特性,Spring AOP模塊直接將面向方面的編程功能集成到了Spring框架中。所以,可以很容易地使Spring框架管理的任何對(duì)象支持 AOP。
45、Spring AOP模塊為基于Spring的應(yīng)用程序中的對(duì)象提供了事務(wù)管理服務(wù)。通過使Spring AOP,不用依賴EJB組件,就可以將聲明性事務(wù)管理集成到應(yīng)用程序中。 </p><p> 4 Spring DAO:JDBC DAO抽象層提供了有意義的異常層次結(jié)構(gòu),可用該結(jié)構(gòu)來管理異常處理和不同數(shù)據(jù)庫(kù)供應(yīng)商拋出的錯(cuò)誤消息。異常層次結(jié)構(gòu)簡(jiǎn)化了錯(cuò)誤處理,并且極大地降低了需要編寫的異常代碼數(shù)量(例如打開和關(guān)閉連接)。
46、Spring DAO 的面向JDB 的異常遵從通用的DAO異常層次結(jié)構(gòu)。 </p><p> 5 Spring ORM:Spring框架插入了若干個(gè)ORM框架,從而提供了ORM的對(duì)象關(guān)系工具,其中包括JDO、Hibernate 和iBatisSQL Map。所有這些都遵從Spring的通用事務(wù)和DAO異常層次結(jié)構(gòu)。 </p><p> 6 Spring Web 模塊:Web上下文模塊建
47、立在應(yīng)用程序上下文模塊之上,為基于Web的應(yīng)用程序提供了上下文。所以,Spring框架支持與Jakarta Struts的集成。Web模塊還簡(jiǎn)化了處理多部分請(qǐng)求以及將請(qǐng)求參數(shù)綁定到域?qū)ο蟮墓ぷ鳌?lt;/p><p> 7 Spring MVC 框架:MVC框架是一個(gè)全功能的構(gòu)建Web應(yīng)用程序的MVC實(shí)現(xiàn)。通過策略接口,MVC框架變成為高度可配置的,MVC容納了大量視圖技術(shù),其中包括JSP、Velocity、Tile
48、s、iText和POI。模型由javabean構(gòu)成,存放于Map;視圖是一個(gè)接口,負(fù)責(zé)顯示模型;控制器表示邏輯代碼,是Controller的實(shí)現(xiàn)。Spring框架的功能可以用在任何J2EE服務(wù)器中,大多數(shù)功能也適用于不受管理的環(huán)境。Spring的核心要點(diǎn)是:支持不綁定到特定J2EE服務(wù)的可重用業(yè)務(wù)和數(shù)據(jù)訪問對(duì)象。毫無(wú)疑問,這樣的對(duì)象可以在不同J2EE環(huán)境(Web 或EJB)、獨(dú)立應(yīng)用程序、測(cè)試環(huán)境之間重用。</p><
49、;p> 另外,在持久層的封裝和整合上,Spring同樣做了很多的努力。Spring的JdbcTemplate封裝了傳統(tǒng)的JDBC程式執(zhí)行流程,并作了例外處理與資源管理器等動(dòng)作,用戶需要的只是給它提供一個(gè)DataSource,而這只要在Bean定義中完成依賴注入。Spring JdbcTemplate的使用可以提高開發(fā)效率。通過圖2-3可以幫我們進(jìn)一步理解Spring JdbcTemplate。</p><p&
50、gt; 圖2-3 Spring JdbcTemplate</p><p> Spring是一個(gè)容器框架,歸結(jié)而言Spring具體的作用也就僅如下點(diǎn):管理系統(tǒng)中的業(yè)務(wù)邏輯,即Services;將Services所需的依賴注入;實(shí)現(xiàn)聲明式事務(wù)管理;對(duì)Jdbc操作進(jìn)行簡(jiǎn)單封裝。</p><p> 3 傾聽音樂系統(tǒng)需求分析</p><p><b> 3.1
51、 可行性分析</b></p><p> 3.1.1 技術(shù)可行性分析</p><p> 本系統(tǒng)采用Windows系統(tǒng)的底層架構(gòu),neo系統(tǒng)采用struts2底層架構(gòu),采用java作為開發(fā)語(yǔ)言,數(shù)據(jù)庫(kù)采用MySql。對(duì)于完成同樣功能的進(jìn)程,采用同一個(gè)程序啟多個(gè)子進(jìn)程的方式。配置文件采用Struts2文件進(jìn)行配置,采用Struts2配置,簡(jiǎn)單,清楚,容易維護(hù)。</p>
52、<p> 本系統(tǒng)采用Eclipse作為開發(fā)環(huán)境,Eclipse是一個(gè)開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,Eclipse附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具(Java Development Kit,JDK)。Eclipse是一種可擴(kuò)展的開放源代碼IDE。Intergrated Development Environment,簡(jiǎn)
53、稱IDE(集成開發(fā)環(huán)境,又名集成編程環(huán)境或可視化開發(fā)環(huán)境),是為了方便軟件開發(fā)人員進(jìn)行開發(fā)而設(shè)計(jì)的軟件,一般針對(duì)某一編程語(yǔ)言開發(fā),大多數(shù)為界面友好的可視化環(huán)境,一般整合源代碼編輯器、調(diào)試器、編譯器和資源編輯器。Eclipse平臺(tái)的用戶界面是由透視圖、試圖、編輯器組成的。每個(gè)“工作臺(tái)”窗口都包含一個(gè)或多個(gè)透視圖。透視圖則包含視圖和編輯器,透視圖可根據(jù)用戶的不同選擇來布局視圖和編輯器??梢酝瑫r(shí)打開任意數(shù)目的編輯器,但在任一時(shí)刻只能有一個(gè)編輯
54、器處于活動(dòng)狀態(tài)。星號(hào)(*)指示編輯器具有未保存的更改。Eclipse包括了完備的編碼、調(diào)試、測(cè)試和發(fā)布功能,支持HTML,Struts2,CSS,</p><p> 3.1.2 安全性分析</p><p> 本系統(tǒng)的信息是基于B/S進(jìn)行開發(fā)的,用戶工作界面是通過WWW瀏覽器來實(shí)現(xiàn),是Web興起后的一種網(wǎng)絡(luò)結(jié)構(gòu)模式,Web瀏覽器是客戶端最主要的應(yīng)用軟件。B/S最大的優(yōu)點(diǎn)就是可以在任何地方
55、進(jìn)行操作而不需要安裝任何專門的軟件,只要有一臺(tái)能上網(wǎng)的電腦就能使用,客戶端零維護(hù)。B/S結(jié)構(gòu)的運(yùn)用越來越多,它的程序也能在客戶端電腦上進(jìn)行部分處理,從而大大的減輕了服務(wù)器的負(fù)擔(dān);并增加了交互性,能進(jìn)行局部實(shí)時(shí)刷新。</p><p> B/S結(jié)構(gòu)維護(hù)和升級(jí)方式簡(jiǎn)單。目前,軟件系統(tǒng)的改進(jìn)和升級(jí)越來越頻繁,B/S架構(gòu)的系統(tǒng)明顯體現(xiàn)著更為方便的特性。如果同時(shí)又上報(bào)臺(tái)電腦同時(shí)工作,要是出現(xiàn)了問題要一臺(tái)一臺(tái)的進(jìn)行維修或者更
56、改,工作量大效率也不高,但是B/S構(gòu)架的系統(tǒng)只需要管理服務(wù)器就行了,所有的電腦客戶端都是瀏覽器不需要做任何的維護(hù)。這種方便對(duì)人力、物力、時(shí)間、費(fèi)用的節(jié)省是顯而易見的,逐步向“瘦”客戶機(jī),“胖”服務(wù)器。</p><p> B/S結(jié)構(gòu)成本降低,B/S結(jié)構(gòu)軟件一般只有一次性投入成本。對(duì)于集團(tuán)來講,有利于軟件項(xiàng)目控制和避免IT黑洞。</p><p> 在系統(tǒng)的性能方面,B/S占有優(yōu)勢(shì)的是其異地
57、瀏覽和信息采集的靈活性。任何時(shí)間、任何點(diǎn)點(diǎn)、任何系統(tǒng),只要可以使用瀏覽器上網(wǎng),就可以使用B/S系統(tǒng)的終端。</p><p><b> 3.2 功能分析</b></p><p> 該音樂系統(tǒng)實(shí)現(xiàn)的功能很簡(jiǎn)單,將系統(tǒng)分為游客和用戶兩個(gè)模塊,主要實(shí)現(xiàn)傳統(tǒng)的增加歌曲、刪除歌曲、修改歌手姓名、查找歌曲功能,用戶和游客都具有試聽音樂、下載音樂和查詢歌曲的權(quán)限,但用戶在游客的權(quán)
58、限基礎(chǔ)上還具有上傳歌曲、留言、刪除歌曲和修改歌手姓名的功能。該系統(tǒng)的具體功能如下:</p><p> 1 點(diǎn)播歌曲。用戶不用注冊(cè)會(huì)員也可以點(diǎn)播該系統(tǒng)的歌曲。</p><p> 2 注冊(cè)會(huì)員。用戶需要注冊(cè)會(huì)員后才能享受用戶的其他功能。</p><p> 3 下載歌曲。注冊(cè)會(huì)員之后即為本系統(tǒng)會(huì)員,可下載自己所喜愛的歌曲到本地電腦中。</p><
59、p> 4 上傳歌曲。本系統(tǒng)會(huì)員,可將自己喜歡,但系統(tǒng)沒有的歌曲上傳到本系統(tǒng)。</p><p> 3.3 系統(tǒng)業(yè)務(wù)流程分析</p><p> 音樂系統(tǒng)業(yè)務(wù)流程主要體現(xiàn)在用戶對(duì)音樂進(jìn)行的詳細(xì)操作,下面就主要介紹一下初次登陸音樂網(wǎng)站后的業(yè)務(wù)流程。在進(jìn)入音樂網(wǎng)站的入口后,用戶通過登錄網(wǎng)站,瀏覽歌曲、查詢歌手、歌曲和試聽音樂,并對(duì)存在的音樂進(jìn)行試聽和下載功能。首先,游客需進(jìn)行注冊(cè),然后才
60、可以對(duì)網(wǎng)站的音樂進(jìn)行更多的操作。如圖3-1為該系統(tǒng)的業(yè)務(wù)流程圖。</p><p> 圖3-1 系統(tǒng)的業(yè)務(wù)流程圖</p><p><b> 4 概要設(shè)計(jì)</b></p><p> 4.1 設(shè)計(jì)指導(dǎo)思想和原則</p><p> 4.1.1 指導(dǎo)思想</p><p> 該系統(tǒng)主要為人們提供一個(gè)
61、搜索音樂、試聽音樂、上傳音樂、下載音樂和網(wǎng)上交流的平臺(tái)。來滿足人們對(duì)音樂的聆聽要求。由于登陸該系統(tǒng)的用戶不一樣,我們將其分為不同的類庫(kù)進(jìn)行實(shí)現(xiàn),這樣可以方便修改和管理。</p><p> 本次系統(tǒng)即采用了Struts2方式編寫,其中還運(yùn)用了FreeMarker和Spring框架技術(shù)。我們會(huì)分別從用戶和游客的角度出發(fā),對(duì)用戶的需求進(jìn)行分析創(chuàng)建正確的連接。做出最好、最簡(jiǎn)單的使用。</p><p&
62、gt; 將系統(tǒng)中游客和用戶分別封裝在兩個(gè)不同的類當(dāng)中,在系統(tǒng)今后的維護(hù)和修改提供了更大的發(fā)揮空間和方便。</p><p> 4.1.2 軟件設(shè)計(jì)原則</p><p> 采用抽象與逐步求精、分而治之、模塊化、封裝和信息隱藏、高內(nèi)聚和低耦合、關(guān)注點(diǎn)分離、策略和實(shí)現(xiàn)的分離、接口和實(shí)現(xiàn)分離與模塊獨(dú)立原則。</p><p><b> 4.2 構(gòu)架概述<
63、/b></p><p> 表示層:為每個(gè)獨(dú)立的頁(yè)面模板編寫一個(gè)FTL文件,在FTL頁(yè)面可以顯示Action中的業(yè)務(wù)處理結(jié)果,可以用Service內(nèi)的方法而跳過Action直接進(jìn)行數(shù)據(jù)訪問與顯示。FTL文件還可以使用宏、指令、內(nèi)建函數(shù)等進(jìn)行數(shù)據(jù)處理。 </p><p> 業(yè)務(wù)邏輯層:通常存在多個(gè)Service。原則上圍繞一個(gè)業(yè)務(wù)模塊建立一個(gè)Service,這個(gè)Service包含了該
64、業(yè)務(wù)模塊的所有業(yè)務(wù)方法,各業(yè)務(wù)方法依靠調(diào)用時(shí)傳入的參數(shù)完成相應(yīng)的邏輯操作。</p><p> 控制層:提供業(yè)務(wù)邏輯對(duì)外的接口,以方便客戶端訪問,在該層中可保存用戶請(qǐng)求參數(shù),通過調(diào)用Services中的方法完成業(yè)務(wù)邏輯操作。同時(shí),可保存業(yè)務(wù)邏輯處理結(jié)果,根據(jù)結(jié)果決定調(diào)用的表現(xiàn)層頁(yè)面。另外,還提供了對(duì)request、response、session的訪問。通常情況下,一個(gè)業(yè)務(wù)模塊一般使用1至3個(gè)Action,每個(gè)A
65、ction包含多個(gè)可被調(diào)用的方法,通過Setter和Getter方法對(duì)Action中的屬性值進(jìn)行存取。</p><p> 數(shù)據(jù)訪問層:數(shù)據(jù)訪問和存儲(chǔ)(取得原始數(shù)據(jù))。</p><p> 4.3 系統(tǒng)功能模塊設(shè)計(jì)</p><p> 音樂系統(tǒng)主要實(shí)現(xiàn)對(duì)音樂的管理,其中,分為游客和用戶兩個(gè)模塊,具體功能設(shè)計(jì)分析如下:</p><p><
66、b> 1 游客模塊管理</b></p><p> 對(duì)音樂網(wǎng)站的音樂進(jìn)行試聽、下載、搜索和注冊(cè)用戶等功能。</p><p><b> 2 用戶模塊管理</b></p><p> 對(duì)音樂網(wǎng)站的音樂進(jìn)行試聽、上傳、下載搜索、留言、修改、刪除等功能。</p><p> 圖4-1 系統(tǒng)功能結(jié)構(gòu)圖<
67、/p><p> 該音樂系統(tǒng)的所有業(yè)務(wù)功能詳見表4-1。</p><p> 表4-1 主要業(yè)務(wù)功能</p><p> 4.4 數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)</p><p> 4.4.1 整體E-R圖設(shè)計(jì)</p><p> 實(shí)體-聯(lián)系圖(Entity-Relation Diagram)用來建立數(shù)據(jù)模型,在數(shù)據(jù)庫(kù)系統(tǒng)概論中屬于概
68、念設(shè)計(jì)階段,形成一個(gè)獨(dú)立于機(jī)器,獨(dú)立于DBMS的ER圖模型。 </p><p> 通常將它簡(jiǎn)稱為E-R圖,相應(yīng)地可把用E-R圖描繪的數(shù)據(jù)模型稱為E-R模型。E-R圖提供了表示實(shí)體(即數(shù)據(jù)對(duì)象)、屬性和聯(lián)系的方法,用來描述現(xiàn)實(shí)世界的概念模型。</p><p> 構(gòu)成E-R圖的基本要素是實(shí)體、屬性和聯(lián)系,其表示方法為:</p><p> 實(shí)體:用矩形表示,矩形框內(nèi)
69、寫明實(shí)體名。</p><p> 屬性:用橢圓形或圓角矩形表示,并用無(wú)向邊將其與相應(yīng)的實(shí)體連接起來;多值屬性由雙線連接;主屬性名稱下加下劃線。</p><p> 聯(lián)系:用菱形表示,菱形框內(nèi)寫明聯(lián)系名,并用無(wú)向邊分別與有關(guān)實(shí)體連接起來,同時(shí)在無(wú)向邊旁標(biāo)上聯(lián)系的類型。</p><p> 本系統(tǒng)的E-R圖如圖4-2所示。</p><p> 圖
70、4-2 整體E-R設(shè)計(jì)圖</p><p> 4.4.2 數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)</p><p> 用戶表主要記錄了注冊(cè)用戶的信息,其中用戶編號(hào)是用戶表的主鍵,唯一標(biāo)識(shí)一個(gè)用戶。系統(tǒng)中的用戶可以對(duì)歌曲進(jìn)行增、刪、改、查等操作。如表4-2所示。</p><p> 表4-2 用戶表(user)</p><p> 歌手表主要記錄了歌手的信息,其中歌
71、手編號(hào)是歌手表的主鍵,唯一標(biāo)識(shí)一個(gè)歌手。系統(tǒng)中,用戶和游客都可以對(duì)歌手進(jìn)行操作,可以搜索到歌手唱的歌曲。當(dāng)用戶和游客輸入要搜索的歌手名稱時(shí),系統(tǒng)會(huì)根據(jù)輸入的歌手名字在歌手表中查找歌手確定歌手的編號(hào),根據(jù)歌手編號(hào)上歌曲表中找到對(duì)應(yīng)的歌曲,顯示在你收縮結(jié)果的顯示頁(yè)面,從而達(dá)到用戶和游客想要完成的要求。如表4-3所示。</p><p> 表4-3 歌手表(singer)</p><p> 歌
72、曲表主要描述歌手對(duì)應(yīng)歌曲的相關(guān)信息,其中歌曲編碼是歌曲表中的主鍵,唯一標(biāo)識(shí)一個(gè)歌曲??梢酝ㄟ^歌曲編碼找到對(duì)應(yīng)的歌手,再找到歌手的信息。在系統(tǒng)中,用戶和游客都可以對(duì)音樂進(jìn)行下載和試聽操作。如表4-4所示。</p><p> 表4-4 歌曲表(song)</p><p> 留言表描述了用戶留言情況,留言編碼作為留言表的主鍵,唯一地確定了用戶留言的唯一性。在系統(tǒng)中,只有用戶能給歌手留言,游客
73、不能對(duì)其進(jìn)行操作。如表4-5所示。</p><p> 表4-5 留言表(message)</p><p> 本系統(tǒng)的所有功能有以上四個(gè)表聯(lián)系而成,其中singer和song表用外鍵構(gòu)成多表連接。外鍵為歌手編號(hào),當(dāng)查詢時(shí),點(diǎn)擊搜索就會(huì)通過歌手表中的歌手編碼去到歌曲表中的歌手編碼,從而對(duì)應(yīng)到歌所唱的歌曲編碼。把查詢的內(nèi)容顯示到查詢結(jié)果頁(yè)面。用戶表就儲(chǔ)存注冊(cè)的用戶信息。留言表就單獨(dú)接收用戶對(duì)
74、歌手的留言。</p><p> 5 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)</p><p> 5.1 游客模塊的實(shí)現(xiàn)</p><p> 5.1.1 登陸頁(yè)面的實(shí)現(xiàn)</p><p> 如圖5-1所示,是本次開發(fā)項(xiàng)目的主頁(yè)中登陸部分。如果你是該系統(tǒng)已經(jīng)注冊(cè)過的用戶,可以直接輸入你的用戶名和密碼正確的進(jìn)入自己的主頁(yè),進(jìn)行自己想要完成的操作,進(jìn)而達(dá)到自己的要求。
75、</p><p> 圖5-1 界面實(shí)現(xiàn)圖</p><p> @SuppressWarnings("unchecked")</p><p> public String login() throws Exception </p><p><b> {</b></p><p
76、> Map u = new HashMap();</p><p> u.put("userName", username);</p><p> u.put("password", password);</p><p> if(getServMgr().getUserService().getAdminByUser
77、nameAndPassword(u) != 0 ){</p><p> indexUrl = (String) getSession().remove(Constants.ORIGINAL_URL);</p><p> getSession().clear();// 清空原始Session信息</p><p> getSession().put(Constan
78、ts.LOGIN_USER, u);</p><p> if (indexUrl == null) {</p><p> return "home";</p><p><b> }else{</b></p><p> return SUCCESS;</p><p>&l
79、t;b> }</b></p><p><b> }else{</b></p><p> errorInfo = WRONG;</p><p> return ERROR;</p><p><b> }</b></p><p> 5.1.2 搜索
80、歌手的實(shí)現(xiàn)</p><p> 如圖5-2所示,是音樂系統(tǒng)中實(shí)現(xiàn)的搜索界面,在頁(yè)面的右上角輸入要搜索的歌手名字,點(diǎn)擊搜索按鈕,就會(huì)出現(xiàn)你搜索的歌手對(duì)應(yīng)的歌曲的列表,在此列表中用戶和游客可以進(jìn)行試聽和下載操作。</p><p> 圖5-2 用戶和游客搜索界面實(shí)現(xiàn)圖</p><p> public String search1() throws Unsupporte
81、dEncodingException {</p><p> System.out.println(singerName);</p><p> System.out.println(URLDecoder.decode(singerName,"UTF-8"));</p><p> System.out.println(URLDecoder.de
82、code(singerName,"GBK"));</p><p> System.out.println(URLDecoder.decode(URLDecoder.decode(singerName,"UTF-8"),"UTF-8"));</p><p> System.out.println(en2utf8(singerNa
83、me));</p><p> System.out.println(getRequest().getCharacterEncoding());</p><p> songList = getServMgr().getUserService().getSingerSong(singerName);</p><p> System.out.println(sing
84、erName);</p><p> return "search1";</p><p><b> }</b></p><p> 5.2 用戶模塊的實(shí)現(xiàn)</p><p> 5.2.1 上傳歌曲的實(shí)現(xiàn)</p><p> 如圖5-3所示,是用戶模塊中用戶添加歌曲頁(yè)面,在此頁(yè)
85、面中用戶可以添加自己想要添加的歌曲,點(diǎn)擊提交按鈕,就可以成功提交添加內(nèi)容。</p><p> 圖5-3 用戶添加界面實(shí)現(xiàn)圖</p><p> public String uploadMusic() throws Exception {</p><p><b> try {</b></p><p> String[
86、] attachment = new String[] { "" };</p><p> String newFileName = null;// 循環(huán)處理多個(gè)上傳文件</p><p> if (file != null) {</p><p> for (int i = 0; i < file.size(); i++) {</p
87、><p> fileFileName.set(i, new String(fileFileName.get(i)</p><p> .getBytes("UTF-8"), "UTF-8"));</p><p> String path = ServletActionContext.getServletContext()<
88、;/p><p> .getRealPath("/music");</p><p> File dir = new File(path);</p><p> // 如果這個(gè)目錄不存在,則創(chuàng)建它。</p><p> if (!dir.exists()) {</p><p> dir.mkdir()
89、;</p><p><b> }</b></p><p> // 判斷上傳文件名是否有擴(kuò)展名</p><p> // if (index != -1){</p><p> // newFileName = now + fileFileName.get(i).substring(index);</p>
90、<p> // } else {</p><p> // newFileName = Long.toString(now);</p><p><b> // }</b></p><p> // 把新文件名存入附件文件名數(shù)組</p><p> attachment[i] = fileFileName.
91、get(i);</p><p> BufferedOutputStream bos = null;</p><p> BufferedInputStream bis = null;</p><p> // 讀取保存在臨時(shí)目錄下的上傳文件,寫入到新的文件中。</p><p><b> try {</b></p
92、><p> FileInputStream fis = new FileInputStream(file.get(i));</p><p> bis = new BufferedInputStream(fis);</p><p> // System.out.println("------------------------------------&qu
93、ot;+fileFileName.get(i));</p><p> FileOutputStream fos = new FileOutputStream(new File(</p><p> dir, fileFileName.get(i)));</p><p> // System.out.println("++++++++++++++++++
94、++++++++++++++++++++"+fileFileName.get(i));</p><p> bos = new BufferedOutputStream(fos);</p><p> byte[] buf = new byte[4096];</p><p> int len = -1;</p><p> whi
95、le ((len = bis.read(buf)) != -1) {</p><p> // System.out.println("===================================="+fileFileName.get(i));</p><p> bos.write(buf, 0, len);</p><p><
96、b> }</b></p><p> } catch (FileNotFoundException e) {</p><p> e.printStackTrace();</p><p> } catch (IOException eio) {eio.printStackTrace();</p><p> } fina
97、lly {</p><p> try {if (null != bis)</p><p> bis.close();</p><p> } catch (IOException e) {e.printStackTrace();</p><p><b> }try {</b></p><p>
98、; if (null != bos)</p><p> bos.close();</p><p> } catch (IOException e) {</p><p> e.printStackTrace();</p><p><b> }}}}</b></p><p> getSer
99、vMgr().getUserService().addSinger(singerName);</p><p> int i = getServMgr().getUserService().getSingerInfo(singerName);</p><p> System.out.println(i);</p><p> getServMgr().getUse
100、rService().addMusic(getParameters(), i,</p><p> attachment);</p><p> addMessage("上傳成功");</p><p> addRedirURL("返回音樂列表", "./index!musicList.action");&
101、lt;/p><p> } catch (Exception e1) {</p><p> setResult(ERROR);</p><p> addMessage("上傳失敗");</p><p> addRedirURL("返回", "@back");</p>
102、<p><b> }</b></p><p> return EXECUTE_RESULT;</p><p><b> }</b></p><p> 5.2.2 修改歌手的實(shí)現(xiàn)</p><p> 如圖5-4所示,是歌曲管理系統(tǒng)修改實(shí)現(xiàn)界面,在該頁(yè)面中用戶可以對(duì)歌曲的名字和歌手名字
103、進(jìn)行相應(yīng)的修改,點(diǎn)擊確定按鈕歌曲的新信息就會(huì)被修改成功。</p><p> 圖5-4 歌曲信息修改界面實(shí)現(xiàn)圖</p><p> public String modify() throws Exception {</p><p> try {int i = getServMgr().getUserService().getSingerIdBySongId(son
104、gId);</p><p> System.out.println(i);</p><p> if ((getServMgr().getUserService().modify(getParameters()) == 1)</p><p> && (getServMgr().getUserService().modify1(singerName
105、, i) == 1)) {</p><p> addMessage("修改成功!");</p><p> addRedirURL("返回音樂列表", "./index!musicList.action");</p><p><b> } else {</b></p>
106、<p> setResult(ERROR);</p><p> addMessage("修改失??!");</p><p> addRedirURL("返回修改頁(yè)面", "@back");</p><p><b> }</b></p><p>
107、 } catch (Exception e) {</p><p> setResult(ERROR);</p><p> addMessage("修改失敗!");</p><p> addRedirURL("返回修改頁(yè)面", "@back");</p><p> }retu
108、rn EXECUTE_RESULT;</p><p><b> }</b></p><p> 5.2.3 刪除歌曲的實(shí)現(xiàn)</p><p> 如圖5-5所示,是歌曲管理系統(tǒng)中的刪除歌曲頁(yè)面。管理員可以在此頁(yè)面中對(duì)歌曲進(jìn)行刪除,只要點(diǎn)擊歌曲列表中歌曲后面的刪除就可以對(duì)此歌曲的所有信息進(jìn)行刪除。</p><p> 圖5
109、-5 歌曲刪除界面實(shí)現(xiàn)圖</p><p> public String deleteSong() throws Exception {</p><p><b> try {</b></p><p> if (getServMgr().getUserService().deleteSong(songId) == 1) </p>
110、<p><b> {</b></p><p> addMessage("刪除成功!");</p><p> addRedirURL("返回音樂列表", "./index!musicList.action");</p><p><b> }</b>
111、;</p><p><b> else {</b></p><p> setResult(ERROR);</p><p> addMessage("刪除失敗");</p><p> addRedirURL("返回修改頁(yè)面", "@back");</
112、p><p><b> }</b></p><p> } catch (Exception e) {</p><p> setResult(ERROR);</p><p> addMessage("刪除失敗");</p><p> addRedirURL("返回修
113、改頁(yè)面", "@back");</p><p><b> }</b></p><p> return EXECUTE_RESULT;</p><p><b> }</b></p><p><b> }</b></p><
114、p> 5.2.4 留言的實(shí)現(xiàn)</p><p> 如圖5-6所示,是已經(jīng)注冊(cè)過的用戶對(duì)歌曲評(píng)價(jià)的頁(yè)面。所有注冊(cè)的用戶都可以在這里暢所欲言,發(fā)表自己對(duì)歌曲的理解和對(duì)歌手的喜愛。只要在留言板上留下你要說的話,點(diǎn)擊確定即可發(fā)表留言。</p><p> 圖5-6 留言板界面實(shí)現(xiàn)圖</p><p> public String addMessage() throw
115、s Exception {</p><p><b> try {</b></p><p> if (null != getSession().get(Constants.LOGIN_USER)) {</p><p> if (getServMgr().getUserService().addMessage(messageContent)
116、== 1) {</p><p> addMessage("留言成功!");</p><p> addRedirURL("返回留言頁(yè)面", "./index!message.action");</p><p><b> } else {</b></p><p&g
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電費(fèi)管理系統(tǒng)—計(jì)算機(jī)畢業(yè)設(shè)計(jì)(論文)
- 計(jì)算機(jī)專業(yè)畢業(yè)設(shè)計(jì)論文-學(xué)生考勤系統(tǒng)
- 計(jì)算機(jī)畢業(yè)設(shè)計(jì)論文---家庭理財(cái)系統(tǒng)
- 計(jì)算機(jī)系畢業(yè)設(shè)計(jì)論文
- 計(jì)算機(jī)畢業(yè)設(shè)計(jì)論文--高校師生科研管理系統(tǒng)
- 計(jì)算機(jī)考試管理系統(tǒng)畢業(yè)設(shè)計(jì)論文
- 計(jì)算機(jī)畢業(yè)設(shè)計(jì)-倉(cāng)庫(kù)管理系統(tǒng)
- 計(jì)算機(jī)畢業(yè)設(shè)計(jì)--- 庫(kù)存管理系統(tǒng)
- 計(jì)算機(jī)與通信學(xué)院畢業(yè)設(shè)計(jì)論文
- 計(jì)算機(jī)與通信學(xué)院畢業(yè)設(shè)計(jì)論文
- 計(jì)算機(jī)畢業(yè)設(shè)計(jì)-----賓館管理系統(tǒng)
- 計(jì)算機(jī)與通信學(xué)院畢業(yè)設(shè)計(jì)(論文)
- 網(wǎng)上商城計(jì)算機(jī)畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)(論文)-混沌系統(tǒng)的計(jì)算機(jī)仿真與研究
- 畢業(yè)設(shè)計(jì)論文-鐵路信號(hào)計(jì)算機(jī)聯(lián)鎖系統(tǒng)
- 畢業(yè)設(shè)計(jì)(論文)-計(jì)算機(jī)原棉驗(yàn)配輔助系統(tǒng)的設(shè)計(jì)
- 計(jì)算機(jī)專業(yè)畢業(yè)設(shè)計(jì)---考勤管理系統(tǒng)
- 計(jì)算機(jī)考勤管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 計(jì)算機(jī)系統(tǒng)遠(yuǎn)程維護(hù)畢業(yè)設(shè)計(jì)
- 客戶管理系統(tǒng)計(jì)算機(jī)畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論