電子商務(wù)系統(tǒng)畢業(yè)設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩40頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  摘 要</b></p><p>  電子商務(wù)網(wǎng)站能夠?yàn)槠髽I(yè)和用戶(hù)提供綜合信息服務(wù),滿(mǎn)足人們?cè)谏?、工作和學(xué)習(xí)方面的需求,同時(shí)對(duì)企業(yè)實(shí)現(xiàn)跨地區(qū)、跨行業(yè)、跨國(guó)經(jīng)營(yíng)發(fā)揮了重要的作用。</p><p>  課題的主要工作是通過(guò)應(yīng)用Struts 2.0+SQL Server 2000開(kāi)發(fā)一個(gè)流行的電子商務(wù)網(wǎng)站——都市供求信息網(wǎng),實(shí)現(xiàn)

2、為用戶(hù)提供信息服務(wù),并盡可能多地提供各類(lèi)信息,例如求職、招聘、培訓(xùn)、招商、房屋、車(chē)輛、出售、求購(gòu)等信息。課題主要設(shè)計(jì)并實(shí)現(xiàn)了信息顯示、信息查詢(xún)、信息發(fā)布、信息刪除、信息審核以及付費(fèi)設(shè)置等模塊,課題發(fā)布后,可以為用戶(hù)生活、工作和學(xué)習(xí)提供便利,同時(shí)提高企業(yè)知名度,為企業(yè)產(chǎn)品宣傳節(jié)約大量成本。</p><p>  論文首先分析了用戶(hù)需求,對(duì)完整系統(tǒng)功能進(jìn)行規(guī)劃。其次,采用SQL Server 2000數(shù)據(jù)庫(kù)實(shí)現(xiàn)信息實(shí)體

3、、信息類(lèi)別實(shí)體以及管理員實(shí)體的存取。利用Struts2.0框架和Tomcat服務(wù)器完成了各個(gè)模塊的設(shè)計(jì)。</p><p>  論文所實(shí)現(xiàn)的系統(tǒng)功能滿(mǎn)足了對(duì)城市供求信息網(wǎng)對(duì)信息顯示、查詢(xún)、發(fā)布以及后臺(tái)進(jìn)行信息審核、信息刪除的相關(guān)功能的需求,軟件界面美觀(guān),操作方便,具有易維護(hù)性和易操作性。</p><p>  關(guān)鍵詞:商務(wù)網(wǎng)站;供求信息;Struts2.0;Tomcat服務(wù)器;信息發(fā)布 <

4、;/p><p><b>  Abstract</b></p><p>  Electronic Commerce website can supply the information service to the customer and enterprise, at the same time, it can provide the life, work, learni

5、ng to people, at the same time, it influence the stride over area to, cross-frontier, enterprise realization.</p><p>  The main problem part works is that 2000 develops a popular Electronic Commerce website-

6、city supply and demand information net by applying Struts 2.0 + SQL Server, come true for the consumer provides information service, information such as, building, vehicle providing information of all kinds, for example

7、job wanted, recruiting, traininging, invite doing business, selling, the demand buying as far as possible many together field, information having designed and realizing Visualization inquire a</p><p>  First

8、 of all, the thesis has analyzed the usefull of made use of the consumer requirement, has carried out a plan on entire system function. Secondly, adopt the SQL Server 2000 data bases realization information entity, infor

9、mation category entity and administrative person entity access. Make use of the Struts2.0 frame and the Tomcat server to have accomplished each modules design.</p><p>  System function realized by thesis has

10、 been satisfied with city supply and demand information net to Visualization, has inquired about, announced as well as the information being in progress examines and verifies, the functional need of relevance, software i

11、nterface that information deletes beautiful, handle on the backstage to defend nature convenient, easy to have gentle operatability.</p><p>  Keywords: Business website; upply information; Struts2.0; Tomcat

12、server; Information Release</p><p><b>  目 錄</b></p><p><b>  摘 要I</b></p><p>  AbstractII</p><p>  第 1 章 引 言1</p><p>  1

13、.1 課題的研究目的和意義1</p><p>  1.2 國(guó)內(nèi)外發(fā)展?fàn)顩r1</p><p>  1.3 研究?jī)?nèi)容及目標(biāo)2</p><p>  第 2 章 開(kāi)發(fā)方法及關(guān)鍵技術(shù)簡(jiǎn)介4</p><p>  2.1 開(kāi)發(fā)工具與運(yùn)行環(huán)境4</p><p>  2.2 關(guān)鍵技術(shù)簡(jiǎn)介5</p><p&

14、gt;  2.2.1 Struts技術(shù)5</p><p>  2.2.2 數(shù)據(jù)庫(kù)技術(shù)5</p><p>  2.3 主要問(wèn)題及解決手段5</p><p>  第 3 章 總體設(shè)計(jì)7</p><p>  3.1 總體設(shè)計(jì)7</p><p>  3.2 功能設(shè)計(jì)8</p><p>  3

15、.3 數(shù)據(jù)庫(kù)設(shè)計(jì)9</p><p>  第 4 章 詳細(xì)設(shè)計(jì)11</p><p>  4.1 公共類(lèi)設(shè)計(jì)11</p><p>  4.1.1 數(shù)據(jù)庫(kù)連接及操作類(lèi)11</p><p>  4.1.2 業(yè)務(wù)處理類(lèi)12</p><p>  4.1.3 分頁(yè)類(lèi)14</p><p>  4.2

16、 前臺(tái)頁(yè)面設(shè)計(jì)15</p><p>  4.2.1 前臺(tái)頁(yè)面概述15</p><p>  4.2.2 前臺(tái)頁(yè)面的實(shí)現(xiàn)過(guò)程16</p><p>  4.3 前臺(tái)信息顯示設(shè)計(jì)16</p><p>  4.3.1 首頁(yè)信息的列表顯示16</p><p>  4.3.2 某類(lèi)別中所有信息的列表顯示18</p&

17、gt;<p>  4.3.3 某信息詳細(xì)內(nèi)容的顯示19</p><p>  4.3.4 信息列表顯示中的分頁(yè)技術(shù)20</p><p>  4.4 信息發(fā)布模塊設(shè)計(jì)20</p><p>  4.4.1 信息發(fā)布模塊概述20</p><p>  4.4.2 信息發(fā)布模塊的表單驗(yàn)證21</p><p>

18、;  4.4.3 信息發(fā)布模塊的實(shí)現(xiàn)過(guò)程22</p><p>  4.5 后臺(tái)登陸模塊設(shè)計(jì)24</p><p>  4.5.1 后臺(tái)登陸模塊功能概述24</p><p>  4.5.2 后臺(tái)登陸模塊程序?qū)崿F(xiàn)25</p><p>  4.6 后臺(tái)頁(yè)面設(shè)計(jì)27</p><p>  4.6.1 后臺(tái)頁(yè)面概述27&

19、lt;/p><p>  4.6.2 后臺(tái)信息管理功能概述28</p><p>  4.6.3 信息顯示模塊30</p><p>  4.6.4 信息審核模塊31</p><p>  4.6.5 信息刪除模塊32</p><p>  4.6.6 信息付費(fèi)設(shè)置模塊32</p><p>  第

20、5 章 結(jié) 論34</p><p><b>  參考文獻(xiàn)35</b></p><p><b>  致 謝37</b></p><p><b>  引 言</b></p><p>  課題的研究目的和意義</p><p>  電子商

21、務(wù)網(wǎng)站能夠?yàn)槠髽I(yè)和用戶(hù)提供綜合信息服務(wù),滿(mǎn)足人們?cè)谏睢⒐ぷ骱蛯W(xué)習(xí)方面的需求,同時(shí)對(duì)企業(yè)實(shí)現(xiàn)跨地區(qū)、跨行業(yè)、跨國(guó)經(jīng)營(yíng)發(fā)揮了重要的作用。本課題的實(shí)現(xiàn)需要對(duì)電子商務(wù)網(wǎng)站概念、作用、功能和特點(diǎn)進(jìn)行了較詳細(xì)的了解,并且對(duì)B2C及C2C兩種商務(wù)網(wǎng)站建設(shè)的交易模式進(jìn)行較全面的研究。</p><p>  目前,面臨全球經(jīng)濟(jì)衰退,全球化的經(jīng)濟(jì)危機(jī)令很多企業(yè)遭遇困境,大量的國(guó)內(nèi)外企業(yè)倒閉或裁員,因此如何獲得信息成為人們和企業(yè)都急需

