版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
江蘇海事職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)江蘇海事職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)第一章緒論1.1設(shè)計(jì)背景與意義1.1.1背景2012年7月19日,中國互聯(lián)網(wǎng)絡(luò)信息中心(CNNIC)在北京發(fā)布《第30次中國互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》。報(bào)告顯示,截至2012年6月底,中國網(wǎng)民數(shù)量達(dá)到5.38億,增長速度趨于平穩(wěn),網(wǎng)民數(shù)量居世界第一。眾多商家把握時(shí)代的發(fā)展趨勢,將原本刊登于報(bào)紙、雜志等媒介的高額廣告轉(zhuǎn)向價(jià)格低廉的網(wǎng)絡(luò)平臺(tái),同時(shí)許多個(gè)體經(jīng)營者及個(gè)人也將網(wǎng)絡(luò)廣告作為推廣、宣傳服務(wù)與產(chǎn)品的利器。二手商品即還存在利用價(jià)值的非全新商品,因?yàn)槠洳⒎侨绿攸c(diǎn),所以價(jià)格一般比較便宜,但是商品的主要功能基本還存在,所以存在較高的性價(jià)比。然而,二手商品的需求畢竟比較小,需求者一般為個(gè)人,商家可盈利空間較小,因此針對(duì)該類商品的網(wǎng)上信息發(fā)布系統(tǒng)很少。從而導(dǎo)致了有二手商品轉(zhuǎn)讓或購買意愿的用戶可能要通過貼廣告、參加跳蚤市場這樣的傳統(tǒng)途徑來解決自己的需求。然而,粘貼廣告的方式比較耗費(fèi)精力和財(cái)力,并且收效甚微,所以許多人選擇到集中展示二手商品的跳蚤市場來獲得更大的選擇,但是,我們不可能擁有一個(gè)每天都開放的二手市場,例如在大學(xué)中的一些社團(tuán)每年會(huì)舉辦幾次跳蚤市場,生意相當(dāng)好,但是沒有一個(gè)社團(tuán)會(huì)選擇天天去經(jīng)營這樣的一個(gè)市場,歸根到底還是二手市場的開辦成本和二手商品的需求量之間的經(jīng)濟(jì)矛盾不允許去做這樣一個(gè)長期的經(jīng)營活動(dòng)。因?yàn)榇嬖谥陨系拿埽S多用戶選擇將二手商品擱置或扔掉,極大的浪費(fèi)了資源。我們迫切的需要一個(gè)平臺(tái)來實(shí)現(xiàn)對(duì)二手商品信息的集中存放,滿足更多人群對(duì)二手商品買賣的需求。1.1.2意義本次畢業(yè)設(shè)計(jì)的內(nèi)容主要針對(duì)目前二手商品信息難以集中、信息獲取渠道困難的特點(diǎn),設(shè)計(jì)一個(gè)網(wǎng)上二手商品信息發(fā)布系統(tǒng),為廣大民眾提供快捷高效的信息集中處理平臺(tái)。具體意義如下:1)方便用戶實(shí)時(shí)的查看最新的二手商品信息用戶只需要一臺(tái)電腦,一個(gè)可用的網(wǎng)絡(luò),一個(gè)友好的瀏覽器就可以到網(wǎng)絡(luò)上查看自己需要的商品信息,因?yàn)榫W(wǎng)絡(luò)的特殊的傳輸渠道,賣家發(fā)布的信息,用戶可以立即查詢到,為用戶提供了更加及時(shí)的信息。2)擴(kuò)大了選擇范圍傳統(tǒng)意義上,我們可以在二手市場上看到很多商品,但是這些商品的來源受到地理范圍的限制而只能是附近的一些賣家提供的商品,而且買家一般也都是附近的一些群體。網(wǎng)絡(luò)的普及將世界變成了一個(gè)地球村,在這里你可以看到來自世界各地的商品信息,你的信息也可以被世界各地的人看到,無論是賣家還是買家,都擴(kuò)大了選擇范圍。更慶幸的是,網(wǎng)上銀行、快遞公司的興起也為用戶提供了遠(yuǎn)程交易的可能。3)節(jié)約了人力和財(cái)力傳統(tǒng)意義上的二手物品交易無外乎兩種途徑:一是四處散布廣告;二是通過定期的二手市場集中展示。但是無論是出于哪種途徑,賣家和買家都需要投入大量人力、財(cái)力和時(shí)間。而網(wǎng)絡(luò)上的二手市場可以令賣家和買家足不出戶的免費(fèi)發(fā)布和接收二手物品信息。1.2研究內(nèi)容及主要成果1.2.1主要研究內(nèi)容 本次設(shè)計(jì)的內(nèi)容為基于MVC模型的二手市場的設(shè)計(jì)與實(shí)現(xiàn),系統(tǒng)設(shè)計(jì)以用戶需求為起點(diǎn),按照流程分為系統(tǒng)需求分析、系統(tǒng)功能分析、系統(tǒng)整體架構(gòu)設(shè)計(jì)、系統(tǒng)局部功能的設(shè)計(jì)與實(shí)現(xiàn)。 1.系統(tǒng)需求分析,根據(jù)當(dāng)下二手市場發(fā)展的不足,分析多數(shù)用戶的主要需求。 2.系統(tǒng)功能分析,根據(jù)用戶需求,分析系統(tǒng)需要實(shí)現(xiàn)的功能。 3.系統(tǒng)整體架構(gòu)設(shè)計(jì),在功能需求的基礎(chǔ)上,考慮系統(tǒng)各個(gè)功能之間可能存在的關(guān)聯(lián),設(shè)計(jì)系統(tǒng)的整體組織結(jié)構(gòu)。 4.系統(tǒng)局部功能的設(shè)計(jì)與實(shí)現(xiàn),在對(duì)系統(tǒng)整體結(jié)構(gòu)及功能作詳細(xì)分析的基礎(chǔ)上,研究系統(tǒng)各個(gè)模塊的設(shè)計(jì)與實(shí)現(xiàn)方法。1.2.2主要成果介紹 本次設(shè)計(jì)通過參考資料、請(qǐng)教老師及同學(xué)完成了一個(gè)基于MVC模型的二手市場,該系統(tǒng)為典型的web系統(tǒng),主要目標(biāo)是為了解決傳統(tǒng)二手商品信息傳播困難的特點(diǎn)。 本系統(tǒng)完成了對(duì)二手商品信息的發(fā)布與檢索功能,用戶通過登錄該系統(tǒng)即可瀏覽到來自世界各地的二手商品信息,系統(tǒng)設(shè)計(jì)中加入了二級(jí)檢索功能,方便用戶精確快速的查找到自己需要的信息。另外,本系統(tǒng)提供用戶的注冊(cè)與登錄功能,主要目的在于對(duì)信息發(fā)布者做一個(gè)相關(guān)的信息存儲(chǔ),方便用戶發(fā)布信息、管理信息。
第二章開發(fā)技術(shù)研究2.1B/S系統(tǒng)架構(gòu)介紹 本設(shè)計(jì)主要是參考Web體系結(jié)構(gòu),采用現(xiàn)下常用的B/S(瀏覽器/服務(wù)器)模式,用戶的所有操作都是通過瀏覽器完成和服務(wù)器的交互工作。該系統(tǒng)體系結(jié)構(gòu)主要由前臺(tái)頁面顯示、后臺(tái)邏輯控制、數(shù)據(jù)庫操作幾個(gè)模塊組成。用戶能夠直觀的看到前臺(tái)的頁面顯示,這也是用戶的操作界面,用戶通過頁面操作將信息或命令傳達(dá)到后臺(tái)邏輯控制層,由邏輯層判定下一步操作內(nèi)容,數(shù)據(jù)庫用于負(fù)責(zé)數(shù)據(jù)的持久化問題。Web技術(shù)的發(fā)展,使得管理系統(tǒng)的開發(fā)更方便、功能更強(qiáng)大,在此系統(tǒng)的開發(fā)過程中,Web技術(shù)起了一個(gè)骨架式的支持作用;與此同時(shí)組件技術(shù)的發(fā)展為系統(tǒng)的開放性、集成性提供了便利,有效合理地引入組件技術(shù)是當(dāng)前Web系統(tǒng)開發(fā)與發(fā)展的一個(gè)方向;通過對(duì)系統(tǒng)的開發(fā)進(jìn)行建模,形象直觀的圖形化表示,可以顯示系統(tǒng)的流程與功能。選擇有效的建模方法,充分利用Web技術(shù)與組件技術(shù),提高軟件的開發(fā)效率,提高的軟件的可靠性和可維護(hù)性,是每個(gè)軟件開發(fā)人員所關(guān)心的問題。2.2MVC模型介紹MVC是三個(gè)單詞的縮寫,分別為:模型(Model),視圖(View)和控制Controller)。MVC模式的目的就是實(shí)現(xiàn)Web系統(tǒng)的職能分工。Model層實(shí)現(xiàn)系統(tǒng)中的業(yè)務(wù)邏輯,通??梢杂肑avaBean或EJB來實(shí)現(xiàn)。View層用于與用戶的交互,通常用JSP來實(shí)現(xiàn)。Controller層是Model與View之間溝通的橋梁,它可以分派用戶的請(qǐng)求并選擇恰當(dāng)?shù)囊晥D以用于顯示,同時(shí)它也可以解釋用戶的輸入并將它們映射為模型層可執(zhí)行的操作。MVC模型倡導(dǎo)2個(gè)獨(dú)立的應(yīng)用程序之間應(yīng)該嚴(yán)格的隔離。這種隔離應(yīng)該叫做概念上的隔離,或者,更加專業(yè)的術(shù)語叫做“松耦合”。MVC幾乎所有的的方面都是受這個(gè)目標(biāo)的驅(qū)動(dòng),應(yīng)用程序之間互相保持隔離。松耦合的架構(gòu)方式帶來了許多短期和長期優(yōu)勢:1)易于開發(fā)個(gè)性化的組件之間不再依賴其他的組件,這就意味著他們能夠更加容易的獨(dú)立開發(fā)。組件能夠容易的被替換掉,保護(hù)一個(gè)組件并發(fā)并不受與其交互的其他組件開發(fā)的影響。2)易于測試組件的松耦合允許測試站在“產(chǎn)品”組件的立場上進(jìn)行充分的測試。也就是說,可以通過調(diào)用其他的組件返回一些數(shù)據(jù)從而很容易的避免直接調(diào)用數(shù)據(jù)庫。組件之間和模擬呈現(xiàn)之間容易的交換大大方便了測試的進(jìn)程,隨著時(shí)間的流逝,它能極大的增加系統(tǒng)的可靠性。3)易于維護(hù)邏輯上隔離的組件意味著對(duì)于一些組件變化也是隔離的。因?yàn)轱L(fēng)險(xiǎn)往往是伴隨著的一定范圍的改變產(chǎn)生,因此,更少的修改是一件好事。在本次畢業(yè)設(shè)計(jì)中,MVC作為一個(gè)開發(fā)模型來實(shí)現(xiàn)對(duì)系統(tǒng)的松耦合,系統(tǒng)設(shè)計(jì)中Entity層基本對(duì)應(yīng)MVC中的模型層,Action層基本對(duì)應(yīng)MVC中的控制層,系統(tǒng)頁面展示模塊基本對(duì)應(yīng)MVC中的視圖層。2.3SSH2框架介紹框架,即Framework。其實(shí)就是某種應(yīng)用的半成品,就是一組零件,供你選用完成你自己的系統(tǒng)。簡單說就是使用前人提供的工具,來做你需要做的事情,這樣的話使用者就可以使用現(xiàn)成的工具來完成自己的工作,大大提高了自己的工作效率。為什么要用框架?因?yàn)檐浖到y(tǒng)發(fā)展到今天已經(jīng)很復(fù)雜了,特別是服務(wù)器端軟件,涉及到的知識(shí),內(nèi)容,問題太多。在某些方面使用別人成熟的框架,就相當(dāng)于讓別人幫你完成一些基礎(chǔ)工作,你只需要集中精力完成系統(tǒng)的業(yè)務(wù)邏輯設(shè)計(jì)。而且框架一般是成熟,穩(wěn)健的,他可以處理系統(tǒng)很多細(xì)節(jié)問題,比如,事物處理,安全性,數(shù)據(jù)流控制等問題。還有,框架一般都經(jīng)過很多人使用,所以結(jié)構(gòu)很好,并且擴(kuò)展性也很好,而且它是不斷升級(jí)的,你可以直接享受別人升級(jí)代碼帶來的好處??蚣芤话闾幵诘蛯討?yīng)用平臺(tái)(如J2EE)和高層業(yè)務(wù)邏輯之間的中間層。因?yàn)槟撤N框架用的人多,而且項(xiàng)目比較大,采用以后熟悉該框架技術(shù)的人可以馬上和開發(fā)團(tuán)隊(duì)緊密結(jié)合,從而大幅度的提升工作效率。Struts2+Spring+Hibernate是J2EE的最新流行框架。Spring是一個(gè)開源框架,它由RodJohnson創(chuàng)建。它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務(wù)器端的開發(fā)。從簡單性、可測試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。Hibernate是一個(gè)開放源代碼的對(duì)象關(guān)系映射框架,它對(duì)JDBC進(jìn)行了非常輕量級(jí)的對(duì)象封裝,使得Java程序員可以隨心所欲的使用對(duì)象編程思維來操縱數(shù)據(jù)庫。Hibernate可以應(yīng)用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。Struts2框架是以WebWork基礎(chǔ)上發(fā)展起來的。從某種程度上來講,Struts2沒有繼承Struts1的血統(tǒng),而是繼承WebWork的血統(tǒng)?;蛘哒f,WebWork衍生出了Struts2,因?yàn)镾truts2是WebWork的升級(jí),而不是一個(gè)全新的框架,因此穩(wěn)定性、性能等各方面都有很好的保證:而且吸收了Struts1和WebWork兩者的優(yōu)勢,因此,是一個(gè)非常優(yōu)秀的框架。在本次系統(tǒng)設(shè)計(jì)中,hibernate的功能是實(shí)現(xiàn)對(duì)數(shù)據(jù)的操作,完成數(shù)據(jù)持久化任務(wù);struts2主要功能是實(shí)現(xiàn)action的跳轉(zhuǎn);spring在此次系統(tǒng)中管理hibernate和struts,并提供容器作用,實(shí)現(xiàn)數(shù)據(jù)的一次加載,到處使用。2.4SQLServer2005介紹 SQLServer2005是一個(gè)全面的數(shù)據(jù)庫平臺(tái),使用集成的商業(yè)智能(BI)工具提供了企業(yè)級(jí)的數(shù)據(jù)管理。SQLServer2005數(shù)據(jù)庫引擎為關(guān)系型數(shù)據(jù)和結(jié)構(gòu)化數(shù)據(jù)提供了更安全可靠的存儲(chǔ)功能,使用戶可以構(gòu)建和管理用于業(yè)務(wù)的高可用和高性能的數(shù)據(jù)應(yīng)用程序。與MicrosoftVisualStudio、MicrosoftOfficeSystem以及新的開發(fā)工具包(包括BusinessIntelligenceDevelopmentStudio)的緊密集成使SQLServer2005與眾不同。無論是開發(fā)人員、數(shù)據(jù)庫管理員、信息工作者還是決策者,SQLServer2005都可以為用戶提供創(chuàng)新的解決方案,幫助用戶從數(shù)據(jù)中更多地獲益。SQLServer2005具有以下優(yōu)勢:1.企業(yè)數(shù)據(jù)管理SQLServer2005針對(duì)行業(yè)和分析應(yīng)用程序提供了一種更安全可靠和更高效的數(shù)據(jù)平臺(tái)。SQLServer的最新版本不僅是迄今為止SQLServer的最大發(fā)行版本,而且是最為可靠安全的版本。 2.開發(fā)人員生產(chǎn)效率SQLServer2005提供了一種端對(duì)端的開發(fā)環(huán)境,其中涵蓋了多種新技術(shù),可幫助開發(fā)人員大幅度提高生產(chǎn)效率。3.商業(yè)智能SQLServer2005的綜合分析、集成和數(shù)據(jù)遷移功能使各個(gè)企業(yè)無論采用何種基礎(chǔ)平臺(tái)都可以擴(kuò)展其現(xiàn)有應(yīng)用程序的價(jià)值。構(gòu)建于SQLServer2005的BI解決方案使所有用戶可以及時(shí)獲得關(guān)鍵信息,從而在更短的時(shí)間內(nèi)制定更好的決策。2.5Ajax介紹Ajax并不是一種新的編程語言,而僅僅是一種新的技術(shù),它可以創(chuàng)建更好、更快且交互性更強(qiáng)的web應(yīng)用程序。Ajax使用JavaScript在web瀏覽器與web服務(wù)器之間來發(fā)送和接收數(shù)據(jù)。傳統(tǒng)的web應(yīng)用程序會(huì)把數(shù)據(jù)提交到web服務(wù)器(使用HTML表單)。在web服務(wù)器把數(shù)據(jù)處理完畢之后,會(huì)向用戶返回一張完整的新網(wǎng)頁。由于每當(dāng)用戶提交輸入,服務(wù)器就會(huì)返回新網(wǎng)頁,傳統(tǒng)的web應(yīng)用程序往往運(yùn)行緩慢,且越來越不友好。通過Ajax,web應(yīng)用程序無需重載網(wǎng)頁,就可以發(fā)送并取回?cái)?shù)據(jù)。完成這項(xiàng)工作,需要通過向服務(wù)器發(fā)送HTTP請(qǐng)求(在幕后),并通過當(dāng)服務(wù)器返回?cái)?shù)據(jù)時(shí)使用JavaScript僅僅修改網(wǎng)頁的某部分。通過在幕后與web服務(wù)器交換數(shù)據(jù),而不是每當(dāng)用戶做出改變時(shí)重載整個(gè)web頁面,Ajax技術(shù)可以使網(wǎng)頁更迅速地響應(yīng)。本系統(tǒng)中涉及到的Ajax的應(yīng)用主要體現(xiàn)在頁面信息驗(yàn)證、下屬城市的動(dòng)態(tài)獲取,通過該技術(shù),系統(tǒng)在不發(fā)生頁面跳轉(zhuǎn)的情況下完成前后臺(tái)的數(shù)據(jù)交互。2.6CSS介紹CSS是英語CascadingStyleSheets(層疊樣式表單)的縮寫,它是一種用來表現(xiàn)HTML或XML等文件樣式的計(jì)算機(jī)語言。CSS目前最新版本為CSS3,是能夠真正做到網(wǎng)頁表現(xiàn)與內(nèi)容分離的一種樣式設(shè)計(jì)語言。相對(duì)于傳統(tǒng)HTML的表現(xiàn)而言,CSS能夠?qū)W(wǎng)頁中的對(duì)象的位置排版進(jìn)行像素級(jí)的精確控制,支持幾乎所有的字體字號(hào)樣式,擁有對(duì)網(wǎng)頁對(duì)象和模型樣式編輯的能力,并能夠進(jìn)行初步交互設(shè)計(jì),是目前基于文本展示最優(yōu)秀的表現(xiàn)設(shè)計(jì)語言。CSS能夠根據(jù)不同使用者的理解能力,簡化或者優(yōu)化寫法,針對(duì)各類人群,有較強(qiáng)的易讀性。CSS本身主要功能是完成對(duì)頁面的布局與美化工作,在本系統(tǒng)的實(shí)現(xiàn)中,CSS主要完成頁面整體框架布局、div層的嵌套布局、頁面元素的屬性設(shè)定。2.7開發(fā)和運(yùn)行環(huán)境 本系統(tǒng)采用的是B/S架構(gòu),開發(fā)工具為Eclipse,開發(fā)語言為Java,由于Java的跨平臺(tái)性,理論上該系統(tǒng)可以在任何操作系統(tǒng)上運(yùn)行,以下為具體開發(fā)環(huán)境: 操作系統(tǒng):MicrosoftWindowsXP 開發(fā)語言:Java+JavaScript 開發(fā)工具:Eclipse4.2.0 數(shù)據(jù)庫系統(tǒng):MicrosoftSQLServer2005 應(yīng)用服務(wù)器軟件:Tomcat6.0 圖形編輯軟件:美圖秀秀系統(tǒng)開發(fā)流程 本次畢業(yè)設(shè)計(jì)主要按照以下流程進(jìn)行實(shí)現(xiàn):需求分析、系統(tǒng)功能分析、系統(tǒng)整體架構(gòu)設(shè)計(jì)、系統(tǒng)細(xì)節(jié)設(shè)計(jì)與實(shí)現(xiàn),如下圖2.1所示:需求分析需求分析系統(tǒng)功能分析系統(tǒng)整體架構(gòu)設(shè)計(jì)系統(tǒng)細(xì)節(jié)設(shè)計(jì)與實(shí)現(xiàn) 圖2.1系統(tǒng)開發(fā)流程圖 1.系統(tǒng)需求分析階段,該階段的內(nèi)容主要是分析目前二手市場存在的不足,了解用戶期望目標(biāo)。 2.系統(tǒng)功能分析階段,該階段的主要內(nèi)容是根據(jù)收集到的用戶需求信息,分析該系統(tǒng)需要實(shí)現(xiàn)的功能。 3.系統(tǒng)整體架構(gòu)設(shè)計(jì)階段,該階段的主要內(nèi)容是根據(jù)系統(tǒng)各個(gè)功能的關(guān)聯(lián),設(shè)計(jì)系統(tǒng)架構(gòu),在此階段對(duì)系統(tǒng)具體功能模塊的設(shè)計(jì)不做考慮。 4.系統(tǒng)細(xì)節(jié)設(shè)計(jì)與實(shí)現(xiàn)階段,該階段是根據(jù)系統(tǒng)總體架構(gòu),對(duì)各個(gè)模塊進(jìn)行逐個(gè)分析并制定解決方案,參照方案完成該模塊。
第三章需求分析3.1系統(tǒng)預(yù)期用戶 本系統(tǒng)作為一個(gè)信息發(fā)布系統(tǒng),所有用戶都具有搜索信息的權(quán)限。具體劃分,用戶主要涉及商品信息發(fā)布者與商品信息接收者兩種角色,對(duì)兩種角色現(xiàn)做以下詳細(xì)介紹: 1.商品信息發(fā)布者的存在是該系統(tǒng)存在的基礎(chǔ),商品信息發(fā)布者主要功能是發(fā)布自己的商品轉(zhuǎn)讓信息,因?yàn)樯婕暗絺€(gè)人信息的集中存放與辨識(shí)問題,商品信息發(fā)布者還擁有用戶登錄、用戶個(gè)人信息修改、發(fā)布?xì)v史管理等功能,如下圖3.1所示: 用戶登錄用戶登錄用戶個(gè)人信息管理用戶發(fā)布?xì)v史管理信息索引信息發(fā)布圖3.1商品信息發(fā)布者功能圖 2.商品信息接收者是指沒有登錄該系統(tǒng)的用戶,對(duì)于該用戶,由于沒有登錄系統(tǒng),因此僅提供信息索引、用戶注冊(cè)、用戶登錄(已注冊(cè)用戶)功能,如下圖3.2所示:用戶登錄用戶登錄用戶注冊(cè)信息索引圖3.2商品信息接收者功能圖3.2系統(tǒng)可行性分析 本次設(shè)計(jì)的主要影響因素為技術(shù)的運(yùn)用。從技術(shù)本身來說,由于本系統(tǒng)的功能比較少,技術(shù)上主要涉及SSH2框架、JSP、Ajax和CSS技術(shù),皆是當(dāng)前的主流技術(shù),因此有關(guān)查詢資料比較豐富,可參考文件較多,為實(shí)現(xiàn)本系統(tǒng)提供了有力的保障;其次,本系統(tǒng)的設(shè)計(jì)中不涉及硬件及其他配套設(shè)備,基本上不需要投入其他資金,因此不存在經(jīng)濟(jì)上的困難;第三,本系統(tǒng)功能比較小,所有設(shè)計(jì)與制作均出自一人之手,后期維護(hù)也由同一人承擔(dān),不涉及相關(guān)技術(shù)不了解的情況,不存在管理上的難度。3.3系統(tǒng)功能性需求 針對(duì)目前二手商品信息匯集困難的特點(diǎn),特設(shè)計(jì)本系統(tǒng),因此,系統(tǒng)在功能上要做到以下幾點(diǎn): 1)用戶方面 用戶分為已注冊(cè)用戶與未注冊(cè)用戶,其兩者的主要區(qū)別僅在于已注冊(cè)用戶擁有自己的賬號(hào),個(gè)人資料信息,商品發(fā)布功能,未注冊(cè)用戶僅享受系統(tǒng)提供的信息查詢功能。 2)登陸方面 系統(tǒng)首頁自動(dòng)判定該用戶是否已經(jīng)登陸,對(duì)于已登陸用戶,系統(tǒng)為其保存用戶信息,用戶可以通過右上角的快速鏈接查看個(gè)人信息,對(duì)于尚未登陸用戶,系統(tǒng)右上角僅提供注冊(cè)與登陸鏈接。 3)信息查詢 系統(tǒng)頁面上方提供一個(gè)大的搜索框供用戶直接搜索商品關(guān)鍵字,在首頁提供常見商品的快速鏈接,同時(shí),系統(tǒng)在查詢結(jié)果頁面提供信息的更多約束條件的查詢,方便用戶縮小查詢范圍。另外,系統(tǒng)提供分類查詢功能,方便用戶按種類細(xì)化查詢條件。 4)信息發(fā)布 系統(tǒng)為已登陸用戶提供信息發(fā)布功能,用戶在頁面提交自己的信息表單,填寫必要選項(xiàng),選取商品種類,用戶發(fā)布成功后即可在頁面查看到該條記錄。 5)個(gè)人信息用戶個(gè)人信息是查詢已登陸用戶的個(gè)人相關(guān)信息,包括用戶信息、發(fā)布信息等內(nèi)容,在該頁面可以完成用戶個(gè)人信息的修改,以及已發(fā)布信息的修改和刪除操作。
第四章系統(tǒng)設(shè)計(jì)4.1設(shè)計(jì)目標(biāo)根據(jù)當(dāng)前主流Web系統(tǒng)的設(shè)計(jì)模式,并參考其他類似服務(wù)類網(wǎng)上系統(tǒng)的特點(diǎn),結(jié)合本系統(tǒng)自身的實(shí)際應(yīng)用需求,在本系統(tǒng)的設(shè)計(jì)完成時(shí)將要實(shí)現(xiàn)以下的目標(biāo):1)基本功能實(shí)現(xiàn)。系統(tǒng)本身的出發(fā)點(diǎn)就是完成一項(xiàng)功能,所以,本條目標(biāo)的實(shí)現(xiàn)代表著系統(tǒng)完成程度的關(guān)鍵評(píng)判因素。系統(tǒng)應(yīng)該逐一實(shí)現(xiàn)功能需求中所述的各項(xiàng)功能。2)系統(tǒng)配置靈活。系統(tǒng)應(yīng)該充分尊重用戶的個(gè)性,允許用戶對(duì)涉及自身的某些信息的選擇性輸出,對(duì)一些系統(tǒng)本身運(yùn)行時(shí)不做強(qiáng)烈要求的內(nèi)容,給予用戶充分的自由做選擇性填寫。3)友好的操作界面。系統(tǒng)的基本功能完善的同時(shí),盡量實(shí)現(xiàn)一個(gè)友好的操作界面,在不影響系統(tǒng)正常服務(wù)的情況下,還應(yīng)做到為用戶提供最方便的操作。4)易于日后維護(hù)。這主要是考慮到系統(tǒng)在建成之后可能涉及用戶體驗(yàn)不佳、系統(tǒng)Bug逐漸顯現(xiàn)、系統(tǒng)性能不穩(wěn)定的情況下,方便系統(tǒng)維護(hù)人員能夠?qū)ο到y(tǒng)及時(shí)做出正確調(diào)整。5)易于升級(jí)。一個(gè)優(yōu)秀的系統(tǒng),一個(gè)具有活力的系統(tǒng)必然在一開始就考慮到隨著系統(tǒng)的廣泛應(yīng)用,系統(tǒng)在很多地方需要增加或刪減模塊,這就要求本系統(tǒng)在開發(fā)時(shí)有著清晰的功能層次劃分,能滿足系統(tǒng)在需要升級(jí)或擴(kuò)充時(shí)能夠方便的做出調(diào)整。6)良好的糾錯(cuò)能力。糾錯(cuò)能力主要體現(xiàn)在對(duì)于用戶的一些非法操作能夠及時(shí)給出提示信息,方便用戶改進(jìn)。例如在登陸系統(tǒng)時(shí)用戶名及密碼錯(cuò)誤、密碼為空等常見用戶誤操作行為。4.2系統(tǒng)目錄結(jié)構(gòu)設(shè)計(jì) 系統(tǒng)在設(shè)計(jì)伊始就選擇了使用MVC分層模型和SSH2框架,系統(tǒng)目錄結(jié)構(gòu)大致如圖5.4所示。圖4.1系統(tǒng)架構(gòu)圖系統(tǒng)為Eclipse建立的WebProject,src目錄下存放action、dao、util、service、entity、test六個(gè)主文件夾,其中test文件夾僅用作部分代碼測試使用。action文件夾存放控制層類、dao文件夾中存放系統(tǒng)與數(shù)據(jù)庫之間的操作接口,另外,dao文件夾中還有impl文件夾,用于存放接口的實(shí)現(xiàn)類;、service文件夾存放服務(wù)層接口,service文件夾中還存在impl文件夾,其中存放service層接口的實(shí)現(xiàn)類、util提供系統(tǒng)組件的一些類的存放、entity主要存放實(shí)體類信息,包括表格的映射文件配置信息。系統(tǒng)WebContent目錄下存放自定義文件夾imgs、css、js、pages、util和index.jsp頁面,其中imgs文件夾主要是提供所需圖片的調(diào)用,css文件中存放頁面布局信息,供頁面元素調(diào)用,js文件夾中為JavaScript信息,頁面中的控件通過JavaScript腳本實(shí)現(xiàn)部分功能,pages存放多數(shù)頁面,在本系統(tǒng)中其優(yōu)勢不明顯,在大型系統(tǒng)中,分類的頁面存儲(chǔ)為日后的升級(jí)、維護(hù)提供了極大的方便,util文件夾主要存放一些組件頁面,例如本系統(tǒng)中首頁由header.jsp、footer.jsp、siderbar.jsp、content.jsp頁面組成,頁面組合的應(yīng)用增強(qiáng)了代碼的復(fù)用性,降低了資源浪費(fèi);index.jsp頁面是系統(tǒng)的入口,它提供首頁的跳轉(zhuǎn)操作,解決系統(tǒng)首頁直接加載時(shí)因?yàn)閏ss文件名稱的沖突而帶來的頁面非正常顯示現(xiàn)象。4.3系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)基于用戶使用的便利性以及現(xiàn)今主流實(shí)現(xiàn)方式的考慮,二手市場系統(tǒng)采用現(xiàn)下比較流行的B/S體系架構(gòu)。所謂B/S架構(gòu),就是瀏覽器/服務(wù)器模式,用戶通過瀏覽器訪問系統(tǒng),通過對(duì)瀏覽器實(shí)現(xiàn)與后臺(tái)服務(wù)的數(shù)據(jù)交互工作。相對(duì)于傳統(tǒng)的C/S架構(gòu)(客戶端/服務(wù)器)架構(gòu),B/S架構(gòu)機(jī)構(gòu)的優(yōu)勢體現(xiàn)在以下幾個(gè)方面:極大地降低了客戶端計(jì)算機(jī)的運(yùn)行負(fù)荷,減少了用戶機(jī)器的資源消耗。有利于對(duì)系統(tǒng)的更改和維護(hù),由于系統(tǒng)本身運(yùn)行在服務(wù)器端,因此對(duì)服務(wù)器方的更改即可影響到所有客戶端的訪問數(shù)據(jù)??蛻敉ㄟ^瀏覽器訪問服務(wù)器系統(tǒng),不涉及用戶個(gè)人機(jī)器配置及操作環(huán)境的因素,極大地方便了系統(tǒng)開發(fā)人員的工作量。開發(fā)及設(shè)計(jì)時(shí)無需考慮跨平臺(tái)的實(shí)現(xiàn)問題。4.4系統(tǒng)功能結(jié)構(gòu)設(shè)計(jì) 通過對(duì)系統(tǒng)的深入分析與研究,總結(jié)出系統(tǒng)功能的幾個(gè)主要功能模塊,如圖4.1所示。 基于MVC系統(tǒng)的二手市場基于MVC系統(tǒng)的二手市場用戶個(gè)人中心模塊用戶登陸與注冊(cè)模塊用戶信息索引模塊用戶信息發(fā)布模塊數(shù)據(jù)庫操作模塊圖4.2系統(tǒng)功能模塊圖以下是對(duì)各個(gè)模塊的具體說明:1)用戶登陸與注冊(cè)模塊,該模塊負(fù)責(zé)用戶賬戶的注冊(cè)、登陸和修改功能,同時(shí)提供對(duì)已登陸用戶名的保存功能,使用戶在一次連接中不用再次登陸。2)用戶個(gè)人中心模塊,該模塊的顯示建立在用戶具有賬戶和已登錄情況下,對(duì)于已注冊(cè)用戶,個(gè)人賬戶信息保存在服務(wù)器中,只有在用戶登陸的情況下,才會(huì)出現(xiàn)個(gè)人中心的連接,用戶進(jìn)入個(gè)人中心可以查看自己的相關(guān)信息,包括個(gè)人信息和已發(fā)布信息的修改。3)用戶信息索引模塊,該模塊是本設(shè)計(jì)的主要體現(xiàn)模塊,系統(tǒng)的主要服務(wù)主要都體現(xiàn)在該模塊,用戶能夠通過系統(tǒng)提供的搜索框、城市選項(xiàng)框、時(shí)間選擇、類型選擇功能篩選自己需要的信息。為方便用戶操作,系統(tǒng)首頁面提供常用物品的分類鏈接,方便用戶快速查詢。4)用戶信息發(fā)布模塊,用戶信息發(fā)布模塊建立在用戶具有用戶賬號(hào)和已登錄的情況下,需要發(fā)布信息的用戶必須擁有自己的賬號(hào)來標(biāo)示自己的信息,該功能模塊下,用戶可以選擇自己要發(fā)布的商品信息的所屬類別、設(shè)定商品的期望出售價(jià)格、填寫自己的聯(lián)系方式等。發(fā)布信息時(shí)用戶要指定自己發(fā)布信息的所屬類別,系統(tǒng)不提供物品類別的自動(dòng)判定功能。5)數(shù)據(jù)庫操作模塊,該模塊事實(shí)上對(duì)用戶是透明的,但是涉及到整個(gè)系統(tǒng)數(shù)據(jù)的存儲(chǔ)問題,關(guān)系到系統(tǒng)運(yùn)行的操作性及順暢性,因而不容忽視。數(shù)據(jù)庫模塊主要考慮數(shù)據(jù)表的設(shè)計(jì),包括表間的關(guān)聯(lián)問題,同時(shí)結(jié)合系統(tǒng)設(shè)計(jì)特點(diǎn),設(shè)計(jì)表格使其最高效率的服務(wù)于系統(tǒng)。4.5數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)庫用于存儲(chǔ)系統(tǒng)中涉及到的數(shù)據(jù),實(shí)現(xiàn)主要數(shù)據(jù)的持久化功能,另外,有些數(shù)據(jù)還用于頁面的現(xiàn)實(shí)條用,例如城市表中的下屬城市信息還用于頁面的動(dòng)態(tài)獲取展示,這些信息在需要使用的時(shí)候從數(shù)據(jù)庫查詢調(diào)用,減少頁面的加載負(fù)荷,保證了系統(tǒng)運(yùn)行的順暢。另外,選擇用數(shù)據(jù)庫存儲(chǔ)數(shù)據(jù)能夠方便的直觀地看到系統(tǒng)的數(shù)據(jù)的格式化存儲(chǔ)。本次設(shè)計(jì)采用的數(shù)據(jù)庫軟件為MicrosoftSQLServer2005,本次設(shè)計(jì)中主要有四個(gè)基表和一個(gè)視圖,分表為user_tb(用戶表)、type_tb(類型表)、city_tb(城市表)、info_tb(信息表)、info_view(用戶視圖),如下圖4.3,為數(shù)據(jù)庫中表之間的關(guān)聯(lián)關(guān)系:圖4.3系統(tǒng)表關(guān)聯(lián)以下給出本次設(shè)計(jì)涉及的幾個(gè)主要表格及其相關(guān)說明:1)用戶表(user_tb)負(fù)責(zé)用戶信息的存儲(chǔ),表結(jié)構(gòu)如圖4.4所示。圖4.4用戶表結(jié)構(gòu) user_id:用戶唯一標(biāo)識(shí)字段 user_name:用戶名字段,即登陸賬戶名 password:用戶密碼,即登陸密碼 sex:性別 age:年齡 address:用戶所在地 mail:用戶郵箱,用于驗(yàn)證信息(本次設(shè)計(jì)不做實(shí)現(xiàn)) real_name:用戶真實(shí)姓名,用于實(shí)名認(rèn)證(本次設(shè)計(jì)不做實(shí)現(xiàn))2)類型表(type_tb) 描述發(fā)布商品的所屬類型,類型表嚴(yán)格劃分類型所屬父階類型。表結(jié)構(gòu)如圖4.5所示。圖4.5類型表結(jié)構(gòu) type_id:所屬類型標(biāo)識(shí) type_name:類型名稱描述 super_type:上階類型標(biāo)識(shí)3)城市表(city_tb) 描述商品所在地信息,主要用于實(shí)現(xiàn)下拉框數(shù)據(jù)動(dòng)態(tài)顯示,城市設(shè)置等級(jí)劃分,如:省、市、縣三級(jí)管轄范圍劃分。同時(shí),城市要有自己的隸屬城市id屬性。表結(jié)構(gòu)如圖4.6所示。圖4.6城市表結(jié)構(gòu) city_id:城市標(biāo)識(shí)字段 city_name:城市名稱描述 city_level:城市等級(jí)劃分,主要用戶區(qū)分省、市、縣等劃分區(qū)域 super_city:城市所屬城市標(biāo)識(shí)4)信息表(info_tb) 負(fù)責(zé)信息存儲(chǔ),用于用戶信息查詢、篩選。信息表涉及對(duì)用戶表id、類型表id、城市表id的關(guān)聯(lián),它外鍵關(guān)聯(lián)其他三張表格,通過id的外鍵鏈接,能查詢到任意一條信息,該表格提供一條信息的所有相關(guān)細(xì)節(jié)信息的查詢功能。表結(jié)構(gòu)如圖4.7所示。圖4.7信息表結(jié)構(gòu) info_id:信息唯一標(biāo)識(shí) user_id:該信息發(fā)布者的用戶標(biāo)識(shí) type_id:用于標(biāo)識(shí)物品所屬類別 city_id:該信息發(fā)布商品所在城市標(biāo)識(shí) info_title:信息標(biāo)題 info_content:信息主體,描述物品詳細(xì)信息 img:物品圖片展示(如果存在) price:信息發(fā)布者期望的出售價(jià)格 submit_date:提交日期,主要用于計(jì)算信息時(shí)效性 tel:信息發(fā)布者聯(lián)系方式 5)信息視圖(info_view) 信息表主要的功能是為查詢操作提供更加便捷的操作,視圖表中存放系統(tǒng)查詢涉及的字段信息,另外寫入了info_tb的id,便于用戶實(shí)現(xiàn)對(duì)該條記錄的信息信息查看。表結(jié)構(gòu)如圖4.8所示。圖4.8信息視圖 info_id:商品信息表id標(biāo)識(shí),用于系統(tǒng)查看商品詳細(xì)信息時(shí)的檢索 user_name:用戶名,取自用戶表 city_name:物品信息中city_id字段對(duì)應(yīng)城市名 typy_name:物品所屬類型 info_title:信息標(biāo)題 price:用戶預(yù)設(shè)出售價(jià)格 submit_date:信息提交時(shí)間數(shù)據(jù)庫的設(shè)計(jì)主要考慮到系統(tǒng)數(shù)據(jù)存取的方便性以及系統(tǒng)部分功能的實(shí)現(xiàn)。用戶表提供用戶所有個(gè)人信息的存儲(chǔ);城市表事實(shí)上主要目的提供頁面上城市選擇的功能,因?yàn)槌鞘羞x擇設(shè)計(jì)三個(gè)等級(jí),同一等級(jí)城市會(huì)有多個(gè),一個(gè)城市下又會(huì)有多個(gè)城市,因此,如果單純的通過頁面來判斷所選擇的城市,并展示該城市的下屬城市的話,那么該頁面內(nèi)容必然太過龐大,而且涉及邏輯判斷較多,從而嚴(yán)重影響系統(tǒng)的運(yùn)行速度,利用Ajax技術(shù)可以偵測到用戶已經(jīng)選擇的城市,后臺(tái)執(zhí)行相關(guān)代碼即可將該城市的下屬城市顯示到前臺(tái)頁面,從而大大減小了系統(tǒng)負(fù)荷,這也正是數(shù)據(jù)表設(shè)計(jì)隸屬城市id的原因所在;類型表提供對(duì)信息所屬類型的定義,同時(shí)也能夠提供發(fā)布頁面類型選擇的動(dòng)態(tài)傳輸,實(shí)現(xiàn)類似于下屬城市動(dòng)態(tài)加載的功能。信息表實(shí)際上關(guān)聯(lián)了以上三張表格,通過它可以查到一條信息的完整相關(guān)信息,為了避免系統(tǒng)數(shù)據(jù)庫存儲(chǔ)的冗余,故將以上三張表格的標(biāo)識(shí)符關(guān)聯(lián)到此表中,信息表存儲(chǔ)數(shù)據(jù)的除用戶關(guān)系、發(fā)布所在地、所屬類別之外的所有直接信息。因?yàn)樾畔⒈泶鎯?chǔ)的內(nèi)容較大,關(guān)聯(lián)的信息較多,如果頁面的每一次查詢都是直接在信息表中查詢的話,必然帶來兩個(gè)直接問題:一是查詢一條信息所要檢索的字段更多,對(duì)查詢效率有一定影響;二是當(dāng)查詢一條信息時(shí),頁面上要顯示物品所在地時(shí),系統(tǒng)還需要通過信息表中的city_id字段去查詢city_tb中的city_name字段,這樣必然很麻煩,因此,再次引入info_view視圖。視圖因?yàn)槭窃跀?shù)據(jù)庫中存儲(chǔ)的一個(gè)視圖創(chuàng)建語句,因而其本身所占存儲(chǔ)空間較小,而且執(zhí)行效率更高。在info_view視圖中,根據(jù)以上四張表格之間的關(guān)聯(lián),系統(tǒng)中查詢出一條信息對(duì)應(yīng)的用戶名、城市名、類型名、價(jià)格、提交日期等字段,這些是可以直接顯示在系統(tǒng)頁面上的,因而比較方便使用,另外,這些字段和用戶查詢時(shí)傳入的字段匹配,因此,查詢時(shí)可以直接在視圖中查詢,避免類查詢一條信息必須通過查詢info_tb表的麻煩。江蘇海事職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)江蘇海事職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)第五章系統(tǒng)實(shí)現(xiàn)5.1系統(tǒng)界面設(shè)計(jì)5.1.1系統(tǒng)界面設(shè)計(jì)原則系統(tǒng)界面是用戶與系統(tǒng)后臺(tái)控制的中介,是用戶唯一可以看到的模塊,因此界面設(shè)計(jì)的原則是友好、大方,本系統(tǒng)的設(shè)計(jì)原則如下:1)頁面設(shè)計(jì)要簡潔實(shí)用。界面功能布局合理,操作方便,不奢求很炫的效果和華麗的外觀。2)風(fēng)格統(tǒng)一。系統(tǒng)界面最好保持風(fēng)格的統(tǒng)一,避免風(fēng)格的交叉和混雜給用戶帶來的視覺凌亂感。3)顏色搭配合理。本系統(tǒng)顏色的搭配原則是采用比較淡的顏色作為主色調(diào),對(duì)其他一些模塊的顏色,進(jìn)行稍微加深或者減淺,盡量做到不給用戶某一模塊特別突兀的感覺。4)必要部位添加注釋。對(duì)于類似于必填部位的說明,避免用戶在最后提交時(shí)發(fā)生無法提交提醒,還需重新填寫的現(xiàn)象。注解有助于減少用戶的錯(cuò)誤操作。5.1.2系統(tǒng)界面展示及相關(guān)實(shí)現(xiàn)代碼 本系統(tǒng)涉及多個(gè)頁面,本論文只選取幾個(gè)主要頁面作為展示說明:用戶信息查詢界面 用戶查詢界面主要按照系統(tǒng)分類提供常用搜索物品的超鏈接,用戶在首頁面就可以看到大多數(shù)常用商品的搜索鏈接;另外,系統(tǒng)搜索界面提供關(guān)鍵字搜索,用戶可以在搜索框輸入自己想要查詢的物品的關(guān)鍵字,頁面提交數(shù)據(jù)到指定Action,此時(shí)的Action指定類的指定方法是通過struts.xml中的映射文件來獲得,該Action類調(diào)用Service層接口,Service類調(diào)用Dao層方法,Dao層訪問數(shù)據(jù)庫,實(shí)現(xiàn)對(duì)數(shù)據(jù)的持久化操作。系統(tǒng)展示頁面如圖5.1所示。圖5.1用戶信息查詢界面圖 本頁面為系統(tǒng)首頁,主要功能:通過搜索框的關(guān)鍵字查詢相關(guān)信息、通過系統(tǒng)頁面上的類型分類快速查詢相關(guān)信息、用戶登陸、用戶注冊(cè),功能代碼如下:通過關(guān)鍵字查詢信息代碼Jsp頁面部分:<head>function<head>functionsearchKey(){ varkey=$('#searchText').val(); window.location.href='QueryInfoByKeyAction?key='+key;}</script></head><body> <divid="content"> <divid="header"> <jsp:includepage="../util/link.jsp"/> <imgsrc="imgs/logo.png"alt="二手市場"align="left"height="150px"> <divid="search"> <br><br> <inputtype="text"name="searchtext"id="searchText" class="textinput"><inputtype="button"name="search" value="搜素"onclick="searchKey()"class="searchButton"><br> </div> </div> <divid="upsidebar"> <jsp:includepage="../util/sidebar.jsp"/> </div> <divid="main"> <jsp:includepage="../util/main.jsp"/> </div> <divid="footer"> <jsp:includepage="../util/footer.jsp"/> </div> </div></body><action<actionname="QueryInfoByKeyAction"class="jmi.liujun.action.QueryInfoAction"method="queryByKey"> <resultname="success">/pages/result.jsp</result> <resultname="fail">/pages/error.jsp</result></action>publicpublicclassQueryInfoActionextendsActionSupport{ HttpServletRequestrequest=ServletActionContext.getRequest(); //根據(jù)關(guān)鍵字查詢信息 publicStringqueryByKey()throwsUnsupportedEncodingException{ Stringkey=null; key=newString(request.getParameter("key").getBytes("ISO-8859-1"),"UTF-8"); infoList=queryInfoService.queryBykey(key); if(infoList.size()==0){ return"fail"; } return"success"; }} Service層實(shí)現(xiàn)執(zhí)行操作:@Servicepublic@ServicepublicclassQueryInfoServiceImplimplementsQueryInfoService{ @Override publicList<InfoView>queryBykey(Stringkey){ infoList=queryInfoDao.queryByKey(key); returninfoList; }}Dao層執(zhí)行方法:@RepositorypublicclassQueryInfoDaoImplextendsMyHibernateDaoSupportimplementsQueryInfoDao{ //關(guān)鍵字查詢 StringHql; @SuppressWarnings("unchecked") publicList<InfoView>queryByKey(Stringkey){ Hql="fromInfoViewiwhereTitlelike'%"+key+"%'"; infoList=(List<InfoView>)this.getHibernateTemplate().find(Hql); returninfoList; }} 用戶注冊(cè)界面即為用戶在系統(tǒng)注冊(cè)自己的賬號(hào),擁有自己賬號(hào)的用戶享有信息發(fā)布功能,同時(shí),在這項(xiàng)活動(dòng)和這項(xiàng)功能基礎(chǔ)上,系統(tǒng)還將提供個(gè)人信息查詢功能,用戶可以在登陸系統(tǒng)之后查看自己的個(gè)人信息和已經(jīng)發(fā)布的信息。用戶注冊(cè)界面主要涉及的內(nèi)容是對(duì)用戶信息的持久化操作,另外,在此處提供用戶注冊(cè)時(shí)的必填信息驗(yàn)證功能。如圖5.2所示。圖5.2用戶注冊(cè)界面圖 此模塊是一個(gè)典型的SSH2框架完成的操作,其中,struts2的實(shí)現(xiàn)主要體現(xiàn)在struts.xml配置文件中,實(shí)現(xiàn)action位置及方法的定義,因?yàn)楸容^類似于web.xml文件且上文已做類似信息展示,因此不做展示;hibernate框架主要體現(xiàn)在它對(duì)數(shù)據(jù)庫連接的獲取,以及它提供一定的結(jié)構(gòu)方便開發(fā)人員更加簡便的實(shí)現(xiàn)數(shù)據(jù)操作;這里主要展示的是spring框架,在本系統(tǒng)中,hibernate和struts都被放到了spring框架中,由spring管理。Spring在此處提供了依賴注入功能,系統(tǒng)對(duì)象會(huì)被自動(dòng)加載到spring容器,開發(fā)人員可以在action和jsp頁面方便的獲取系統(tǒng)中的對(duì)象及方法而不需重新new一個(gè)對(duì)象。 相關(guān)功能代碼: JSP頁面:<head><basehref="<head><basehref="<%=basePath%>"><title>用戶注冊(cè)</title><linkrel="stylesheet"type="text/css"href="css/styles.css"><linkrel="stylesheet"type="text/css"href="css/header.css"><scripttype="text/javascript"src="js/jquery-1.5.1.js"></script><scripttype="text/javascript"> functioncheck(){ varusername=$('#userName').val(); varpassword=$('#password').val(); varmail=$('#mail').val(); if(username.length<1||password.length<1||mail<1){ $('#show').html("<lablestyle='color:red'>遺失必填選項(xiàng)!</lable>"); returnfalse; }else{ returntrue; } }</script></head><body> <divid="content"> <divid="header"> <jsp:includepage="../util/link.jsp"/> <br><br><br><br> <h2> <fontcolor=red>歡迎來到二手市場!</font> </h2> <br><br> </div> <divid="upsidebar"></div> <divid="main"> <formaction="AddUserAction"method="post"name="form1"onsubmit="returncheck()"> *用戶名:<inputtype="text"name=user.userNameid="userName"size=20><br><br> *密碼 :<inputtype="password"name=user.passwordid="password"size=22><br><br> *郵箱 :<inputtype="text"name=user.mailsize=20id="mail"onblur='mail'><br><br> 地址 :<inputtype="text"name=user.addresssize=20><br><br> 姓名 :<inputtype="text"name=user.realNamesize=20><br><br> 性別 :<inputtype="text"name=user.sexsize=20><br><br> 年齡 :<inputtype="text"name=user.agesize=20><br><br><spanid="show"style="color:red;font-size:12px;"></span><br><br> <fontcolor="red">*標(biāo)內(nèi)容為必填項(xiàng)目!</font><inputtype="submit"name="submit"value="提交"/> <inputtype="reset"name="reset"value="重置"/></form> </div> <divid="footer"> <jsp:includepage="../util/footer.jsp"/> </div> </div></body></html>Action層:publicStringLogin(){ userList=userService.login(userName,password);publicStringLogin(){ userList=userService.login(userName,password); if(userList.size()==0){ return"fail"; }else{ user=userList.get(0); session.setAttribute("loginer",userName); session.setAttribute("user",user); return"success"; } } @Override @Override publicList<User>login(StringuserName,Stringpassword){ returnuserDao.login(userName,password); }Dao層: @Override publicList<User>login(StringuserName,Stringpassword){ StringHQL="fromUserwhereuserName=?andpassword=?"; returnthis.getHibernateTemplate().find(HQL,userName,password); }信息發(fā)布頁面信息發(fā)布是一條信息的來源,信息發(fā)布頁面允許已登錄用戶發(fā)布自己的二手商品信息,在信息發(fā)布時(shí),用戶需要為該條信息指定所屬類別,需要為該條信息明確指定商品所在城市,這又助于其他用戶更加方便、準(zhǔn)確的找到該條信息。信息發(fā)布頁面主要涉及的新知識(shí)是通過Ajax實(shí)現(xiàn)頁面與后臺(tái)數(shù)據(jù)的交互工作。頁面上通過JavaScript控制觸發(fā)事件的條件,Ajax技術(shù)提交數(shù)據(jù)給對(duì)應(yīng)的Action層,由Action層調(diào)用Service層提供接口,Service層調(diào)用到層,到層對(duì)數(shù)據(jù)庫操作獲取數(shù)據(jù)并返回。頁面效果如圖5.3所示。圖5.3信息發(fā)布頁面圖JSP頁面(集中展示JavaScript獲取下屬城市部分):<script<scripttype="text/javascript"> functiongetCity(cityLevel){ varcityName=""; if("sheng"==cityLevel){ cityName=$('#sheng').val(); }elseif("shi"==cityLevel){ cityName=$('#shi').val(); } $.ajax({ type:'POST', url:'QueryCityAction', data:{ city:cityName }, success:function(xmlData){ varinnerHtmlVar=""; $("root>citys>city",xmlData).each(function(){ varcity=$(this).text(); if(city&&city!=""){ innerHtmlVar+="<option>"+city+"</option>"; } }); if("sheng"==cityLevel){ varlen1=document.getElementById("shi"); varlen2=document.getElementById("xian"); len1.length=1; len2.length=1; $('#shi').append(jQuery.trim(innerHtmlVar)); }elseif("shi"==cityLevel){ varlen=document.getElementById("xian"); len.length=1; $('#xian').append(jQuery.trim(innerHtmlVar)); } } }); }</script>*物品所在地: <selectid="sheng"name="sheng"onchange="getCity('sheng')"> <optionchecked=true>請(qǐng)選擇</option> <option>江蘇</option> <option>北京</option> </select> <selectid="shi"name="shi"onchange="getCity('shi')"> <optionchecked=true>請(qǐng)選擇</option> </select> <selectid="xian"name="xian"> <optionchecked=true>請(qǐng)選擇</option> </select>publicclasspublicclassQuerySelectActionextendsActionSupport{ HttpServletRequestrequest=ServletActionContext.getRequest(); HttpServletResponseresponse=ServletActionContext.getResponse(); publicvoidqueryCity(){ Stringcity=request.getParameter("city"); cityList=querySelectService.queryCity(city); StringBuffersb=newStringBuffer(); response.setContentType("text/xml;chartset=utf-8"); response.setCharacterEncoding("UTF-8"); response.setHeader("Cache-Control","no-cache"); try{ PrintWriterout=response.getWriter(); if(cityList.size()!=0){ sb.append("<?xmlversion='1.0'encoding='UTF-8'?><root><citys>"); for(inti=0;i<cityList.size();i++){ sb.append("<city><![CDATA["+cityList.get(i).getCityName()+"]]></city>"); } sb.append("</citys></root>"); out.print(sb.toString()); out.flush(); } out.close(); }catch(IOExceptione){ e.printStackTrace(); } }@Override public@Override publicList<City>queryCity(Stringcity){ cityList=querySelectDao.queryCity(city); returncityList; } @Override @Override publicList<City>queryCity(Stringcity){ id=queryCityIdByCityName(city); Hql="fromCitywheresuperCity=?"; cityList=this.getHibernateTemplate().find(Hql,id); returncityList; } publicIntegerqueryCityIdByCityName(Stringcity){ Hql="fromCitywherecityName=?"; id=((City)this.getHibernateTemplate().find(Hql,city).get(0)).getCityId(); returnid; }5.2輸入數(shù)據(jù)的驗(yàn)證數(shù)據(jù)驗(yàn)證主要的作用是避免用戶的誤操作、符合數(shù)據(jù)庫數(shù)據(jù)的存儲(chǔ)原則。1)用戶信息輸入規(guī)范。信息驗(yàn)證常見于用戶登陸名與密碼錯(cuò)誤,用戶登陸信息填寫不完整,這些信息的不完善勢必會(huì)影響到用戶的正常登陸,因此,在這種情況下,系統(tǒng)將提供錯(cuò)誤操作提醒,提示用戶操作的錯(cuò)誤原因。以用戶登錄界面為例,用戶在登錄系統(tǒng)時(shí)如果遺漏用戶名或密碼的填寫,系統(tǒng)將給出“遺失必填項(xiàng)”的警告,如下圖5.5:圖5.5用戶登錄界面信息驗(yàn)證圖該頁面通過在表單上添加onsubmit屬性,在執(zhí)行提交前通過onsubmit指定的JavaScript函數(shù)驗(yàn)證頁面必填元素內(nèi)容是否為空,如果為空則彈出提示信息。另外,頁面中寫入<span>標(biāo)簽作占位符,用于設(shè)定提示信息的現(xiàn)實(shí)位置。相關(guān)代碼如下:Jsp頁面:<form<formaction="LoginAction"method="post"name="form1"onsubmit="javascript:returncheck()"> *用戶名:<inputtype=textid="userName"name="userName"size=20/><br></span> <br>*密碼 : <inputtype=passwordid="password"name="password"size=22><br><br><spanid="show"style="color:red;font-size:12px;"></span><br><br> <fontcolor="red">*標(biāo)內(nèi)容為必填項(xiàng)目!</font> <inputtype=submitvalue="提交"/>JavaScript中相關(guān)函數(shù):functioncheck(){ varusername=$('#userName').val(); varpassword=$('#password').val(); if(username.length<1||password.length<1){ $('#show').html("<lablestyle='color:red'>遺失必填選項(xiàng)!</lable>"); returnfalse; } }圖5.6用戶注冊(cè)界面信息驗(yàn)證圖 此項(xiàng)功能的實(shí)現(xiàn)主要是采用了Ajax技術(shù),通過該技術(shù)將用戶名傳到后臺(tái)服務(wù)器進(jìn)行驗(yàn)證,并將驗(yàn)證結(jié)果返還到頁面中,因?yàn)橄嚓P(guān)Ajax代碼在前文查詢下屬城市時(shí)已經(jīng)涉及,并且頁面提醒輸出在用戶登錄頁面也已做解釋,因此在此僅作實(shí)現(xiàn)流程介紹,如下圖5.7,用戶在頁面中離開用戶名填寫框后執(zhí)行onblur方法,頁面執(zhí)行script中的Ajax方法,這里采用Ajax技術(shù)將用戶名信息傳遞到后臺(tái)action,action對(duì)應(yīng)類獲取參數(shù)并與數(shù)據(jù)庫交互并獲得判斷結(jié)果,這里用xml的數(shù)據(jù)格式返回?cái)?shù)據(jù)到頁面,Ajax獲取數(shù)據(jù)流并解析得到數(shù)據(jù),判斷是否彈出提醒框。圖5.7表單驗(yàn)證流程圖數(shù)據(jù)庫后臺(tái)java類Jsp頁面部分 數(shù)據(jù)庫圖5.7表單驗(yàn)證流程圖數(shù)據(jù)庫后臺(tái)java類Jsp頁面部分?jǐn)?shù)據(jù)庫頁面執(zhí)行onblur方法跳轉(zhuǎn)到scriptAjax傳遞用戶名信息到指定actionAction對(duì)應(yīng)java類,獲取參數(shù)、調(diào)用判斷方法江蘇海事職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)江蘇海事職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)總結(jié)本次畢業(yè)設(shè)計(jì)選取了SSH2框架,希望通過一個(gè)項(xiàng)目來熟悉一個(gè)主流的框架,由于第一次開始使用,加之本次畢業(yè)設(shè)計(jì)制作期間時(shí)間比較緊,倉促完成,因此在某些方面簡化了部分功能并降低了視覺效果。本次畢業(yè)設(shè)計(jì)主題是二手市場,該類系統(tǒng)在網(wǎng)絡(luò)上并不少見,在許多方面希望去模仿這些優(yōu)秀網(wǎng)站的設(shè)計(jì)思想,因此會(huì)有一些看膩了的地方出現(xiàn),但個(gè)人認(rèn)為,這些網(wǎng)站存在的共同的東西并不一定代表技術(shù)沒有革新,或許是因?yàn)檫@是比較優(yōu)秀的一種實(shí)現(xiàn)方式因而被廣泛使用。本次設(shè)計(jì)的主要目的在于通過項(xiàng)目進(jìn)行學(xué)習(xí),由于本人希望日后的發(fā)展方向是軟件方向,就必然要通過當(dāng)下主流的技術(shù)來提升自己的技術(shù)水平。本次畢業(yè)設(shè)計(jì)學(xué)習(xí)到了許多未曾接觸過的內(nèi)容,例如:學(xué)會(huì)了通過Hibernate來進(jìn)行數(shù)據(jù)操作,拋棄了傳統(tǒng)的代碼實(shí)現(xiàn)數(shù)據(jù)庫操作的繁瑣;學(xué)會(huì)了通過Struts來定義邏輯控制,使跳轉(zhuǎn)操作更加方便、簡潔;學(xué)會(huì)Spring的注入思想,通過這種方式在調(diào)用元素時(shí)不必重復(fù)生成,一次產(chǎn)生,到處使用,極大的提高了系統(tǒng)性能。另外,在某些地方嘗試了使用Ajax實(shí)現(xiàn)表單提交,后臺(tái)數(shù)據(jù)獲取。本次系統(tǒng)設(shè)計(jì)伊始曾考慮過諸多功能,但是在實(shí)施過程中由于時(shí)間和技術(shù)的原因未能實(shí)現(xiàn),希望能夠在以后繼續(xù)完成以下幾項(xiàng)功能:電子交易功能。買家與賣家可以在溝通之后通過網(wǎng)上銀行或者類似于支付寶的平臺(tái)來完成支付功能。實(shí)名認(rèn)證功能。實(shí)名認(rèn)證是用戶信息的一個(gè)認(rèn)定,他可以防止很多欺詐手段和違法行為。以物易物功能。該功能實(shí)際上是要實(shí)現(xiàn)用戶間如果各自持有商品剛好符合對(duì)方需求的情況下,雙方可以約定以何種支出來完成該筆交易。致謝本次畢業(yè)設(shè)計(jì)的完成借助了大量的外在力量。首先,通過書籍、視頻以及別人做過的項(xiàng)目源碼學(xué)到了很多從未接觸過的東西,感謝這些人對(duì)知識(shí)的慷慨傳播;其次,網(wǎng)絡(luò)對(duì)于我這次畢業(yè)設(shè)計(jì)的完成提供了巨大的幫助,在一些專門的論壇、貼吧,許多業(yè)內(nèi)人士都給予了我寶貴的經(jīng)驗(yàn),感謝這些大神們耐心的講解;第三,本次畢業(yè)設(shè)計(jì)在項(xiàng)目伊始,本人就希望通過自主學(xué)習(xí)的途徑來完成這項(xiàng)任務(wù),在本次畢業(yè)設(shè)計(jì)中,指導(dǎo)老師給我們制定了詳細(xì)的工作流程及階段目標(biāo),在論文提交之后很快給予了我們?cè)敿?xì)的論文更改思路,非常感謝老師的付出;第四,對(duì)本次畢業(yè)設(shè)計(jì)做出直接技術(shù)支持的是我目前的室友,因?yàn)闀旧系睦碚撛趹?yīng)用于實(shí)際項(xiàng)目中的時(shí)候會(huì)出現(xiàn)各種問題,而自己沒有框架的使用經(jīng)驗(yàn),他在這方面提供了許多幫助。江蘇海事職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)江蘇海事職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)參考文獻(xiàn)[1]孫衛(wèi)琴、李洪成.Tomcat與JavaWeb開發(fā)技術(shù)詳解[M].北京:電子工業(yè)出版社,2009年1月.[2]孫衛(wèi)琴.精通Struts:基于MVC的JavaWeb設(shè)計(jì)與開發(fā)[M].北京:電子工業(yè)出版社,2004年8月.[3]孫衛(wèi)琴.精通Hibernate[M].北京:電子工業(yè)出版社,2010年2月[4]楊學(xué)會(huì).JSP編程技術(shù)[M].北京:清華大學(xué)出版社,2009年4月[5]李剛瘋狂.java講義[M].北京:
電子工業(yè)出版社,2012年1月[6]劉杰西、柳林
.HTML、CSS、JavaScript網(wǎng)頁制作從入門到精通[M].北京:人民郵電出版社,2013年1月[7]Y.DanielLiang
.java程序設(shè)計(jì)[M].機(jī)械工業(yè)出版社,2011年6月基于C8051F單片機(jī)直流電動(dòng)機(jī)反饋控制系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的嵌入式Web服務(wù)器的研究MOTOROLA單片機(jī)MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對(duì)良率的影響研究基于模糊控制的電阻釬焊單片機(jī)溫度控制系統(tǒng)的研制基于MCS-51系列單片機(jī)的通用控制模塊的研究基于單片機(jī)實(shí)現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機(jī)控制的二級(jí)倒立擺系統(tǒng)的研究基于增強(qiáng)型51系列單片機(jī)的TCP/IP協(xié)議棧的實(shí)現(xiàn)基于單片機(jī)的蓄電池自動(dòng)監(jiān)測系統(tǒng)基于32位嵌入式單片機(jī)系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機(jī)的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機(jī)的交流伺服電機(jī)運(yùn)動(dòng)控制系統(tǒng)研究與開發(fā)基于單片機(jī)的泵管內(nèi)壁硬度測試儀的研制基于單片機(jī)的自動(dòng)找平控制系統(tǒng)研究基于C8051F040單片機(jī)的嵌入式系統(tǒng)開發(fā)基于單片機(jī)的液壓動(dòng)力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機(jī)實(shí)現(xiàn)一種基于單片機(jī)的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機(jī)的在線間歇式濁度儀的研制基于單片機(jī)的噴油泵試驗(yàn)臺(tái)控制器的研制基于單片機(jī)的軟起動(dòng)器的研究和設(shè)計(jì)基于單片機(jī)控制的高速快走絲電火花線切割機(jī)床短循環(huán)走絲方式研究基于單片機(jī)的機(jī)電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機(jī)的智能手機(jī)充電器基于單片機(jī)的實(shí)時(shí)內(nèi)核設(shè)計(jì)及其應(yīng)用研究基于單片機(jī)的遠(yuǎn)程抄表系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機(jī)系統(tǒng)單片機(jī)系統(tǒng)軟件構(gòu)件開發(fā)的技術(shù)研究基于單片機(jī)的液體點(diǎn)滴速度自動(dòng)檢測儀的研制基于單片機(jī)系統(tǒng)的多功能溫度測量儀的研制基于PIC單片機(jī)的電能采集終端的設(shè)計(jì)和應(yīng)用基于單片機(jī)的光纖光柵解調(diào)儀的研制氣壓式線性摩擦焊機(jī)單片機(jī)控制系統(tǒng)的研制基于單片機(jī)的數(shù)字磁通門傳感器基于單片機(jī)的旋轉(zhuǎn)變壓器-數(shù)字轉(zhuǎn)換器的研究基于單片機(jī)的光纖Bragg光柵解調(diào)系統(tǒng)的研究單片機(jī)控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機(jī)的多生理信號(hào)檢測儀基于單片機(jī)的電機(jī)運(yùn)動(dòng)控制系統(tǒng)設(shè)計(jì)Pico專用單片機(jī)核的可測性設(shè)計(jì)研究基于MCS-51單片機(jī)的熱量計(jì)基于雙單片機(jī)的智能遙測微型氣象站MCS-51單片機(jī)構(gòu)建機(jī)器人的實(shí)踐研究基于單片機(jī)的輪軌力檢測
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 宿舍樓課課程設(shè)計(jì)
- 二零二五年度PVC建筑材料采購合同
- 2025年度生態(tài)環(huán)保型安置房建設(shè)一體化服務(wù)合同
- 2024年貨物采購招投標(biāo)流程規(guī)范3篇
- 硬件描述語言課程設(shè)計(jì)
- 2024年綠色能源項(xiàng)目投資委托服務(wù)合同3篇
- 電液課程設(shè)計(jì)
- 成績管理系統(tǒng)課程設(shè)計(jì)er圖
- 2025年新型APP內(nèi)容合作與分成合同3篇
- 2025年度班主任學(xué)生藝術(shù)素養(yǎng)提升服務(wù)合同3篇
- 【歷史】第一、二單元測試題2024~2025學(xué)年統(tǒng)編版七年級(jí)歷史上冊(cè)
- 婚姻家庭規(guī)劃
- 認(rèn)識(shí)實(shí)習(xí)報(bào)告(10篇)
- 【MOOC】內(nèi)科護(hù)理學(xué)-中山大學(xué) 中國大學(xué)慕課MOOC答案
- 2024年商業(yè)地產(chǎn)買賣合同樣本
- 2023-2024學(xué)年廣東省深圳市福田區(qū)七年級(jí)(上)期末英語試卷
- 雙碳全景系列培訓(xùn)第一章碳達(dá)峰、碳中和
- 【企業(yè)盈利能力探析的國內(nèi)外文獻(xiàn)綜述2400字】
- 變電檢修班組規(guī)范化建設(shè)實(shí)施細(xì)則
- 計(jì)算機(jī)組成原理習(xí)題答案解析(蔣本珊)
- 板材加工轉(zhuǎn)讓協(xié)議書模板
評(píng)論
0/150
提交評(píng)論