版權(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> 電子商務(wù)網(wǎng)站能夠?yàn)槠髽I(yè)和用戶提供綜合信息服務(wù),滿足人們?cè)谏?、工作和學(xué)習(xí)方面的需求,同時(shí)對(duì)企業(yè)實(shí)現(xiàn)跨地區(qū)、跨行業(yè)、跨國(guó)經(jīng)營(yíng)發(fā)揮了重要的作用。</p><p> 課題的主要工作是通過應(yīng)用Struts 2.0+SQL Server 2000開發(fā)一個(gè)流行的電子商務(wù)網(wǎng)站——都市供求信息網(wǎng),實(shí)現(xiàn)
2、為用戶提供信息服務(wù),并盡可能多地提供各類信息,例如求職、招聘、培訓(xùn)、招商、房屋、車輛、出售、求購(gòu)等信息。課題主要設(shè)計(jì)并實(shí)現(xiàn)了信息顯示、信息查詢、信息發(fā)布、信息刪除、信息審核以及付費(fèi)設(shè)置等模塊,課題發(fā)布后,可以為用戶生活、工作和學(xué)習(xí)提供便利,同時(shí)提高企業(yè)知名度,為企業(yè)產(chǎn)品宣傳節(jié)約大量成本。</p><p> 論文首先分析了用戶需求,對(duì)完整系統(tǒng)功能進(jìn)行規(guī)劃。其次,采用SQL Server 2000數(shù)據(jù)庫(kù)實(shí)現(xiàn)信息實(shí)體
3、、信息類別實(shí)體以及管理員實(shí)體的存取。利用Struts2.0框架和Tomcat服務(wù)器完成了各個(gè)模塊的設(shè)計(jì)。</p><p> 論文所實(shí)現(xiàn)的系統(tǒng)功能滿足了對(duì)城市供求信息網(wǎng)對(duì)信息顯示、查詢、發(fā)布以及后臺(tái)進(jì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 章 開發(fā)方法及關(guān)鍵技術(shù)簡(jiǎn)介4</p><p> 2.1 開發(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 主要問題及解決手段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 公共類設(shè)計(jì)11</p><p> 4.1.1 數(shù)據(jù)庫(kù)連接及操作類11</p><p> 4.1.2 業(yè)務(wù)處理類12</p><p> 4.1.3 分頁類14</p><p> 4.2
16、 前臺(tái)頁面設(shè)計(jì)15</p><p> 4.2.1 前臺(tái)頁面概述15</p><p> 4.2.2 前臺(tái)頁面的實(shí)現(xiàn)過程16</p><p> 4.3 前臺(tái)信息顯示設(shè)計(jì)16</p><p> 4.3.1 首頁信息的列表顯示16</p><p> 4.3.2 某類別中所有信息的列表顯示18</p&
17、gt;<p> 4.3.3 某信息詳細(xì)內(nèi)容的顯示19</p><p> 4.3.4 信息列表顯示中的分頁技術(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)過程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)頁面設(shè)計(jì)27</p><p> 4.6.1 后臺(tái)頁面概述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è)和用戶提供綜合信息服務(wù),滿足人們?cè)谏?、工作和學(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、解決的一大問題。面臨困境的企業(yè)和失業(yè)的人們都紛紛涌至網(wǎng)上尋求契機(jī),企業(yè)需要人才,人們需要工作,對(duì)于開發(fā)一個(gè)能夠?yàn)槠髽I(yè)和用戶提供綜合信息服務(wù)的電子商務(wù)網(wǎng)站無疑是一個(gè)發(fā)展良機(jī)。</p><p> 面對(duì)目前的經(jīng)濟(jì)形式,為了滿足現(xiàn)代城市企業(yè)和城市居民的生活,工作以及學(xué)習(xí)的需求,有必要開發(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ì)有大量用戶訪問網(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)用戶、網(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主要是用戶對(duì)用戶的商業(yè)模式,通過
25、為買賣雙方提供一個(gè)在線交易平臺(tái),使賣方可以主動(dòng)提供商品上網(wǎng)拍賣,而買方可以自行選擇商品進(jìn)行競(jìng)價(jià)。代表網(wǎng)站有易趣網(wǎng)和淘寶網(wǎng)。</p><p><b> (2) 國(guó)外方面</b></p><p> 供求信息網(wǎng)站是以不受國(guó)界限制的全球性網(wǎng)絡(luò)Internet為運(yùn)行平臺(tái)的,這一快捷的貿(mào)易方式可以安全的為全社會(huì)服務(wù)。</p><p> 目前,從世界范
26、圍的角度來看,信息化電子商務(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)站開展較早的國(guó)家,在許多領(lǐng)域處于全球領(lǐng)先水平,成為其他國(guó)家開展信息網(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 框架開發(fā)一個(gè)流行的電子商務(wù)網(wǎng)站——都市供求信息網(wǎng)。</p><p> ②網(wǎng)站要求為用戶有償或無償提供盡可能全面的信息,涵蓋生活、工作與學(xué)習(xí)各方面,如求職、招聘、家教、招商、房屋、車輛、出售、求購(gòu)等
28、信息。</p><p> ?、垡环矫鏋橛脩舻纳睢⒐ぷ魈峁┓奖?,另一方面提高企業(yè)知名度,為企業(yè)產(chǎn)品宣傳節(jié)約大量成本。</p><p> ?、芨鶕?jù)用戶的需求,網(wǎng)站中發(fā)布的信息要準(zhǔn)確、有效、全面,對(duì)一些非法、不健康的信息要及時(shí)刪除。還應(yīng)加強(qiáng)網(wǎng)站的安全性,避免在遭受到有意或無意的破壞時(shí),導(dǎo)致系統(tǒng)癱瘓,造成嚴(yán)重?fù)p失。</p><p><b> (2) 預(yù)期目標(biāo)&
29、lt;/b></p><p> ?、俳缑嬖O(shè)計(jì)友好、美觀。</p><p> ?、谠谑醉撝刑峁╊A(yù)覽信息的功能,并且信息分類明確。</p><p> ?、塾脩裟軌蚍奖愕夭榭茨愁悇e中的所有信息和信息的詳細(xì)內(nèi)容。</p><p> ?、苣軌?qū)崿F(xiàn)站內(nèi)信息搜索,如定位查詢、模糊查詢。</p><p> ?、輰?duì)用戶輸入的數(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> 開發(fā)方法及關(guān)鍵技術(shù)簡(jiǎn)介 </p><p><b> 開發(fā)工具與運(yùn)行環(huán)境<
31、;/b></p><p><b> (1)開發(fā)工具</b></p><p> 根據(jù)整個(gè)課題的開發(fā)計(jì)劃,采用的開發(fā)工具是MyEclipse6.0,并采用Tomcat 6.0作為Web服務(wù)器,采用SQL Server 2000數(shù)據(jù)庫(kù),應(yīng)用Struts 2.0開發(fā)框架。</p><p> MyEclipse開發(fā)工具是對(duì)Eclipse ID
32、E的擴(kuò)展,利用它我們可以在數(shù)據(jù)庫(kù)和J2EE的開發(fā)、發(fā)布,以及應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它是功能豐富的J2EE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測(cè)試和發(fā)布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。本課題利用MyEclipse開發(fā)工具進(jìn)行Java Web開發(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頁面的功能。本課題利用Tomcat服務(wù)器響應(yīng)對(duì)HTML頁面的訪問請(qǐng)求,Tomcat作為Servlet容器負(fù)責(zé)處理客戶請(qǐng)求
34、,把請(qǐng)求傳送給Servlet并把結(jié)果返回給客戶。</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開發(fā)框架:Struts 2.0。</p><p> Java開發(fā)包:JDK 1.5。</p><p> 數(shù)據(jù)庫(kù):SQL Server 2000。</p><p> 瀏覽器:IE 6.0。</p><p><b> ?、谟布h(huán)境</b></p><p> 對(duì)硬件環(huán)境無具體要求。&
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)站。它提供了一套框架用來方便地構(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)開發(fā)技術(shù)基礎(chǔ)之上的一種主流開發(fā)架構(gòu),具有組件模塊化、靈活性和重用性的優(yōu)點(diǎn),同時(shí)極大地簡(jiǎn)化了Web應(yīng)用程序的開發(fā)。它合理地將用戶表示邏輯、業(yè)務(wù)邏輯和控制邏輯分離,使得開發(fā)過程變得簡(jiǎn)潔清晰,并提高了軟件的可維護(hù)性和可重用性。 </p><p><b> 數(shù)據(jù)庫(kù)技術(shù)</b></p><p> 數(shù)據(jù)庫(kù)的設(shè)計(jì)在本課題中
38、起著至關(guān)重要的作用,它決定了在后面的開發(fā)中如何進(jìn)行程序編碼。一個(gè)合理、有效的數(shù)據(jù)庫(kù)設(shè)計(jì)可降低程序的復(fù)雜性,使程序開發(fā)的過程更為容易。</p><p> 本課題是一個(gè)中型的供求信息網(wǎng)站,考慮到開發(fā)成本、用戶信息量及客戶需求等問題,采用Microsoft SQL Server 2000作為項(xiàng)目中的數(shù)據(jù)庫(kù)[3]。</p><p> Microsoft SQL Server是一種客戶/服務(wù)器模
39、式的關(guān)系型數(shù)據(jù)庫(kù),它具有很強(qiáng)的數(shù)據(jù)完整性、可伸縮性、可管理性、可編程性;具有均衡與完備的功能;具有較高的性價(jià)比。SQL Server數(shù)據(jù)庫(kù)提供了復(fù)制服務(wù)、數(shù)據(jù)轉(zhuǎn)換服務(wù)、報(bào)表服務(wù),并支持XML語言。使用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來操作數(shù)據(jù)庫(kù)[4]。</p>
40、;<p><b> 主要問題及解決手段</b></p><p> (1)對(duì)于已登錄的用戶要跳過登錄頁面,直接進(jìn)入后臺(tái)主頁</p><p> 課題中實(shí)現(xiàn)該功能的主要技術(shù)就是:在當(dāng)前用戶登錄成功后,向session中注冊(cè)一個(gè)屬性,并為該屬性賦值,當(dāng)用戶再次單擊“進(jìn)入后臺(tái)”超鏈接時(shí),在程序中先獲取存儲(chǔ)在session中該屬性的值,然后通過判斷其值來得知當(dāng)
41、前用戶是否已經(jīng)登錄,從而決定將請(qǐng)求轉(zhuǎn)發(fā)到登錄頁面還是后臺(tái)首頁。</p><p> (2) Struts 2.0中的中文亂碼問題</p><p> 在Struts 2.0中解決中文亂碼的問題,可在struts.properties文件中進(jìn)行如下配置。</p><p> struts.i18n.encoding=gb2312</p><p>
42、; struts.i18n.encoding用來設(shè)置Web應(yīng)用默認(rèn)的編碼,gb2312則指定了默認(rèn)的編碼。</p><p> 該方法可以解決提交表單后出現(xiàn)的中文亂碼問題。此時(shí),表單的method屬性值必須為post,若使用Struts 2.0中的form標(biāo)簽實(shí)現(xiàn)的表單,可省略method屬性,默認(rèn)值為post;若是通過原始的HTML語言的form標(biāo)識(shí)實(shí)現(xiàn)的表單,則需要設(shè)置method屬性,并賦值為post。&
43、lt;/p><p> 如果某個(gè)超鏈接傳遞的參數(shù)的值是中文字符,則在Action業(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ì)。用戶可以通過前臺(tái)進(jìn)行信息瀏覽,信息搜索,信息發(fā)布。管理員可以通過前臺(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、主要將列表顯示給用戶已付費(fèi)信息和分類顯示免費(fèi)信息。通過單擊導(dǎo)航欄中的信息類別超鏈接,將顯示該類別下的所有詳細(xì)信息。</p><p> (2) 信息搜索,用戶可以通過該模塊對(duì)網(wǎng)站內(nèi)信息進(jìn)行定位搜索和模糊搜索。</p><p> (3) 信息發(fā)布,用戶可通過此頁面發(fā)布信息,在頁面中用戶需要選擇要發(fā)布信息的類別,然后填寫信息內(nèi)容和聯(lián)系方式等;在后臺(tái)信息顯示頁面中,管理員可刪除信息,并通過單擊
49、“審核”或信息標(biāo)題超鏈接進(jìn)入信息審核頁面審核信息。</p><p> (4) 進(jìn)入后臺(tái),管理員可以通過登陸模塊進(jìn)入后臺(tái)管理供求信息。</p><p> (5) 為了防止任意用戶進(jìn)入后臺(tái),進(jìn)行非法操作,所以設(shè)置登錄功能。管理員可登陸后臺(tái)進(jìn)行刪除信息,并通過單擊“審核”或信息標(biāo)題超鏈接進(jìn)入信息審核頁面審核信息,并對(duì)信息進(jìn)行付費(fèi)設(shè)置以及退出登陸。</p><p>
50、①后臺(tái)登錄功能,用戶通過單擊前臺(tái)頁面頂部的“進(jìn)入后臺(tái)”超鏈接,進(jìn)入后臺(tái)登錄頁面。當(dāng)用戶沒有輸入用戶名和密碼,或輸入了錯(cuò)誤的用戶名和密碼進(jìn)行登錄時(shí),會(huì)返回登錄頁面顯示相應(yīng)的提示信息。</p><p> ?、谛畔h除功能,信息刪除用來刪除一些發(fā)布的無效信息,在每條信息在操作欄中都提供了一個(gè)“刪除”超鏈接。</p><p> ?、坌畔徍斯δ?,用戶發(fā)布信息后,不能直接顯示在頁面中,需要管理員來審
51、核該信息是否可以發(fā)布。</p><p> ?、芨顿M(fèi)設(shè)置功能,付費(fèi)管理可以將信息設(shè)置為“已付費(fèi)”狀態(tài)。對(duì)于已付費(fèi)的信息在前臺(tái)頁面顯示時(shí),始終顯示在頁面的頂部位置,以便第一時(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í)體、信息類別實(shí)體和管理員實(shí)體。</p><p> 供求信息實(shí)體包括信息編號(hào)、所屬類型、信息標(biāo)題、信息內(nèi)容、聯(lián)系人、聯(lián)系電話、E-mail、發(fā)布時(shí)間、審核狀態(tài)和付費(fèi)狀態(tài)屬性。</p><p> 其中審核狀態(tài)與付費(fèi)狀態(tài)屬性分別用來標(biāo)識(shí)信息是否審核與付費(fèi),1表示“是”,0表示
53、“否”。</p><p> 信息類別實(shí)體包括類別編號(hào)、類別標(biāo)識(shí)、類別名稱和類別介紹屬性。</p><p> 管理員實(shí)體包括編號(hào)、用戶名和密碼屬性。</p><p> 創(chuàng)建與實(shí)體對(duì)應(yīng)的數(shù)據(jù)表,它們?yōu)閿?shù)據(jù)表tb_info、tb_type和tb_user,分別對(duì)應(yīng)著供求信息實(shí)體、信息類別實(shí)體和管理員實(shí)體。其中數(shù)據(jù)表tb_info與tb_type之間相互關(guān)聯(lián)。<
54、/p><p> 供求信息表用來保存發(fā)布的所有類別的信息,該表的結(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字段表示信息所屬類別,它與info_type表中的type_sign字段相關(guān)聯(lián)。info_state字段和
55、info_payfor字段分別用來表示信息的審核狀態(tài)與付費(fèi)狀態(tài),取值為1表示“已通過審核”或“已付費(fèi)”狀態(tài),取值為0表示“未通過審核”或“未付費(fèi)”狀態(tài)。</p><p> 信息類別表用來保存信息所屬的類別,如招聘信息、求職信息等,該表的結(jié)構(gòu)如表3-2所示。</p><p> 表3-2 tb_type表的結(jié)構(gòu)</p><p> 管理員表用來保存管理員信息,該表
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> 公共類設(shè)計(jì)</b></p><p> 在本課題中,經(jīng)常需要在不同的方法中進(jìn)行相同處理,例如數(shù)據(jù)庫(kù)連接和字符串處理等,為了避免重復(fù)編碼,所以將這些
57、處理封裝到單獨(dú)的公共類中。在本課題中,用到的公共類有數(shù)據(jù)庫(kù)連接及操作類、分頁類和字符串處理類3個(gè)公共類。</p><p><b> 數(shù)據(jù)庫(kù)連接及操作類</b></p><p><b> (1) 功能描述</b></p><p> DB類主要是對(duì)數(shù)據(jù)庫(kù)的操作,如連接、關(guān)閉數(shù)據(jù)庫(kù)及執(zhí)行SQL語句操作數(shù)據(jù)庫(kù)。每一種操作對(duì)應(yīng)
58、一個(gè)方法,如getCon()方法用來獲取數(shù)據(jù)庫(kù)連接,closed()方法用來關(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)入所需的類包并聲明類的屬性然后賦值。主要代碼如下:</p><p> private Conne
59、ction con;//表示連接到數(shù)據(jù)庫(kù)的連接</p><p> private PreparedStatement pstm;//用來執(zhí)行SQL語句</p><p> private String user="sa";//登錄數(shù)據(jù)庫(kù)的默認(rèn)用戶名</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)語句實(shí)現(xiàn)數(shù)據(jù)庫(kù)驅(qū)動(dòng)的加載。通過new操作符實(shí)例化一個(gè)DB類的同時(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類的getConnection()方法獲取一個(gè)Connection類實(shí)例,建立連接到URL指定的數(shù)據(jù)庫(kù),并制定數(shù)據(jù)庫(kù)的用戶名和密碼,代碼如下。</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類對(duì)象的execute方法來執(zhí)行SQL語句。若執(zhí)行查詢的SQL語句,則調(diào)用getResultSet()方法返回ResultSet結(jié)果集對(duì)象。若執(zhí)行更新的SQL語句,則調(diào)用getUpdateCount()方法返回影響的記錄數(shù)。</p><p><b> 業(yè)務(wù)處理類</b></p&g
64、t;<p><b> (1)功能描述</b></p><p> 業(yè)務(wù)處理類OpDB類實(shí)現(xiàn)了處理本課題中用戶請(qǐng)求的所有業(yè)務(wù)的操作,包括信息顯示、信息發(fā)布、管理員登錄、信息審核、信息刪除等。每一個(gè)用戶請(qǐng)求的業(yè)務(wù),在OpDB類中都對(duì)應(yīng)著一個(gè)方法,具有相同性質(zhì)的業(yè)務(wù)可在一個(gè)方法中實(shí)現(xiàn)。在這些方法中,通過調(diào)用DB類中的doPstm()方法來對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。</p>&
65、lt;p><b> (2)程序?qū)崿F(xiàn)</b></p><p> ?、貽pGetListBox()方法</p><p> OpGetListBox()方法用來獲取所有的信息類別,實(shí)現(xiàn)前臺(tái)頁面中的導(dǎo)航菜單項(xiàng)與后臺(tái)的“信息類別”下拉列表框中的選項(xiàng)。方法中首先調(diào)用DB類的doPstm()方法查詢tb_type數(shù)據(jù)表中的所有記錄,然后依次取出每條記錄中的type_sig
66、n與type_intro字段內(nèi)容,并分別作為TreeMap對(duì)象的key值與value值進(jìn)行保存,最后返回該Map對(duì)象。</p><p> OpGetListBox()方法在處理用戶訪問前臺(tái)首頁請(qǐng)求的Action類中被調(diào)用,在該Action類中將返回的TreeMap對(duì)象保存在session范圍內(nèi),在請(qǐng)求返回JSP頁面后,可通過Struts 2.0標(biāo)簽獲取該TreeMap對(duì)象,實(shí)現(xiàn)導(dǎo)航菜單或下拉列表[7]
67、。</p><p> ②OpListShow()方法</p><p> OpListShow()方法用來實(shí)現(xiàn)具有列表顯示信息功能的業(yè)務(wù),例如搜索信息、查看某類別下的所有信息等。在方法中首先調(diào)用DB類的doPstm()方法查詢數(shù)據(jù)庫(kù),接著調(diào)用getRs()方法獲取查詢后的結(jié)果集,然后依次將結(jié)果集中的記錄封裝到InfoSingle類對(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í)用來顯示被操作信息的詳細(xì)內(nèi)容。方法中首先查詢數(shù)據(jù)庫(kù),獲取指定條件的記錄,然后將記錄封裝到InfoSingle類對(duì)象中,最后返回該對(duì)象。</p><p> ?、?/p>
69、OpUpdate()方法</p><p> 本系統(tǒng)的信息發(fā)布、信息審核、信息刪除和付費(fèi)設(shè)置業(yè)務(wù)具有相同的性質(zhì),都是根據(jù)指定的SQL語句來更新數(shù)據(jù)庫(kù)。OpUpdate()方法用來實(shí)現(xiàn)該業(yè)務(wù),方法中首先調(diào)用DB類的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類的doPstm()方法更新數(shù)據(jù)庫(kù)</p><p> i=mydb.getCount();//獲取更新
71、操作所影響的記錄數(shù)</p><p><b> return i;</b></p><p><b> }</b></p><p> ?、軱ogOn()方法</p><p> LogOn()方法用來實(shí)現(xiàn)管理員登錄操作的身份驗(yàn)證業(yè)務(wù),該方法通過查詢數(shù)據(jù)庫(kù)來判斷請(qǐng)求登錄的用戶是否存在,若存在則返回tr
72、ue,否則返回false。LogOn()方法的關(guān)鍵代碼如下:</p><p> public boolean LogOn(String sql,Object[] params){</p><p> mydb.doPstm(sql, params);//查詢數(shù)據(jù)庫(kù)</p><p> ResultSet rs=mydb.getRs();//
73、獲取結(jié)果集</p><p> boolean mark=(rs==null||!rs.next()?false:true); //判斷用戶是否存在</p><p> return mark;</p><p><b> }</b></p><p> ?、轔pCreatePage()方法</p><
74、;p> OpCreatePage()方法用來設(shè)置分頁信息,這些信息包括總記錄數(shù)、總頁數(shù)、當(dāng)前頁、分頁狀態(tài)和分頁導(dǎo)航鏈接等。OpCreatePage()方法主要就是將分頁信息封裝到CreatePage類對(duì)象中,然后返回該CreatePage對(duì)象。在CreatePage類中定義了存儲(chǔ)分頁信息的屬性,并且創(chuàng)建了對(duì)應(yīng)的setXXX()與getXXX()方法來存取這些屬性。</p><p><b> 分
75、頁類</b></p><p><b> (1)功能描述</b></p><p> CreatePage類用來封裝分頁信息,這些信息都保存在CreatePage類的相應(yīng)屬性中。</p><p><b> (2)程序?qū)崿F(xiàn)</b></p><p> 首先在CreatePage類的構(gòu)造方
76、法中為這些屬性賦初始值。代碼如下:</p><p> public CreatePage(){</p><p> CurrentP=1;//設(shè)置當(dāng)前頁碼為1</p><p> AllP=1;//設(shè)置總頁數(shù)為1</p><p> AllR=0;//設(shè)置總記錄數(shù)為0</p><p
77、> PerR=3;//設(shè)置每頁顯示3條記錄</p><p> PageLink=""; //分頁導(dǎo)航欄信息</p><p> PageInfo=""; //分頁狀態(tài)顯示信息</p><p><b> }</b>
78、</p><p> 總頁數(shù)需要獲得總記錄數(shù)后與每頁顯示的記錄數(shù)計(jì)算得到,其算法為:“總頁數(shù)=(總記錄數(shù)%每頁顯示記錄==0)?(總記錄數(shù)/每頁顯示記錄):(總記錄數(shù)/每頁顯示記錄+1)”,所以要先設(shè)置總記錄數(shù),然后再來設(shè)置總頁數(shù)。CreatePage類中用來設(shè)置總頁數(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)前頁碼時(shí),要判斷由參數(shù)傳遞的當(dāng)前頁碼是否有效,例如傳遞的值是否為數(shù)字形式、是否小于1、是否大于總頁數(shù)等,對(duì)這些情況要進(jìn)行相應(yīng)的處理。</p><p> 可以調(diào)用設(shè)置分頁狀態(tài)顯示信息
80、的方法來設(shè)置分頁狀態(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+="每頁顯示:"+PerR+"/"+AllR+" 條記錄!";</p><p> PageInfo+="當(dāng)前頁:"+CurrentP+"/"+AllP+" 頁!";</p><p>
82、 PageInfo+="</td></tr></table>";</p><p><b> }</b></p><p><b> }</b></p><p><b> 前臺(tái)頁面設(shè)計(jì)</b></p><p>
83、 都市供求信息網(wǎng)分為前后臺(tái)的設(shè)計(jì),其中前臺(tái)主要實(shí)現(xiàn)信息顯示、信息搜索與信息發(fā)布功能。</p><p><b> 前臺(tái)頁面概述</b></p><p> 本系統(tǒng)中所有的前臺(tái)頁面都采用一種頁面框架。該頁面框架采用二分欄結(jié)構(gòu),分為4個(gè)區(qū)域,即頁頭、側(cè)欄、頁尾和內(nèi)容顯示區(qū)。都市供求信息網(wǎng)的前臺(tái)首頁運(yùn)行效果如圖4-1所示。</p><p> 圖4-
84、1 都市供求信息網(wǎng)的前臺(tái)首頁</p><p> 實(shí)現(xiàn)前臺(tái)頁面框架的JSP文件為IndexTemp.jsp。本課題中,對(duì)前臺(tái)用戶所有請(qǐng)求的響應(yīng)都通過該框架頁面進(jìn)行顯示。在IndexTemp.jsp文件中主要采用include動(dòng)作和include指令來包含各區(qū)域所對(duì)應(yīng)的JSP文件。因?yàn)轫擃^、頁尾和側(cè)欄是不變的,所以可以在框架頁面中事先指定;而對(duì)于內(nèi)容顯示區(qū)中的內(nèi)容則應(yīng)根據(jù)用戶的操作來顯示,所以該區(qū)域要顯示的頁面是動(dòng)
85、態(tài)改變的,可通過一個(gè)存儲(chǔ)在request范圍內(nèi)的屬性值指定[9]。例如,對(duì)用戶訪問網(wǎng)站首頁的請(qǐng)求,可在處理該請(qǐng)求的類中向request中注冊(cè)一個(gè)屬性,并設(shè)置其值為default.jsp,這樣當(dāng)響應(yīng)返回到框架頁面后,可在頁面中獲取該值,根據(jù)該值加載相應(yīng)頁面;若用戶觸發(fā)了“發(fā)布信息”請(qǐng)求,則設(shè)置該屬性值為addInfo.jsp,此時(shí)在IndexTemp.jsp中就會(huì)顯示信息發(fā)布的頁面。</p><p><b&g
86、t; 前臺(tái)頁面的實(shí)現(xiàn)過程</b></p><p> 根據(jù)以上的頁面概述及分析,需要分別創(chuàng)建實(shí)現(xiàn)各區(qū)域的JSP文件,包括實(shí)現(xiàn)頁頭的top.jsp、實(shí)現(xiàn)側(cè)欄的left.jsp、頁尾文件end.jsp和首頁中需要在內(nèi)容顯示區(qū)顯示的default.jsp等JSP文件。</p><p> 在框架頁面IndexTemp.jsp中通過<base>HTML標(biāo)識(shí)設(shè)置當(dāng)前路徑,這
87、樣,在該頁面中的所有的URI,都是相對(duì)于basePath指定的路徑[10]。</p><p> 通過<link>HTML標(biāo)識(shí)包含外部CSS樣式文件的代碼如下:</p><p> <link type="text/css" rel="stylesheet" href="css/style.css"><
88、;/p><p> 其中type屬性用來指定文件類型,rel指定鏈接的元素是一個(gè)樣式表文件,href屬性用來指定文件位置。</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種顯示方式——首頁面的信息列表顯示、某類別中所有信息的列表顯示和某信息詳細(xì)內(nèi)
89、容的顯示。</p><p><b> 首頁信息的列表顯示</b></p><p> (1)首頁信息的列表顯示概述</p><p> 該顯示實(shí)現(xiàn)的效果是:以超鏈接方式顯示信息的標(biāo)題,單擊這些超鏈接可查看該信息的詳細(xì)內(nèi)容。該顯示方式將付費(fèi)信息與免費(fèi)信息進(jìn)行分類顯示。對(duì)于所有類別的付費(fèi)信息按照信息的發(fā)布時(shí)間降序排列顯示,如圖4-2所示。<
90、/p><p> 圖4-2 付費(fèi)信息的列表顯示</p><p> 對(duì)于免費(fèi)信息,進(jìn)行歸類顯示,并且每一類中按照信息的發(fā)布時(shí)間降序排列顯示前5條記錄,如圖4-3所示。</p><p> 圖4-3免費(fèi)信息的列表顯示</p><p> (2)首頁信息的列表顯示技術(shù)分析</p><p> 首頁的信息顯示又分為付費(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è)目的,按照用戶訪問、程序處理、頁面顯示這樣的程序流程進(jìn)行設(shè)計(jì)。</p><p> 首先,在JSP頁面中輸出信息。將要顯示的已付費(fèi)信息都存在一個(gè)List集合對(duì)象中,則在頁面
92、中可通過Struts 2.0的iterator標(biāo)簽遍歷這個(gè)集合,然后再使用property標(biāo)簽輸出信息,實(shí)現(xiàn)信息的列表顯示。</p><p> 然后,在程序中生成List集合對(duì)象。因?yàn)樾畔⒍家杂涗浶问奖4嬖跀?shù)據(jù)庫(kù)中,要在頁面中顯示信息,就必須先查詢數(shù)據(jù)庫(kù)獲取符合已付費(fèi)條件的記錄,然后依次將每條記錄封裝到對(duì)應(yīng)的JavaBean中,最后創(chuàng)建一個(gè)List集合對(duì)象存儲(chǔ)這些JavaBean[11]。這個(gè)過程實(shí)際上就是將信
93、息從以記錄存儲(chǔ)的形式轉(zhuǎn)換為通過JavaBean進(jìn)行封裝的過程。</p><p><b> ②實(shí)現(xiàn)免費(fèi)信息顯示</b></p><p> 該功能要實(shí)現(xiàn)的是以超鏈接形式顯示出每個(gè)類別中最新發(fā)布的前5條免費(fèi)信息的標(biāo)題。同樣可采用實(shí)現(xiàn)付費(fèi)信息顯示的技術(shù)分析。</p><p> 某類別中所有信息的列表顯示</p><p>
94、 (1)某類別中所有信息的列表顯示概述</p><p> 該顯示實(shí)現(xiàn)的效果是:顯示出該類別中所有信息的詳細(xì)內(nèi)容。該顯示方式同樣將付費(fèi)信息與免費(fèi)信息進(jìn)行分類顯示。如圖4-4所示。</p><p> 圖4-4 某類別中所有信息的列表顯示</p><p> (2) 某類別中所有信息的列表顯示技術(shù)分析</p><p> 該功能要實(shí)現(xiàn)的是列表顯
95、示該類別下所有已通過審核的信息的詳細(xì)內(nèi)容。它與首頁付費(fèi)信息顯示技術(shù)的實(shí)現(xiàn)是相同的,只不過在頁面中進(jìn)行顯示時(shí),顯示的是信息的詳細(xì)內(nèi)容,這只需通過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)用戶單擊信息標(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)橹伙@示一條記錄,可直接將查詢到的信息封裝到JavaBean對(duì)象中
97、后,在響應(yīng)的頁面中通過property標(biāo)簽輸出[12]。此時(shí)property標(biāo)簽的應(yīng)用與前面列表顯示中property標(biāo)簽的使用是不同的,主要體現(xiàn)在標(biāo)簽的value屬性值的設(shè)置上。</p><p> 信息列表顯示中的分頁技術(shù)</p><p> 本課題是通過數(shù)據(jù)庫(kù)分頁查詢的方法實(shí)現(xiàn)分頁的。通過查詢語句從數(shù)據(jù)庫(kù)中查詢出某頁所要顯示的數(shù)據(jù)。若數(shù)據(jù)表中有10條記錄,以每頁4條記錄來進(jìn)行顯示,要
98、顯示第2頁信息,則只需查詢從第5條開始到第8條的所有記錄。</p><p> 數(shù)據(jù)表存在一個(gè)名稱為id的字段。將其設(shè)置為自動(dòng)編號(hào),這樣數(shù)據(jù)表中的記錄就會(huì)以該字段遞增排列。對(duì)該表進(jìn)行分頁查詢,可使用如下查詢語句,查詢出只在當(dāng)前頁中需要顯示的所有記錄。</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)前頁碼;m為每頁顯示的記錄數(shù);id是一個(gè)被設(shè)為自動(dòng)遞增的字段名;select top(n-1)*m (id) from tb_table子查詢語句表示從tb_table表中查詢出第n頁前的所有記錄;select MAX(id) from(子查詢語句1)as maxid表示從子查詢語
100、句1中查詢出字段id中的最大值。所以整個(gè)SQL語句表示:在tb_table表中,以id字段的內(nèi)容大于一個(gè)指定值的記錄為起點(diǎn),查詢出前m條記錄,該指定值為前n-1頁中id字段內(nèi)容中的最大值。</p><p> 本課題是按照信息的發(fā)布時(shí)間來顯示信息的,最新發(fā)布的信息顯示在最頂部,所以對(duì)查詢出的記錄要按照發(fā)布時(shí)間進(jìn)行降序排列。此時(shí)分頁查詢的SQL語句應(yīng)使用信息的發(fā)布時(shí)間來作為分頁的條件,而不能再使用設(shè)為自動(dòng)編號(hào)的字段
101、了。</p><p><b> 信息發(fā)布模塊設(shè)計(jì)</b></p><p><b> 信息發(fā)布模塊概述</b></p><p> 單擊頁面頂部的“發(fā)布信息”超鏈接,將進(jìn)入信息發(fā)布頁面。在該頁面中,用戶可從下拉列表中選擇一種信息類別(共包括11個(gè)信息類別:公寓信息、招聘信息、求職信息、培訓(xùn)信息、家教信息、房屋信息、車輛信
102、息、求購(gòu)信息、出售信息、招商引資、尋找啟示),然后輸入其他信息,如圖4-6所示。</p><p> 信息錄入完整后,單擊“發(fā)布”按鈕,即可發(fā)布信息。此時(shí),程序會(huì)先驗(yàn)證用戶是否輸入了信息,若驗(yàn)證失敗,則返回信息發(fā)布頁面,進(jìn)行相應(yīng)提示;若驗(yàn)證成功,則會(huì)繼續(xù)驗(yàn)證輸入的“聯(lián)系電話”和E-mail格式是否正確;若該驗(yàn)證成功,則向數(shù)據(jù)庫(kù)中插入記錄,完成發(fā)布操作;信息發(fā)布成功后,返回給用戶信息的ID值。發(fā)布的信息還需要管理員
103、進(jìn)行審核,只有審核成功的信息才能顯示在前臺(tái)頁面中。</p><p> 圖4-6 信息發(fā)布頁面</p><p> 信息發(fā)布模塊的表單驗(yàn)證</p><p> 本課題采用Action類中的驗(yàn)證方法來對(duì)表單數(shù)據(jù)進(jìn)行驗(yàn)證。</p><p> Action類中的驗(yàn)證方法的命名規(guī)則為validateXXX(),其中XXX表示Action類中用來處理
104、請(qǐng)求的某個(gè)方法名稱。當(dāng)請(qǐng)求被轉(zhuǎn)發(fā)給Action類時(shí),該Action會(huì)根據(jù)用戶請(qǐng)求來調(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> 本課題中用來處理前臺(tái)操作的Action類中的Add()方法用來處理信息發(fā)布的請(qǐng)求,在Add()方法中需要編寫向數(shù)據(jù)表中插入記錄的代碼,所以在這之前需要驗(yàn)證用戶輸入的表單數(shù)據(jù)是否為空,可在Ac
105、tion類中實(shí)現(xiàn)validateAdd()方法進(jìn)行驗(yàn)證,驗(yàn)證成功后,會(huì)自動(dòng)調(diào)用Add()方法。</p><p> validateXXX()驗(yàn)證方法不需要返回值,在方法中可將提示信息通過addFieldError()方法進(jìn)行保存,這樣,返回驗(yàn)證失敗的提示頁面后,就可通過fielderror標(biāo)簽輸出提示信息。</p><p> Struts 2.0將根據(jù)是否調(diào)用了addFieldErro
106、r()方法判斷驗(yàn)證是否成功,若validateXXX()方法的程序流程執(zhí)行了addFieldError()方法,則驗(yàn)證失敗,那么在validateXXX()方法的流程結(jié)束后,將返回到配置文件中指定的JSP頁面。</p><p> 信息發(fā)布模塊的實(shí)現(xiàn)過程</p><p> 用戶通過單擊頁面頂部的“發(fā)布信息”超鏈接,進(jìn)入信息發(fā)布頁面,在該頁面中填寫發(fā)布信息后,提交表單,在InfoActio
107、n處理類中獲取表單數(shù)據(jù)進(jìn)行驗(yàn)證,驗(yàn)證成功后向數(shù)據(jù)表中插入數(shù)據(jù),完成信息的發(fā)布。下面按照這個(gè)操作流程,介紹信息發(fā)布的實(shí)現(xiàn)過程。</p><p> (1)實(shí)現(xiàn)頁面頂部的“發(fā)布信息”超鏈接</p><p> 在view目錄下的top.jsp文件中實(shí)現(xiàn)進(jìn)入信息發(fā)布頁面的“發(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類中的Add()方法處理該請(qǐng)求,參數(shù)addType通知Add()方法當(dāng)前請(qǐng)求的操作,其值為linkTo表示僅僅是連接到信息發(fā)布頁面
109、[13];若為add,則表示向數(shù)據(jù)表中插入記錄。</p><p> (1)創(chuàng)建發(fā)布信息的addInfo.jsp頁面。</p><p> 信息發(fā)布頁面addInfo.jsp頁面的關(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>信息類別:</td></p>
111、<p> <td> <s2:select emptyOption="true" list="#session</p><p> typeMap" name="infoSingle.infoType"/></td></p><p> <td>[信息標(biāo)題最多不得超過 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)簽用來實(shí)現(xiàn)下拉列表框,emptyOption屬性取值為true,表示第一個(gè)下拉列表項(xiàng)為空白,取值為false或省略該屬性,則不生成空白列表項(xiàng);list屬性則指定用
116、來生成下拉列表項(xiàng)的數(shù)據(jù)源,若該數(shù)據(jù)源是一個(gè)Map對(duì)象,則默認(rèn)的會(huì)將該Map對(duì)象的key值作為列表項(xiàng)的值,將value值作為列表項(xiàng)的標(biāo)簽顯示給用戶。name屬性指定了與表單的處理類中對(duì)應(yīng)的setXXX()與getXXX()方法。</p><p> fielderror標(biāo)簽用來輸出通過Action類的addFieldError()方法保存的信息,param標(biāo)簽則指定要輸出保存的那條信息。如果要輸出保存的全部信息,可
117、使用<s2:fielderror/>。“%{}”用來計(jì)算表達(dá)式,被計(jì)算的表達(dá)式寫在“{}”中,如<s2:property value="%{100+1}"/>,將輸出“101”,所以,代碼中為param標(biāo)簽的value屬性指定的是字符串值typeError,若寫為<s2:param value="typeError"/>,則此時(shí)的typeError相當(dāng)于一個(gè)頁面
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子商務(wù)系統(tǒng)網(wǎng)站畢業(yè)設(shè)計(jì)
- 電子商務(wù)畢業(yè)設(shè)計(jì)
- 電子商務(wù)畢業(yè)設(shè)計(jì)論文
- 電子商務(wù)專業(yè)畢業(yè)設(shè)計(jì)
- 電子商務(wù)畢業(yè)設(shè)計(jì)論文
- 商務(wù)班電子商務(wù)專業(yè)畢業(yè)設(shè)計(jì)
- 電子商務(wù)用戶認(rèn)證管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 電子商務(wù)網(wǎng)上購(gòu)物系統(tǒng) 畢業(yè)設(shè)計(jì)
- 電子商務(wù)平臺(tái)畢業(yè)設(shè)計(jì)
- 電子商務(wù)畢業(yè)設(shè)計(jì)論文+網(wǎng)站
- 我國(guó)電子商務(wù)現(xiàn)狀畢業(yè)設(shè)計(jì)
- 電子商務(wù)畢業(yè)設(shè)計(jì)開題報(bào)告
- 電子商務(wù)網(wǎng)站畢業(yè)設(shè)計(jì)
- b2c電子商務(wù)系統(tǒng)-畢業(yè)設(shè)計(jì)
- 手機(jī)電子商務(wù)網(wǎng)站系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---電子商務(wù)網(wǎng)站系統(tǒng)開發(fā)
- 畢業(yè)設(shè)計(jì)電子商務(wù)系統(tǒng)分析與設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---電子商務(wù)網(wǎng)站建設(shè)
- 電子商務(wù)網(wǎng)站畢業(yè)設(shè)計(jì)論文
- 電子商務(wù)網(wǎng)站畢業(yè)設(shè)計(jì) (2)
評(píng)論
0/150
提交評(píng)論