22、解決的一大問(wèn)題。面臨困境的企業(yè)和失業(yè)的人們都紛紛涌至網(wǎng)上尋求契機(jī),企業(yè)需要人才,人們需要工作,對(duì)于開(kāi)發(fā)一個(gè)能夠?yàn)槠髽I(yè)和用戶(hù)提供綜合信息服務(wù)的電子商務(wù)網(wǎng)站無(wú)疑是一個(gè)發(fā)展良機(jī)。</p><p>  面對(duì)目前的經(jīng)濟(jì)形式,為了滿(mǎn)足現(xiàn)代城市企業(yè)和城市居民的生活,工作以及學(xué)習(xí)的需求,有必要開(kāi)發(fā)一個(gè)都市供求信息網(wǎng)絡(luò)平臺(tái),一方面都市供求信息網(wǎng)能夠?yàn)槠髽I(yè)節(jié)省大量人力資源,企業(yè)不再需要大量的業(yè)務(wù)人員去跑市場(chǎng),從而間接為企業(yè)節(jié)約了成本

23、;另一方面,都市供求信息網(wǎng)能夠收集大量供求信息,將會(huì)有大量用戶(hù)訪(fǎng)問(wèn)網(wǎng)站,有助于提高企業(yè)知名度,同時(shí)緩解城市就業(yè)壓力,因此具有十分重要的意義。</p><p><b>  國(guó)內(nèi)外發(fā)展?fàn)顩r</b></p><p><b>  (1) 國(guó)內(nèi)方面</b></p><p>  我國(guó)在計(jì)算機(jī)擁有量、互聯(lián)網(wǎng)用戶(hù)、網(wǎng)站數(shù)等方面飛速增長(zhǎng),同

24、時(shí)推動(dòng)了信息網(wǎng)站的發(fā)展。信息網(wǎng)站的交易模式也呈現(xiàn)出多樣化。現(xiàn)在我國(guó)的B2B、B2C和C2C都已比較成熟,而且都有幾個(gè)比較突出的代表。</p><p>  B2B主要是進(jìn)行企業(yè)間的產(chǎn)品批發(fā)業(yè)務(wù)。代表網(wǎng)站有阿里巴巴。</p><p>  B2C主要是電子商務(wù)零售業(yè),顧客直接與商家接觸。代表網(wǎng)站:當(dāng)當(dāng)網(wǎng)和卓越網(wǎng)。</p><p>  C2C主要是用戶(hù)對(duì)用戶(hù)的商業(yè)模式,通過(guò)

25、為買(mǎi)賣(mài)雙方提供一個(gè)在線(xiàn)交易平臺(tái),使賣(mài)方可以主動(dòng)提供商品上網(wǎng)拍賣(mài),而買(mǎi)方可以自行選擇商品進(jìn)行競(jìng)價(jià)。代表網(wǎng)站有易趣網(wǎng)和淘寶網(wǎng)。</p><p><b>  (2) 國(guó)外方面</b></p><p>  供求信息網(wǎng)站是以不受?chē)?guó)界限制的全球性網(wǎng)絡(luò)Internet為運(yùn)行平臺(tái)的,這一快捷的貿(mào)易方式可以安全的為全社會(huì)服務(wù)。</p><p>  目前,從世界范

26、圍的角度來(lái)看,信息化電子商務(wù)網(wǎng)絡(luò)的成功應(yīng)用大多是在發(fā)達(dá)國(guó)家,尤其是美國(guó)和歐洲。世界各國(guó)都在大力發(fā)展信息基礎(chǔ)設(shè)施的建設(shè),更新全國(guó)通訊網(wǎng)絡(luò),建立和完善網(wǎng)上商店的供貨共享系統(tǒng),加強(qiáng)信息網(wǎng)站技術(shù)的研究,推動(dòng)信息網(wǎng)站的標(biāo)準(zhǔn)化。美國(guó)是信息網(wǎng)站開(kāi)展較早的國(guó)家,在許多領(lǐng)域處于全球領(lǐng)先水平,成為其他國(guó)家開(kāi)展信息網(wǎng)絡(luò)的示范,目前占全球電子商務(wù)市場(chǎng)的79.1%。目前國(guó)際貿(mào)易形勢(shì)發(fā)生了很大變化,信息網(wǎng)絡(luò)的發(fā)展勢(shì)頭強(qiáng)勁,更促進(jìn)了國(guó)際貿(mào)易經(jīng)濟(jì)的發(fā)展。</p&

27、gt;<p><b>  研究?jī)?nèi)容及目標(biāo)</b></p><p>  (1) 主要任務(wù)及要求</p><p>  ①應(yīng)用Struts 框架開(kāi)發(fā)一個(gè)流行的電子商務(wù)網(wǎng)站——都市供求信息網(wǎng)。</p><p> ?、诰W(wǎng)站要求為用戶(hù)有償或無(wú)償提供盡可能全面的信息,涵蓋生活、工作與學(xué)習(xí)各方面,如求職、招聘、家教、招商、房屋、車(chē)輛、出售、求購(gòu)等

28、信息。</p><p>  ③一方面為用戶(hù)的生活、工作提供方便,另一方面提高企業(yè)知名度,為企業(yè)產(chǎn)品宣傳節(jié)約大量成本。</p><p> ?、芨鶕?jù)用戶(hù)的需求,網(wǎng)站中發(fā)布的信息要準(zhǔn)確、有效、全面,對(duì)一些非法、不健康的信息要及時(shí)刪除。還應(yīng)加強(qiáng)網(wǎng)站的安全性,避免在遭受到有意或無(wú)意的破壞時(shí),導(dǎo)致系統(tǒng)癱瘓,造成嚴(yán)重?fù)p失。</p><p><b>  (2) 預(yù)期目標(biāo)&

29、lt;/b></p><p>  ①界面設(shè)計(jì)友好、美觀(guān)。</p><p> ?、谠谑醉?yè)中提供預(yù)覽信息的功能,并且信息分類(lèi)明確。</p><p> ?、塾脩?hù)能夠方便地查看某類(lèi)別中的所有信息和信息的詳細(xì)內(nèi)容。</p><p> ?、苣軌?qū)崿F(xiàn)站內(nèi)信息搜索,如定位查詢(xún)、模糊查詢(xún)。</p><p> ?、輰?duì)用戶(hù)輸入的數(shù)據(jù),

30、能夠進(jìn)行嚴(yán)格的數(shù)據(jù)檢驗(yàn),并給予信息提示。</p><p> ?、蘧哂胁僮鞣奖?、功能強(qiáng)大的后臺(tái)信息審核功能。</p><p> ?、呔哂胁僮鞣奖愕暮笈_(tái)付費(fèi)設(shè)置功能。</p><p> ?、嗑哂幸拙S護(hù)性和易操作性。</p><p>  開(kāi)發(fā)方法及關(guān)鍵技術(shù)簡(jiǎn)介 </p><p><b>  開(kāi)發(fā)工具與運(yùn)行環(huán)境<

31、;/b></p><p><b>  (1)開(kāi)發(fā)工具</b></p><p>  根據(jù)整個(gè)課題的開(kāi)發(fā)計(jì)劃,采用的開(kāi)發(fā)工具是MyEclipse6.0,并采用Tomcat 6.0作為Web服務(wù)器,采用SQL Server 2000數(shù)據(jù)庫(kù),應(yīng)用Struts 2.0開(kāi)發(fā)框架。</p><p>  MyEclipse開(kāi)發(fā)工具是對(duì)Eclipse ID

32、E的擴(kuò)展,利用它我們可以在數(shù)據(jù)庫(kù)和J2EE的開(kāi)發(fā)、發(fā)布,以及應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它是功能豐富的J2EE集成開(kāi)發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測(cè)試和發(fā)布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。本課題利用MyEclipse開(kāi)發(fā)工具進(jìn)行Java Web開(kāi)發(fā),MyEclipse中支持Tomcat插件,可以方便的控制Tomcat應(yīng)用服務(wù)器的狀態(tài)[1

33、]。</p><p>  Tomcat 是一個(gè)小型的輕量級(jí)應(yīng)用服務(wù)器,Tomcat服務(wù)器除了能夠運(yùn)行Servlet和JSP,還提供了作為Web服務(wù)器了一些特有的功能,如Tomcat管理和控制平臺(tái)、安全域管理和Tomcat閥等。Tomcat和IIS、Apache等Web服務(wù)器一樣,具有處理HTML頁(yè)面的功能。本課題利用Tomcat服務(wù)器響應(yīng)對(duì)HTML頁(yè)面的訪(fǎng)問(wèn)請(qǐng)求,Tomcat作為Servlet容器負(fù)責(zé)處理客戶(hù)請(qǐng)求

34、,把請(qǐng)求傳送給Servlet并把結(jié)果返回給客戶(hù)。</p><p><b>  (2)運(yùn)行環(huán)境</b></p><p><b> ?、佘浖h(huán)境</b></p><p>  操作系統(tǒng):Windows XP。</p><p>  Web服務(wù)器:Tomcat 6.0。</p><p>

35、;  Web開(kāi)發(fā)框架:Struts 2.0。</p><p>  Java開(kāi)發(fā)包:JDK 1.5。</p><p>  數(shù)據(jù)庫(kù):SQL Server 2000。</p><p>  瀏覽器:IE 6.0。</p><p><b>  ②硬件環(huán)境</b></p><p>  對(duì)硬件環(huán)境無(wú)具體要求。&

36、lt;/p><p><b>  關(guān)鍵技術(shù)簡(jiǎn)介</b></p><p><b>  Struts技術(shù)</b></p><p>  本課題采用Struts框架結(jié)構(gòu)設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于Struts的都市供求信息網(wǎng)站。它提供了一套框架用來(lái)方便地構(gòu)建Web應(yīng)用[2]。</p><p>  Struts是建立在當(dāng)前

37、動(dòng)態(tài)網(wǎng)站設(shè)計(jì)領(lǐng)域中JSP、Servlet、XML等相關(guān)開(kāi)發(fā)技術(shù)基礎(chǔ)之上的一種主流開(kāi)發(fā)架構(gòu),具有組件模塊化、靈活性和重用性的優(yōu)點(diǎn),同時(shí)極大地簡(jiǎn)化了Web應(yīng)用程序的開(kāi)發(fā)。它合理地將用戶(hù)表示邏輯、業(yè)務(wù)邏輯和控制邏輯分離,使得開(kāi)發(fā)過(guò)程變得簡(jiǎn)潔清晰,并提高了軟件的可維護(hù)性和可重用性。 </p><p><b>  數(shù)據(jù)庫(kù)技術(shù)</b></p><p>  數(shù)據(jù)庫(kù)的設(shè)計(jì)在本課題中

38、起著至關(guān)重要的作用,它決定了在后面的開(kāi)發(fā)中如何進(jìn)行程序編碼。一個(gè)合理、有效的數(shù)據(jù)庫(kù)設(shè)計(jì)可降低程序的復(fù)雜性,使程序開(kāi)發(fā)的過(guò)程更為容易。</p><p>  本課題是一個(gè)中型的供求信息網(wǎng)站,考慮到開(kāi)發(fā)成本、用戶(hù)信息量及客戶(hù)需求等問(wèn)題,采用Microsoft SQL Server 2000作為項(xiàng)目中的數(shù)據(jù)庫(kù)[3]。</p><p>  Microsoft SQL Server是一種客戶(hù)/服務(wù)器模

39、式的關(guān)系型數(shù)據(jù)庫(kù),它具有很強(qiáng)的數(shù)據(jù)完整性、可伸縮性、可管理性、可編程性;具有均衡與完備的功能;具有較高的性?xún)r(jià)比。SQL Server數(shù)據(jù)庫(kù)提供了復(fù)制服務(wù)、數(shù)據(jù)轉(zhuǎn)換服務(wù)、報(bào)表服務(wù),并支持XML語(yǔ)言。使用SQL Server數(shù)據(jù)庫(kù)可以大容量地存儲(chǔ)數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行合理的邏輯布局,應(yīng)用數(shù)據(jù)庫(kù)對(duì)象可以對(duì)數(shù)據(jù)進(jìn)行復(fù)雜的操作。SQL Server 2000也提供了JDBC編程接口,這樣可以非常方便地應(yīng)用Java來(lái)操作數(shù)據(jù)庫(kù)[4]。</p>

40、;<p><b>  主要問(wèn)題及解決手段</b></p><p>  (1)對(duì)于已登錄的用戶(hù)要跳過(guò)登錄頁(yè)面,直接進(jìn)入后臺(tái)主頁(yè)</p><p>  課題中實(shí)現(xiàn)該功能的主要技術(shù)就是:在當(dāng)前用戶(hù)登錄成功后,向session中注冊(cè)一個(gè)屬性,并為該屬性賦值,當(dāng)用戶(hù)再次單擊“進(jìn)入后臺(tái)”超鏈接時(shí),在程序中先獲取存儲(chǔ)在session中該屬性的值,然后通過(guò)判斷其值來(lái)得知當(dāng)

41、前用戶(hù)是否已經(jīng)登錄,從而決定將請(qǐng)求轉(zhuǎn)發(fā)到登錄頁(yè)面還是后臺(tái)首頁(yè)。</p><p>  (2) Struts 2.0中的中文亂碼問(wèn)題</p><p>  在Struts 2.0中解決中文亂碼的問(wèn)題,可在struts.properties文件中進(jìn)行如下配置。</p><p>  struts.i18n.encoding=gb2312</p><p>

42、;  struts.i18n.encoding用來(lái)設(shè)置Web應(yīng)用默認(rèn)的編碼,gb2312則指定了默認(rèn)的編碼。</p><p>  該方法可以解決提交表單后出現(xiàn)的中文亂碼問(wèn)題。此時(shí),表單的method屬性值必須為post,若使用Struts 2.0中的form標(biāo)簽實(shí)現(xiàn)的表單,可省略method屬性,默認(rèn)值為post;若是通過(guò)原始的HTML語(yǔ)言的form標(biāo)識(shí)實(shí)現(xiàn)的表單,則需要設(shè)置method屬性,并賦值為post。&

43、lt;/p><p>  如果某個(gè)超鏈接傳遞的參數(shù)的值是中文字符,則在A(yíng)ction業(yè)務(wù)控制器中獲取該參數(shù)值后,必須進(jìn)行如下轉(zhuǎn)碼操作,否則獲取的值為亂碼。</p><p>  String sqlvalue=request.getParameter("sqlvalue");     //獲取超鏈接傳遞的參數(shù)</p>

44、<p>  sqlvalue=new String(sqlvalue.getBytes("ISO-8859-1"),"gb2312");  //進(jìn)行轉(zhuǎn)碼操作</p><p><b>  總體設(shè)計(jì)</b></p><p><b>  總體設(shè)計(jì)</b></p>&l

45、t;p>  都市供求信息網(wǎng)分為前、后臺(tái)兩部分設(shè)計(jì)。用戶(hù)可以通過(guò)前臺(tái)進(jìn)行信息瀏覽,信息搜索,信息發(fā)布。管理員可以通過(guò)前臺(tái)的“登錄”超鏈接進(jìn)入后臺(tái)。</p><p>  (1) 都市供求信息網(wǎng)前臺(tái)總體設(shè)計(jì)</p><p>  前臺(tái)主要實(shí)現(xiàn)信息的顯示、搜索與發(fā)布功能。其中信息的顯示包括列表顯示與詳細(xì)內(nèi)容顯示,搜索功能主要包括定位搜索和模糊搜索。</p><p>  

46、都市供求信息網(wǎng)前臺(tái)總體功能結(jié)構(gòu)如圖3-1所示。</p><p>  圖3-1都市供求信息網(wǎng)前臺(tái)總體功能結(jié)構(gòu)圖</p><p>  (2) 都市供求信息網(wǎng)后臺(tái)總體設(shè)計(jì)</p><p>  后臺(tái)主要實(shí)現(xiàn)的功能為信息顯示、信息審核、信息刪除、付費(fèi)設(shè)置與退出登錄,其中的信息顯示功能也分為列表顯示與詳細(xì)內(nèi)容顯示。</p><p>  都市供求信息網(wǎng)后臺(tái)

47、總體功能結(jié)構(gòu)如圖3-2所示。</p><p>  圖3-2都市供求信息網(wǎng)后臺(tái)總體功能結(jié)構(gòu)圖</p><p><b>  功能設(shè)計(jì)</b></p><p>  都市供求信息網(wǎng)前臺(tái)主要實(shí)現(xiàn)信息的顯示、搜索與發(fā)布功能。后臺(tái)主要實(shí)現(xiàn)的功能為信息顯示、信息審核、信息刪除、付費(fèi)設(shè)置與退出登錄。</p><p>  (1) 信息顯示,

48、主要將列表顯示給用戶(hù)已付費(fèi)信息和分類(lèi)顯示免費(fèi)信息。通過(guò)單擊導(dǎo)航欄中的信息類(lèi)別超鏈接,將顯示該類(lèi)別下的所有詳細(xì)信息。</p><p>  (2) 信息搜索,用戶(hù)可以通過(guò)該模塊對(duì)網(wǎng)站內(nèi)信息進(jìn)行定位搜索和模糊搜索。</p><p>  (3) 信息發(fā)布,用戶(hù)可通過(guò)此頁(yè)面發(fā)布信息,在頁(yè)面中用戶(hù)需要選擇要發(fā)布信息的類(lèi)別,然后填寫(xiě)信息內(nèi)容和聯(lián)系方式等;在后臺(tái)信息顯示頁(yè)面中,管理員可刪除信息,并通過(guò)單擊

49、“審核”或信息標(biāo)題超鏈接進(jìn)入信息審核頁(yè)面審核信息。</p><p>  (4) 進(jìn)入后臺(tái),管理員可以通過(guò)登陸模塊進(jìn)入后臺(tái)管理供求信息。</p><p>  (5) 為了防止任意用戶(hù)進(jìn)入后臺(tái),進(jìn)行非法操作,所以設(shè)置登錄功能。管理員可登陸后臺(tái)進(jìn)行刪除信息,并通過(guò)單擊“審核”或信息標(biāo)題超鏈接進(jìn)入信息審核頁(yè)面審核信息,并對(duì)信息進(jìn)行付費(fèi)設(shè)置以及退出登陸。</p><p>  

50、①后臺(tái)登錄功能,用戶(hù)通過(guò)單擊前臺(tái)頁(yè)面頂部的“進(jìn)入后臺(tái)”超鏈接,進(jìn)入后臺(tái)登錄頁(yè)面。當(dāng)用戶(hù)沒(méi)有輸入用戶(hù)名和密碼,或輸入了錯(cuò)誤的用戶(hù)名和密碼進(jìn)行登錄時(shí),會(huì)返回登錄頁(yè)面顯示相應(yīng)的提示信息。</p><p>  ②信息刪除功能,信息刪除用來(lái)刪除一些發(fā)布的無(wú)效信息,在每條信息在操作欄中都提供了一個(gè)“刪除”超鏈接。</p><p> ?、坌畔徍斯δ?,用戶(hù)發(fā)布信息后,不能直接顯示在頁(yè)面中,需要管理員來(lái)審

51、核該信息是否可以發(fā)布。</p><p> ?、芨顿M(fèi)設(shè)置功能,付費(fèi)管理可以將信息設(shè)置為“已付費(fèi)”狀態(tài)。對(duì)于已付費(fèi)的信息在前臺(tái)頁(yè)面顯示時(shí),始終顯示在頁(yè)面的頂部位置,以便第一時(shí)間被瀏覽。</p><p><b>  數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p>  本課題是一個(gè)中型的供求信息網(wǎng)站,可以采用Microsoft SQL Server 2000作為系

52、統(tǒng)中的數(shù)據(jù)庫(kù)。</p><p>  首先,規(guī)劃出本課題所使用的數(shù)據(jù)庫(kù)實(shí)體,它們分別為供求信息實(shí)體、信息類(lèi)別實(shí)體和管理員實(shí)體。</p><p>  供求信息實(shí)體包括信息編號(hào)、所屬類(lèi)型、信息標(biāo)題、信息內(nèi)容、聯(lián)系人、聯(lián)系電話(huà)、E-mail、發(fā)布時(shí)間、審核狀態(tài)和付費(fèi)狀態(tài)屬性。</p><p>  其中審核狀態(tài)與付費(fèi)狀態(tài)屬性分別用來(lái)標(biāo)識(shí)信息是否審核與付費(fèi),1表示“是”,0表示

53、“否”。</p><p>  信息類(lèi)別實(shí)體包括類(lèi)別編號(hào)、類(lèi)別標(biāo)識(shí)、類(lèi)別名稱(chēng)和類(lèi)別介紹屬性。</p><p>  管理員實(shí)體包括編號(hào)、用戶(hù)名和密碼屬性。</p><p>  創(chuàng)建與實(shí)體對(duì)應(yīng)的數(shù)據(jù)表,它們?yōu)閿?shù)據(jù)表tb_info、tb_type和tb_user,分別對(duì)應(yīng)著供求信息實(shí)體、信息類(lèi)別實(shí)體和管理員實(shí)體。其中數(shù)據(jù)表tb_info與tb_type之間相互關(guān)聯(lián)。<

54、/p><p>  供求信息表用來(lái)保存發(fā)布的所有類(lèi)別的信息,該表的結(jié)構(gòu)如表3-1所示。</p><p>  表3-1 tb_info表的結(jié)構(gòu)</p><p>  續(xù)表3-1 tb_info表的結(jié)構(gòu)</p><p>  其中info_type字段表示信息所屬類(lèi)別,它與info_type表中的type_sign字段相關(guān)聯(lián)。info_state字段和

55、info_payfor字段分別用來(lái)表示信息的審核狀態(tài)與付費(fèi)狀態(tài),取值為1表示“已通過(guò)審核”或“已付費(fèi)”狀態(tài),取值為0表示“未通過(guò)審核”或“未付費(fèi)”狀態(tài)。</p><p>  信息類(lèi)別表用來(lái)保存信息所屬的類(lèi)別,如招聘信息、求職信息等,該表的結(jié)構(gòu)如表3-2所示。</p><p>  表3-2 tb_type表的結(jié)構(gòu)</p><p>  管理員表用來(lái)保存管理員信息,該表

56、的結(jié)構(gòu)如表3-3所示。</p><p>  表3-3 tb_user表的結(jié)構(gòu)</p><p><b>  詳細(xì)設(shè)計(jì)</b></p><p><b>  公共類(lèi)設(shè)計(jì)</b></p><p>  在本課題中,經(jīng)常需要在不同的方法中進(jìn)行相同處理,例如數(shù)據(jù)庫(kù)連接和字符串處理等,為了避免重復(fù)編碼,所以將這些

57、處理封裝到單獨(dú)的公共類(lèi)中。在本課題中,用到的公共類(lèi)有數(shù)據(jù)庫(kù)連接及操作類(lèi)、分頁(yè)類(lèi)和字符串處理類(lèi)3個(gè)公共類(lèi)。</p><p><b>  數(shù)據(jù)庫(kù)連接及操作類(lèi)</b></p><p><b>  (1) 功能描述</b></p><p>  DB類(lèi)主要是對(duì)數(shù)據(jù)庫(kù)的操作,如連接、關(guān)閉數(shù)據(jù)庫(kù)及執(zhí)行SQL語(yǔ)句操作數(shù)據(jù)庫(kù)。每一種操作對(duì)應(yīng)

58、一個(gè)方法,如getCon()方法用來(lái)獲取數(shù)據(jù)庫(kù)連接,closed()方法用來(lái)關(guān)閉數(shù)據(jù)庫(kù)連接,而對(duì)數(shù)據(jù)庫(kù)的增、刪、改、查等操作都在doPstm()方法中實(shí)現(xiàn)的[5]。</p><p><b>  (2) 程序?qū)崿F(xiàn)</b></p><p>  首先,導(dǎo)入所需的類(lèi)包并聲明類(lèi)的屬性然后賦值。主要代碼如下:</p><p>  private Conne

59、ction con;//表示連接到數(shù)據(jù)庫(kù)的連接</p><p>  private PreparedStatement pstm;//用來(lái)執(zhí)行SQL語(yǔ)句</p><p>  private String user="sa";//登錄數(shù)據(jù)庫(kù)的默認(rèn)用戶(hù)名</p><p>  private String password=&quo

60、t;sa";//登錄數(shù)據(jù)庫(kù)的密碼</p><p>  private String className="com.microsoft.jdbc.sqlserver.SQLServerDriver";</p><p>  private String url="jdbc:microsoft:sqlserver://localhost:1433;

61、</p><p>  DatabaseName=db_CityInfo"; //數(shù)據(jù)庫(kù)URL</p><p>  然后,在覆蓋默認(rèn)構(gòu)造方法中使用Class.forName(className)語(yǔ)句實(shí)現(xiàn)數(shù)據(jù)庫(kù)驅(qū)動(dòng)的加載。通過(guò)new操作符實(shí)例化一個(gè)DB類(lèi)的同時(shí),就會(huì)加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)。</p><p>  完成數(shù)據(jù)庫(kù)驅(qū)動(dòng)的加載后,創(chuàng)建獲取數(shù)據(jù)庫(kù)連接的方法ge

62、tCon(),在方法中使用DriverManager類(lèi)的getConnection()方法獲取一個(gè)Connection類(lèi)實(shí)例,建立連接到URL指定的數(shù)據(jù)庫(kù),并制定數(shù)據(jù)庫(kù)的用戶(hù)名和密碼,代碼如下。</p><p>  con=DriverManager.getConnection(url,user,password);</p><p>  最后,創(chuàng)建對(duì)數(shù)據(jù)庫(kù)進(jìn)行增、刪、改、查等操作的doPs

63、tm()方法,方法中首先調(diào)用getCon()方法獲取數(shù)據(jù)庫(kù)連接,然后使用PreparedStatement類(lèi)對(duì)象的execute方法來(lái)執(zhí)行SQL語(yǔ)句。若執(zhí)行查詢(xún)的SQL語(yǔ)句,則調(diào)用getResultSet()方法返回ResultSet結(jié)果集對(duì)象。若執(zhí)行更新的SQL語(yǔ)句,則調(diào)用getUpdateCount()方法返回影響的記錄數(shù)。</p><p><b>  業(yè)務(wù)處理類(lèi)</b></p&g

64、t;<p><b>  (1)功能描述</b></p><p>  業(yè)務(wù)處理類(lèi)OpDB類(lèi)實(shí)現(xiàn)了處理本課題中用戶(hù)請(qǐng)求的所有業(yè)務(wù)的操作,包括信息顯示、信息發(fā)布、管理員登錄、信息審核、信息刪除等。每一個(gè)用戶(hù)請(qǐng)求的業(yè)務(wù),在OpDB類(lèi)中都對(duì)應(yīng)著一個(gè)方法,具有相同性質(zhì)的業(yè)務(wù)可在一個(gè)方法中實(shí)現(xiàn)。在這些方法中,通過(guò)調(diào)用DB類(lèi)中的doPstm()方法來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。</p>&

65、lt;p><b>  (2)程序?qū)崿F(xiàn)</b></p><p> ?、貽pGetListBox()方法</p><p>  OpGetListBox()方法用來(lái)獲取所有的信息類(lèi)別,實(shí)現(xiàn)前臺(tái)頁(yè)面中的導(dǎo)航菜單項(xiàng)與后臺(tái)的“信息類(lèi)別”下拉列表框中的選項(xiàng)。方法中首先調(diào)用DB類(lèi)的doPstm()方法查詢(xún)tb_type數(shù)據(jù)表中的所有記錄,然后依次取出每條記錄中的type_sig

66、n與type_intro字段內(nèi)容,并分別作為T(mén)reeMap對(duì)象的key值與value值進(jìn)行保存,最后返回該Map對(duì)象。</p><p>  OpGetListBox()方法在處理用戶(hù)訪(fǎng)問(wèn)前臺(tái)首頁(yè)請(qǐng)求的Action類(lèi)中被調(diào)用,在該Action類(lèi)中將返回的TreeMap對(duì)象保存在session范圍內(nèi),在請(qǐng)求返回JSP頁(yè)面后,可通過(guò)Struts 2.0標(biāo)簽獲取該TreeMap對(duì)象,實(shí)現(xiàn)導(dǎo)航菜單或下拉列表[7]

67、。</p><p> ?、贠pListShow()方法</p><p>  OpListShow()方法用來(lái)實(shí)現(xiàn)具有列表顯示信息功能的業(yè)務(wù),例如搜索信息、查看某類(lèi)別下的所有信息等。在方法中首先調(diào)用DB類(lèi)的doPstm()方法查詢(xún)數(shù)據(jù)庫(kù),接著調(diào)用getRs()方法獲取查詢(xún)后的結(jié)果集,然后依次將結(jié)果集中的記錄封裝到InfoSingle類(lèi)對(duì)象中,并將該對(duì)象保存到List集合中,最后返回該List

68、集合對(duì)象。</p><p> ?、跲pSingleShow()方法</p><p>  OpSingleShow()方法實(shí)現(xiàn)了查看信息詳細(xì)內(nèi)容的業(yè)務(wù),如在前臺(tái)查看某信息的詳細(xì)內(nèi)容、在后臺(tái)進(jìn)行信息審核與付費(fèi)設(shè)置時(shí)用來(lái)顯示被操作信息的詳細(xì)內(nèi)容。方法中首先查詢(xún)數(shù)據(jù)庫(kù),獲取指定條件的記錄,然后將記錄封裝到InfoSingle類(lèi)對(duì)象中,最后返回該對(duì)象。</p><p>  ④

69、OpUpdate()方法</p><p>  本系統(tǒng)的信息發(fā)布、信息審核、信息刪除和付費(fèi)設(shè)置業(yè)務(wù)具有相同的性質(zhì),都是根據(jù)指定的SQL語(yǔ)句來(lái)更新數(shù)據(jù)庫(kù)。OpUpdate()方法用來(lái)實(shí)現(xiàn)該業(yè)務(wù),方法中首先調(diào)用DB類(lèi)的doPstm()方法更新數(shù)據(jù)庫(kù),接著調(diào)用getCount()方法獲取更新操作所影響的記錄數(shù),最后返回該記錄數(shù)。OpUpdate()方法的關(guān)鍵代碼如下:</p><p>  publ

70、ic int OpUpdate (String sql,Object[] params) {</p><p><b>  int i=-1;</b></p><p>  mydb.doPstm(sql, params);//調(diào)用DB類(lèi)的doPstm()方法更新數(shù)據(jù)庫(kù)</p><p>  i=mydb.getCount();//獲取更新

71、操作所影響的記錄數(shù)</p><p><b>  return i;</b></p><p><b>  }</b></p><p>  ⑤LogOn()方法</p><p>  LogOn()方法用來(lái)實(shí)現(xiàn)管理員登錄操作的身份驗(yàn)證業(yè)務(wù),該方法通過(guò)查詢(xún)數(shù)據(jù)庫(kù)來(lái)判斷請(qǐng)求登錄的用戶(hù)是否存在,若存在則返回tr

72、ue,否則返回false。LogOn()方法的關(guān)鍵代碼如下:</p><p>  public boolean LogOn(String sql,Object[] params){</p><p>  mydb.doPstm(sql, params);//查詢(xún)數(shù)據(jù)庫(kù)</p><p>  ResultSet rs=mydb.getRs();//

73、獲取結(jié)果集</p><p>  boolean mark=(rs==null||!rs.next()?false:true); //判斷用戶(hù)是否存在</p><p>  return mark;</p><p><b>  }</b></p><p>  ⑥OpCreatePage()方法</p><

74、;p>  OpCreatePage()方法用來(lái)設(shè)置分頁(yè)信息,這些信息包括總記錄數(shù)、總頁(yè)數(shù)、當(dāng)前頁(yè)、分頁(yè)狀態(tài)和分頁(yè)導(dǎo)航鏈接等。OpCreatePage()方法主要就是將分頁(yè)信息封裝到CreatePage類(lèi)對(duì)象中,然后返回該CreatePage對(duì)象。在CreatePage類(lèi)中定義了存儲(chǔ)分頁(yè)信息的屬性,并且創(chuàng)建了對(duì)應(yīng)的setXXX()與getXXX()方法來(lái)存取這些屬性。</p><p><b>  分

75、頁(yè)類(lèi)</b></p><p><b>  (1)功能描述</b></p><p>  CreatePage類(lèi)用來(lái)封裝分頁(yè)信息,這些信息都保存在CreatePage類(lèi)的相應(yīng)屬性中。</p><p><b>  (2)程序?qū)崿F(xiàn)</b></p><p>  首先在CreatePage類(lèi)的構(gòu)造方

76、法中為這些屬性賦初始值。代碼如下:</p><p>  public CreatePage(){</p><p>  CurrentP=1;//設(shè)置當(dāng)前頁(yè)碼為1</p><p>  AllP=1;//設(shè)置總頁(yè)數(shù)為1</p><p>  AllR=0;//設(shè)置總記錄數(shù)為0</p><p

77、>  PerR=3;//設(shè)置每頁(yè)顯示3條記錄</p><p>  PageLink=""; //分頁(yè)導(dǎo)航欄信息</p><p>  PageInfo=""; //分頁(yè)狀態(tài)顯示信息</p><p><b>  }</b>

78、</p><p>  總頁(yè)數(shù)需要獲得總記錄數(shù)后與每頁(yè)顯示的記錄數(shù)計(jì)算得到,其算法為:“總頁(yè)數(shù)=(總記錄數(shù)%每頁(yè)顯示記錄==0)?(總記錄數(shù)/每頁(yè)顯示記錄):(總記錄數(shù)/每頁(yè)顯示記錄+1)”,所以要先設(shè)置總記錄數(shù),然后再來(lái)設(shè)置總頁(yè)數(shù)。CreatePage類(lèi)中用來(lái)設(shè)置總頁(yè)數(shù)的方法如下:</p><p>  public void setAllP(){</p><p> 

79、 AllP=(AllR%PerR==0)?(AllR/PerR):(AllR/PerR+1);</p><p><b>  }</b></p><p>  在設(shè)置當(dāng)前頁(yè)碼時(shí),要判斷由參數(shù)傳遞的當(dāng)前頁(yè)碼是否有效,例如傳遞的值是否為數(shù)字形式、是否小于1、是否大于總頁(yè)數(shù)等,對(duì)這些情況要進(jìn)行相應(yīng)的處理。</p><p>  可以調(diào)用設(shè)置分頁(yè)狀態(tài)顯示信息

80、的方法來(lái)設(shè)置分頁(yè)狀態(tài)顯示信息。該方法的代碼如下:</p><p>  public void setPageInfo(){</p><p>  if(AllP>1) {</p><p>  PageInfo="<table border='0' cellpadding='3'><tr><t

81、d>";</p><p>  PageInfo+="每頁(yè)顯示:"+PerR+"/"+AllR+" 條記錄!";</p><p>  PageInfo+="當(dāng)前頁(yè):"+CurrentP+"/"+AllP+" 頁(yè)!";</p><p>

82、  PageInfo+="</td></tr></table>";</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  前臺(tái)頁(yè)面設(shè)計(jì)</b></p><p> 

83、 都市供求信息網(wǎng)分為前后臺(tái)的設(shè)計(jì),其中前臺(tái)主要實(shí)現(xiàn)信息顯示、信息搜索與信息發(fā)布功能。</p><p><b>  前臺(tái)頁(yè)面概述</b></p><p>  本系統(tǒng)中所有的前臺(tái)頁(yè)面都采用一種頁(yè)面框架。該頁(yè)面框架采用二分欄結(jié)構(gòu),分為4個(gè)區(qū)域,即頁(yè)頭、側(cè)欄、頁(yè)尾和內(nèi)容顯示區(qū)。都市供求信息網(wǎng)的前臺(tái)首頁(yè)運(yùn)行效果如圖4-1所示。</p><p>  圖4-

84、1 都市供求信息網(wǎng)的前臺(tái)首頁(yè)</p><p>  實(shí)現(xiàn)前臺(tái)頁(yè)面框架的JSP文件為IndexTemp.jsp。本課題中,對(duì)前臺(tái)用戶(hù)所有請(qǐng)求的響應(yīng)都通過(guò)該框架頁(yè)面進(jìn)行顯示。在IndexTemp.jsp文件中主要采用include動(dòng)作和include指令來(lái)包含各區(qū)域所對(duì)應(yīng)的JSP文件。因?yàn)轫?yè)頭、頁(yè)尾和側(cè)欄是不變的,所以可以在框架頁(yè)面中事先指定;而對(duì)于內(nèi)容顯示區(qū)中的內(nèi)容則應(yīng)根據(jù)用戶(hù)的操作來(lái)顯示,所以該區(qū)域要顯示的頁(yè)面是動(dòng)

85、態(tài)改變的,可通過(guò)一個(gè)存儲(chǔ)在request范圍內(nèi)的屬性值指定[9]。例如,對(duì)用戶(hù)訪(fǎng)問(wèn)網(wǎng)站首頁(yè)的請(qǐng)求,可在處理該請(qǐng)求的類(lèi)中向request中注冊(cè)一個(gè)屬性,并設(shè)置其值為default.jsp,這樣當(dāng)響應(yīng)返回到框架頁(yè)面后,可在頁(yè)面中獲取該值,根據(jù)該值加載相應(yīng)頁(yè)面;若用戶(hù)觸發(fā)了“發(fā)布信息”請(qǐng)求,則設(shè)置該屬性值為addInfo.jsp,此時(shí)在IndexTemp.jsp中就會(huì)顯示信息發(fā)布的頁(yè)面。</p><p><b&g

86、t;  前臺(tái)頁(yè)面的實(shí)現(xiàn)過(guò)程</b></p><p>  根據(jù)以上的頁(yè)面概述及分析,需要分別創(chuàng)建實(shí)現(xiàn)各區(qū)域的JSP文件,包括實(shí)現(xiàn)頁(yè)頭的top.jsp、實(shí)現(xiàn)側(cè)欄的left.jsp、頁(yè)尾文件end.jsp和首頁(yè)中需要在內(nèi)容顯示區(qū)顯示的default.jsp等JSP文件。</p><p>  在框架頁(yè)面IndexTemp.jsp中通過(guò)<base>HTML標(biāo)識(shí)設(shè)置當(dāng)前路徑,這

87、樣,在該頁(yè)面中的所有的URI,都是相對(duì)于basePath指定的路徑[10]。</p><p>  通過(guò)<link>HTML標(biāo)識(shí)包含外部CSS樣式文件的代碼如下:</p><p>  <link type="text/css" rel="stylesheet" href="css/style.css"><

88、;/p><p>  其中type屬性用來(lái)指定文件類(lèi)型,rel指定鏈接的元素是一個(gè)樣式表文件,href屬性用來(lái)指定文件位置。</p><p><b>  前臺(tái)信息顯示設(shè)計(jì)</b></p><p>  信息顯示是本系統(tǒng)要實(shí)現(xiàn)的主要功能之一,根據(jù)需求分析與系統(tǒng)設(shè)計(jì),在前臺(tái)要實(shí)現(xiàn)3種顯示方式——首頁(yè)面的信息列表顯示、某類(lèi)別中所有信息的列表顯示和某信息詳細(xì)內(nèi)

89、容的顯示。</p><p><b>  首頁(yè)信息的列表顯示</b></p><p>  (1)首頁(yè)信息的列表顯示概述</p><p>  該顯示實(shí)現(xiàn)的效果是:以超鏈接方式顯示信息的標(biāo)題,單擊這些超鏈接可查看該信息的詳細(xì)內(nèi)容。該顯示方式將付費(fèi)信息與免費(fèi)信息進(jìn)行分類(lèi)顯示。對(duì)于所有類(lèi)別的付費(fèi)信息按照信息的發(fā)布時(shí)間降序排列顯示,如圖4-2所示。<

90、/p><p>  圖4-2 付費(fèi)信息的列表顯示</p><p>  對(duì)于免費(fèi)信息,進(jìn)行歸類(lèi)顯示,并且每一類(lèi)中按照信息的發(fā)布時(shí)間降序排列顯示前5條記錄,如圖4-3所示。</p><p>  圖4-3免費(fèi)信息的列表顯示</p><p>  (2)首頁(yè)信息的列表顯示技術(shù)分析</p><p>  首頁(yè)的信息顯示又分為付費(fèi)信息的顯示

91、與免費(fèi)信息的顯示。</p><p><b> ?、賹?shí)現(xiàn)付費(fèi)信息顯示</b></p><p>  該功能要實(shí)現(xiàn)的是以超鏈接形式顯示出數(shù)據(jù)庫(kù)中所有已付費(fèi)信息的標(biāo)題。要實(shí)現(xiàn)這樣一個(gè)目的,按照用戶(hù)訪(fǎng)問(wèn)、程序處理、頁(yè)面顯示這樣的程序流程進(jìn)行設(shè)計(jì)。</p><p>  首先,在JSP頁(yè)面中輸出信息。將要顯示的已付費(fèi)信息都存在一個(gè)List集合對(duì)象中,則在頁(yè)面

92、中可通過(guò)Struts 2.0的iterator標(biāo)簽遍歷這個(gè)集合,然后再使用property標(biāo)簽輸出信息,實(shí)現(xiàn)信息的列表顯示。</p><p>  然后,在程序中生成List集合對(duì)象。因?yàn)樾畔⒍家杂涗浶问奖4嬖跀?shù)據(jù)庫(kù)中,要在頁(yè)面中顯示信息,就必須先查詢(xún)數(shù)據(jù)庫(kù)獲取符合已付費(fèi)條件的記錄,然后依次將每條記錄封裝到對(duì)應(yīng)的JavaBean中,最后創(chuàng)建一個(gè)List集合對(duì)象存儲(chǔ)這些JavaBean[11]。這個(gè)過(guò)程實(shí)際上就是將信

93、息從以記錄存儲(chǔ)的形式轉(zhuǎn)換為通過(guò)JavaBean進(jìn)行封裝的過(guò)程。</p><p><b>  ②實(shí)現(xiàn)免費(fèi)信息顯示</b></p><p>  該功能要實(shí)現(xiàn)的是以超鏈接形式顯示出每個(gè)類(lèi)別中最新發(fā)布的前5條免費(fèi)信息的標(biāo)題。同樣可采用實(shí)現(xiàn)付費(fèi)信息顯示的技術(shù)分析。</p><p>  某類(lèi)別中所有信息的列表顯示</p><p> 

94、 (1)某類(lèi)別中所有信息的列表顯示概述</p><p>  該顯示實(shí)現(xiàn)的效果是:顯示出該類(lèi)別中所有信息的詳細(xì)內(nèi)容。該顯示方式同樣將付費(fèi)信息與免費(fèi)信息進(jìn)行分類(lèi)顯示。如圖4-4所示。</p><p>  圖4-4 某類(lèi)別中所有信息的列表顯示</p><p>  (2) 某類(lèi)別中所有信息的列表顯示技術(shù)分析</p><p>  該功能要實(shí)現(xiàn)的是列表顯

95、示該類(lèi)別下所有已通過(guò)審核的信息的詳細(xì)內(nèi)容。它與首頁(yè)付費(fèi)信息顯示技術(shù)的實(shí)現(xiàn)是相同的,只不過(guò)在頁(yè)面中進(jìn)行顯示時(shí),顯示的是信息的詳細(xì)內(nèi)容,這只需通過(guò)property標(biāo)簽輸出JavaBean中所有屬性值即可實(shí)現(xiàn)。</p><p>  某信息詳細(xì)內(nèi)容的顯示</p><p>  (1)某信息詳細(xì)內(nèi)容的顯示概述</p><p>  該顯示方式實(shí)現(xiàn)的效果是:顯示選擇的某信息的詳細(xì)內(nèi)

96、容。當(dāng)用戶(hù)單擊信息標(biāo)題超鏈接后,就會(huì)顯示該信息的詳細(xì)內(nèi)容,如圖4-5所示。</p><p>  圖4-5信息詳細(xì)內(nèi)容的顯示</p><p>  (2)某信息詳細(xì)內(nèi)容顯示技術(shù)分析</p><p>  該功能要實(shí)現(xiàn)的是顯示被選中信息的詳細(xì)內(nèi)容。與之前實(shí)現(xiàn)列表顯示技術(shù)不同的是,這里不需要List集合對(duì)象,因?yàn)橹伙@示一條記錄,可直接將查詢(xún)到的信息封裝到JavaBean對(duì)象中

97、后,在響應(yīng)的頁(yè)面中通過(guò)property標(biāo)簽輸出[12]。此時(shí)property標(biāo)簽的應(yīng)用與前面列表顯示中property標(biāo)簽的使用是不同的,主要體現(xiàn)在標(biāo)簽的value屬性值的設(shè)置上。</p><p>  信息列表顯示中的分頁(yè)技術(shù)</p><p>  本課題是通過(guò)數(shù)據(jù)庫(kù)分頁(yè)查詢(xún)的方法實(shí)現(xiàn)分頁(yè)的。通過(guò)查詢(xún)語(yǔ)句從數(shù)據(jù)庫(kù)中查詢(xún)出某頁(yè)所要顯示的數(shù)據(jù)。若數(shù)據(jù)表中有10條記錄,以每頁(yè)4條記錄來(lái)進(jìn)行顯示,要

98、顯示第2頁(yè)信息,則只需查詢(xún)從第5條開(kāi)始到第8條的所有記錄。</p><p>  數(shù)據(jù)表存在一個(gè)名稱(chēng)為id的字段。將其設(shè)置為自動(dòng)編號(hào),這樣數(shù)據(jù)表中的記錄就會(huì)以該字段遞增排列。對(duì)該表進(jìn)行分頁(yè)查詢(xún),可使用如下查詢(xún)語(yǔ)句,查詢(xún)出只在當(dāng)前頁(yè)中需要顯示的所有記錄。</p><p>  select top m * from tb_table where id>(select MAX(id) fro

99、m(select top (n-1)*m (id) from tb_table) as maxid)</p><p>  其中,n為當(dāng)前頁(yè)碼;m為每頁(yè)顯示的記錄數(shù);id是一個(gè)被設(shè)為自動(dòng)遞增的字段名;select top(n-1)*m (id) from tb_table子查詢(xún)語(yǔ)句表示從tb_table表中查詢(xún)出第n頁(yè)前的所有記錄;select MAX(id) from(子查詢(xún)語(yǔ)句1)as maxid表示從子查詢(xún)語(yǔ)

100、句1中查詢(xún)出字段id中的最大值。所以整個(gè)SQL語(yǔ)句表示:在tb_table表中,以id字段的內(nèi)容大于一個(gè)指定值的記錄為起點(diǎn),查詢(xún)出前m條記錄,該指定值為前n-1頁(yè)中id字段內(nèi)容中的最大值。</p><p>  本課題是按照信息的發(fā)布時(shí)間來(lái)顯示信息的,最新發(fā)布的信息顯示在最頂部,所以對(duì)查詢(xún)出的記錄要按照發(fā)布時(shí)間進(jìn)行降序排列。此時(shí)分頁(yè)查詢(xún)的SQL語(yǔ)句應(yīng)使用信息的發(fā)布時(shí)間來(lái)作為分頁(yè)的條件,而不能再使用設(shè)為自動(dòng)編號(hào)的字段

101、了。</p><p><b>  信息發(fā)布模塊設(shè)計(jì)</b></p><p><b>  信息發(fā)布模塊概述</b></p><p>  單擊頁(yè)面頂部的“發(fā)布信息”超鏈接,將進(jìn)入信息發(fā)布頁(yè)面。在該頁(yè)面中,用戶(hù)可從下拉列表中選擇一種信息類(lèi)別(共包括11個(gè)信息類(lèi)別:公寓信息、招聘信息、求職信息、培訓(xùn)信息、家教信息、房屋信息、車(chē)輛信

102、息、求購(gòu)信息、出售信息、招商引資、尋找啟示),然后輸入其他信息,如圖4-6所示。</p><p>  信息錄入完整后,單擊“發(fā)布”按鈕,即可發(fā)布信息。此時(shí),程序會(huì)先驗(yàn)證用戶(hù)是否輸入了信息,若驗(yàn)證失敗,則返回信息發(fā)布頁(yè)面,進(jìn)行相應(yīng)提示;若驗(yàn)證成功,則會(huì)繼續(xù)驗(yàn)證輸入的“聯(lián)系電話(huà)”和E-mail格式是否正確;若該驗(yàn)證成功,則向數(shù)據(jù)庫(kù)中插入記錄,完成發(fā)布操作;信息發(fā)布成功后,返回給用戶(hù)信息的ID值。發(fā)布的信息還需要管理員

103、進(jìn)行審核,只有審核成功的信息才能顯示在前臺(tái)頁(yè)面中。</p><p>  圖4-6 信息發(fā)布頁(yè)面</p><p>  信息發(fā)布模塊的表單驗(yàn)證</p><p>  本課題采用Action類(lèi)中的驗(yàn)證方法來(lái)對(duì)表單數(shù)據(jù)進(jìn)行驗(yàn)證。</p><p>  Action類(lèi)中的驗(yàn)證方法的命名規(guī)則為validateXXX(),其中XXX表示Action類(lèi)中用來(lái)處理

104、請(qǐng)求的某個(gè)方法名稱(chēng)。當(dāng)請(qǐng)求被轉(zhuǎn)發(fā)給Action類(lèi)時(shí),該Action會(huì)根據(jù)用戶(hù)請(qǐng)求來(lái)調(diào)用相應(yīng)的方法處理請(qǐng)求,若在這之前需要進(jìn)行表單數(shù)據(jù)驗(yàn)證,則可實(shí)現(xiàn)與該方法對(duì)應(yīng)的validateXXX()驗(yàn)證方法進(jìn)行驗(yàn)證。</p><p>  本課題中用來(lái)處理前臺(tái)操作的Action類(lèi)中的Add()方法用來(lái)處理信息發(fā)布的請(qǐng)求,在A(yíng)dd()方法中需要編寫(xiě)向數(shù)據(jù)表中插入記錄的代碼,所以在這之前需要驗(yàn)證用戶(hù)輸入的表單數(shù)據(jù)是否為空,可在A(yíng)c

105、tion類(lèi)中實(shí)現(xiàn)validateAdd()方法進(jìn)行驗(yàn)證,驗(yàn)證成功后,會(huì)自動(dòng)調(diào)用Add()方法。</p><p>  validateXXX()驗(yàn)證方法不需要返回值,在方法中可將提示信息通過(guò)addFieldError()方法進(jìn)行保存,這樣,返回驗(yàn)證失敗的提示頁(yè)面后,就可通過(guò)fielderror標(biāo)簽輸出提示信息。</p><p>  Struts 2.0將根據(jù)是否調(diào)用了addFieldErro

106、r()方法判斷驗(yàn)證是否成功,若validateXXX()方法的程序流程執(zhí)行了addFieldError()方法,則驗(yàn)證失敗,那么在validateXXX()方法的流程結(jié)束后,將返回到配置文件中指定的JSP頁(yè)面。</p><p>  信息發(fā)布模塊的實(shí)現(xiàn)過(guò)程</p><p>  用戶(hù)通過(guò)單擊頁(yè)面頂部的“發(fā)布信息”超鏈接,進(jìn)入信息發(fā)布頁(yè)面,在該頁(yè)面中填寫(xiě)發(fā)布信息后,提交表單,在InfoActio

107、n處理類(lèi)中獲取表單數(shù)據(jù)進(jìn)行驗(yàn)證,驗(yàn)證成功后向數(shù)據(jù)表中插入數(shù)據(jù),完成信息的發(fā)布。下面按照這個(gè)操作流程,介紹信息發(fā)布的實(shí)現(xiàn)過(guò)程。</p><p>  (1)實(shí)現(xiàn)頁(yè)面頂部的“發(fā)布信息”超鏈接</p><p>  在view目錄下的top.jsp文件中實(shí)現(xiàn)進(jìn)入信息發(fā)布頁(yè)面的“發(fā)布信息”超鏈接。代碼如下:</p><p>  <a href="info_Add

108、.action?addType=linkTo" style="color:gray">[發(fā)布信息]</a></p><p>  該超鏈接請(qǐng)求的路徑為info_Add.action,根據(jù)在Struts配置文件中的配置,由InfoAction類(lèi)中的Add()方法處理該請(qǐng)求,參數(shù)addType通知Add()方法當(dāng)前請(qǐng)求的操作,其值為linkTo表示僅僅是連接到信息發(fā)布頁(yè)面

109、[13];若為add,則表示向數(shù)據(jù)表中插入記錄。</p><p>  (1)創(chuàng)建發(fā)布信息的addInfo.jsp頁(yè)面。</p><p>  信息發(fā)布頁(yè)面addInfo.jsp頁(yè)面的關(guān)鍵代碼如下:</p><p>  <s2:form action="info_Add.action" theme="simple">&

110、lt;/p><p>  <input type="hidden" name="addType" value="add"/></p><p><b>  <tr></b></p><p>  <td>信息類(lèi)別:</td></p>

111、<p>  <td> <s2:select emptyOption="true" list="#session</p><p>  typeMap" name="infoSingle.infoType"/></td></p><p>  <td>[信息標(biāo)題最多不得超過(guò) 40

112、 個(gè)字符] </td></tr></p><p>  <tr> <td colspan="3"><s2:fielderror><s2:param value="%</p><p>  {'typeError'}"/></s2:fielderror>&l

113、t;/td></tr></p><p><b>  <tr></b></p><p>  <td>信息標(biāo)題:</td></p><p>  <td colspan="2"><s2:textfield name="infoSingle.infoT

114、itle"/></td></tr></p><p>  <tr><td colspan="3"><s2:fielderror><s2:param value="%</p><p>  {'titleError'}"/></s2:fielder

115、ror></td></tr></p><p>  ……//省略了實(shí)現(xiàn)其他表單字段的代碼</p><p>  </s2:form></p><p>  select標(biāo)簽用來(lái)實(shí)現(xiàn)下拉列表框,emptyOption屬性取值為true,表示第一個(gè)下拉列表項(xiàng)為空白,取值為false或省略該屬性,則不生成空白列表項(xiàng);list屬性則指定用

116、來(lái)生成下拉列表項(xiàng)的數(shù)據(jù)源,若該數(shù)據(jù)源是一個(gè)Map對(duì)象,則默認(rèn)的會(huì)將該Map對(duì)象的key值作為列表項(xiàng)的值,將value值作為列表項(xiàng)的標(biāo)簽顯示給用戶(hù)。name屬性指定了與表單的處理類(lèi)中對(duì)應(yīng)的setXXX()與getXXX()方法。</p><p>  fielderror標(biāo)簽用來(lái)輸出通過(guò)Action類(lèi)的addFieldError()方法保存的信息,param標(biāo)簽則指定要輸出保存的那條信息。如果要輸出保存的全部信息,可

117、使用<s2:fielderror/>?!?{}”用來(lái)計(jì)算表達(dá)式,被計(jì)算的表達(dá)式寫(xiě)在“{}”中,如<s2:property value="%{100+1}"/>,將輸出“101”,所以,代碼中為param標(biāo)簽的value屬性指定的是字符串值typeError,若寫(xiě)為<s2:param value="typeError"/>,則此時(shí)的typeError相當(dāng)于一個(gè)頁(yè)面

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論