




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
頁第一章緒論1.1開發(fā)背景隨著網(wǎng)絡(luò)信息技術(shù)的快速發(fā)展,互聯(lián)網(wǎng)已經(jīng)與我們的生活息息相關(guān),人們獲取信息的主要途徑就來自于互聯(lián)網(wǎng),互聯(lián)網(wǎng)已成為獲取快速、高效的信息的載體,提高了我們的生活質(zhì)量。互聯(lián)網(wǎng)效率高,價格低,全球通用,受到了社會各界人士的廣泛關(guān)注。本系統(tǒng)利用互聯(lián)網(wǎng)幫助我們達成目標(biāo)。現(xiàn)在,我們的生活之所以如此便利,不得不承認是互聯(lián)網(wǎng)帶來的,例如:購物方式的改變,已由傳統(tǒng)的線下實體店轉(zhuǎn)變?yōu)榫€上;人與人之間信息傳達方式的改變,由原來的紙媒轉(zhuǎn)變?yōu)殡妶?,再進一步到微信、QQ視頻聊天;娛樂方式的改變,不見面也可以線上下棋;等等。現(xiàn)在的人們喜歡通過網(wǎng)絡(luò)交流,將個人信息上傳在網(wǎng)上,同時也會有許許多多的公司,會將企業(yè)信息上傳在網(wǎng)上,這使人們獲取信息的時間大大縮短,使人們的辦事效率提高。本課題是設(shè)計一個租房系統(tǒng)方便出租用戶在上面發(fā)布租房信息,同時方便房屋需求者去查看它們想要了解的信息,這樣就省去了中介的環(huán)節(jié),傳統(tǒng)的房屋銷售方式與現(xiàn)在相比,不僅浪費時間,還要多花物力和財力,所以通過網(wǎng)絡(luò)獲取信息是人們的必然選擇,因此,該系統(tǒng)的計劃與實現(xiàn)是基于市場、國情,并按照客戶的需求計劃和實現(xiàn)。1.2開發(fā)意義在我國,城市在不斷的擴大,城市人口在急劇增多,大多數(shù)的年輕人都去城市發(fā)展,導(dǎo)致城市的人口流動量增大,房子作為人們家的港灣,是大家不可或缺的。但是,由于現(xiàn)在的房價在一直的上漲,想立即在城市擁有一套自己的房子是不現(xiàn)實的,所以,房屋的出租與租賃就成了生活中的一部分。所以說,租房系統(tǒng),無論是幫助房東將房子出租出去,還是幫助需求者找到合適的房子,都有非常重要的意義。目前,城市房地產(chǎn)業(yè)越來越激烈,對于二、三線城市,甚至更小的城市來說,現(xiàn)有信息交流滿足不了人們的需求,了解房屋信息的途徑太少。他們想要了解最新的房地產(chǎn)信息,不得不去房產(chǎn)中介門店或各小區(qū)售樓處了解情況。因此,利用互聯(lián)網(wǎng)進行宣傳是非常有必要的?,F(xiàn)在的網(wǎng)絡(luò)可以實現(xiàn)定位功能,通過互聯(lián)網(wǎng),能夠更精準(zhǔn)的查看到各處的房屋位置,本系統(tǒng)也具有此功能。本系統(tǒng)有用戶登錄的功能,可以更好的保存信息,使得網(wǎng)上信息更加的安全。本系統(tǒng)采用SSM后端框架與bootstrap前端進行開發(fā),為廣大群眾提供服務(wù)。1.3國內(nèi)外研究現(xiàn)狀在國外許多發(fā)達的國家,房產(chǎn)中介管理信息系統(tǒng)已經(jīng)成熟,尤其是基于web應(yīng)用技術(shù)下的管理信息系統(tǒng),在房產(chǎn)行業(yè)中的應(yīng)用日趨完善,其運作模式已經(jīng)從連鎖店的線性管理轉(zhuǎn)變?yōu)榭绲貐^(qū),跨領(lǐng)域的扁平化管理,從而獲得了顯著的經(jīng)濟和社會效益。在我國,隨著國民生活水平的不斷提高,房產(chǎn)行業(yè)的發(fā)展和居民租房需求的多元化帶動了房產(chǎn)中介的發(fā)展,雖然存在著比較多的中介網(wǎng)站,除一二線城市外,房產(chǎn)中介行業(yè)的管理仍然限于傳統(tǒng)的方式,店面彼此都是信息孤立,難以為公眾提供及時、互動的信息,阻礙房產(chǎn)交易市場的健康、快速發(fā)展。未來,房產(chǎn)中介管理系統(tǒng)將朝著信息化之路前進,從而實現(xiàn)房產(chǎn)交易中共享信息的功能,增加交易的機會,縮短交易的時間。1.4論文結(jié)構(gòu)本論文按照軟件工程標(biāo)準(zhǔn)開發(fā)流程進行敘述。其主要由以下幾個章節(jié)構(gòu)成:第一章是緒論,主要從開發(fā)背景、開發(fā)意義、國內(nèi)外研究現(xiàn)狀、論文結(jié)構(gòu)展開論述。第二章系統(tǒng)開發(fā)環(huán)境及相關(guān)技術(shù)的介紹,首先對開發(fā)環(huán)境進行介紹,其次對相關(guān)技術(shù)進行介紹。第三章是系統(tǒng)需求分析,主要從系統(tǒng)需求和系統(tǒng)可行性分析兩個部分展開。第四章是系統(tǒng)設(shè)計,主要有E-R圖、數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計、數(shù)據(jù)庫表設(shè)計、使用角色介紹。第五章是系統(tǒng)實現(xiàn),首先是模塊介紹,再分別從注冊模塊、登錄模塊、首頁模塊、論壇模塊、發(fā)布模塊、信息模塊各部分展示。第六章是系統(tǒng)總結(jié)和展望。
第二章系統(tǒng)開發(fā)環(huán)境及相關(guān)技術(shù)2.1開發(fā)環(huán)境介紹操作系統(tǒng):WIN8編程語言:JAVA運行環(huán)境:JAVA1.8開發(fā)工具:IntelliJIDEA集成開發(fā)工具服務(wù)器:Tomcat8數(shù)據(jù)庫:Mysql5.7后端框架:SSM框架前端框架:bootstrap框架通信協(xié)議:websocket協(xié)議地圖api:高德地圖api2.2相關(guān)技術(shù)介紹2.2.1IntelliJIDEA集成開發(fā)工具IntelliJIDEA集成開發(fā)工具是一個相對新穎的開發(fā)工具,也是被稱為最好用的開發(fā)工具,它提供的功能非常便捷,逐漸替代了原來的Eclipse開發(fā)工具,相對比與Eclipse,它具有的優(yōu)點有:(1)有更好的調(diào)試。IntelliJIDEA在DEBUG上的表現(xiàn),可以說是比Eclipse強大的太多了。在DEBUG過程中,我們需要計算一些表達式值的時候,如果我們使用Eclipse就要選定出一整個表達式,然后使用Crtl+Shift+I組合鍵才能看到這一個表達式的值。(2)有更高的編程開發(fā)效率。這一點是我最喜歡的地方,也是我覺得比其它任何工具更優(yōu)秀的地方。在代碼生成方面,IntelliJIDEA表現(xiàn)比Eclipse更加的優(yōu)秀,比如說在IntelliJIDEA中生成某一個類的測試類,它能夠準(zhǔn)確的放到test對應(yīng)的目錄下面。還有其它的優(yōu)點,比如它對大量的插件有更好的支持(3)有更優(yōu)秀的重構(gòu)機制。這一點,其它的IDE都具有此功能,但是IDEA能更好的知道你想要的代碼,還會給你提供更多的選擇,提高代碼的準(zhǔn)確度還有提高開發(fā)效率(4)代碼的目錄清晰,能夠更快的找到所需要的代碼。(5)更美觀的界面,界面也是大家所認為最優(yōu)秀的地方2.2.2SSM框架SSM框架,是Spring+SpringMVC+MyBatis的縮寫,這個是目前使用最多的框架之一,可以用來搭建各種各樣的企業(yè)級的服務(wù)。Spring:它有兩個核心內(nèi)容,一個是控制反轉(zhuǎn)(IOC),一個是面向切面(AOP)??刂品崔D(zhuǎn)就是,以前對象的實例化和銷毀是由開發(fā)人員控制,現(xiàn)在我們可以將它交給spring控制,面向切面是一種思想,不是一種技術(shù)。它主要負責(zé)的是業(yè)務(wù)層,可以讓spring管理service接口。SpringMVC:它可以融合spring,讓開發(fā)變得更加的容易,它負責(zé)表現(xiàn)層。使用SpringMVC有幾個優(yōu)點:(1)由于它簡單的操作性,沒有繁瑣的功能,使它的學(xué)習(xí)成本降低,上手快,能夠快速適應(yīng)開發(fā)節(jié)奏。(2)它可以很容易的寫出性能極高的代碼。(3)它的靈活性特別高,拓展性極強,可以很容易與其它框架結(jié)合,寫出更優(yōu)秀的代碼。MyBatis:它是Java的持久層框架,用來操作數(shù)據(jù)庫,它有一個好處,就是將sql的編寫交給發(fā)開人員,這樣可以更好的,更加靈活的對數(shù)據(jù)進行處理。它主要負責(zé)持久層。2.2.3Mysql數(shù)據(jù)庫Mysql是一個關(guān)系型的數(shù)據(jù)庫,是使用最多的數(shù)據(jù)庫之一,它具有體積小,計算快等優(yōu)點。2.2.4Tomcat服務(wù)器Tomcat服務(wù)器是被大家使用最多的服務(wù)器之一,該服務(wù)器適用于中小型的應(yīng)用開發(fā),作為一個小型的軟件設(shè)計,它是最合適不過的了。2.2.5高德地圖api為了提高本系統(tǒng)的可操作性,我們加入的地圖組件,來獲取房租位置信息,可以更好的給用戶提供服務(wù)。在該系統(tǒng)的設(shè)計中,我們在用戶發(fā)布房租信息的時候,獲取房租的經(jīng)緯度,并記錄在數(shù)據(jù)庫中,在系統(tǒng)的首頁會展示房租的信息,同時會獲取用戶當(dāng)前的經(jīng)緯度,利用高德地圖api中的計算距離的方法,可以很方便的計算出當(dāng)前距離房租的距離,這樣更方便用戶的選址。當(dāng)用戶確定下來的時候,也可以點擊房屋位置,進行導(dǎo)航,可以很快速的找到房屋的詳細位置。2.2.6websocket協(xié)議在一開始做聊天系統(tǒng)這一塊時,本想采用,將信息存放在數(shù)據(jù)庫中,然后使用長連接,不停的去數(shù)據(jù)庫中讀取聊天內(nèi)容,但是這樣非常損耗服務(wù)器資源,然后就找到這個協(xié)議,它可以讓服務(wù)器自主的去推送信息,也就是當(dāng)有別人發(fā)信息來得時候,websocket可以將此信息推送到客戶端。完成聊天。為了保存用戶的聊天記錄,本系統(tǒng)將聊天記錄存在數(shù)據(jù)庫中,方便下次查閱。第三章系統(tǒng)需求分析3.1系統(tǒng)需求為了適用廣大人民群眾的需求,需要設(shè)計一款可供使用者登錄,查看房屋具體信息,發(fā)布房源信息,并具有相互交流功能的信息系統(tǒng),同時可以精準(zhǔn)獲取地理位置,查看相對距離,展示房屋圖片和詳情。還可以讓需求在進行發(fā)帖交流經(jīng)驗,這些都在本系統(tǒng)考慮的范圍之中。從以下四個方面進行介紹:(1)實用性原則:一切以用戶為準(zhǔn),該系統(tǒng)的使用者就是廣大的群眾,所以一切的需求,一切的設(shè)計,都是來自于人們的需要。這樣才能保證實用性(2)友好性原則:該系統(tǒng)為了能夠給用戶提供非常好的操作環(huán)境,所以在設(shè)計的時候,需要考慮功能點的使用是否方便,操作起來是否簡單,這些可以提高軟件的友好性。(3)可擴展性原則:作為一個現(xiàn)代化的產(chǎn)物,什么都離開不了可擴展性,這一方面是為了規(guī)范自己的代碼書寫,另一方面,在維護的時候,會節(jié)省大量的時間。(4)安全性原則:本系統(tǒng)承諾,一定會管理好用戶信息,并且會加強本系統(tǒng)自身的安全性,以防相關(guān)數(shù)據(jù)被盜或被修改。3.2系統(tǒng)可行性分析(1)社會角度:如今,人們的信息來源還是主要的來自于中介,中介的存在,雖然可以減少尋找信息的時間,但是大量的額外費用,會讓一部分尋找房屋的人,望而卻步。但是,要是自己不斷的去尋找,有會花費大量的時間。所以有一個信息的系統(tǒng)就可以省去中介費用。(2)經(jīng)濟角度:本系統(tǒng)都是采用輕量級軟件開發(fā),可以節(jié)省大量大開發(fā)成本。(3)管理角度:從管理的角度來說呀,傳統(tǒng)的方式,中介與房東,與房客的粘性太低了,不方便日后的管理與操作,還有純手工的操作,也會給人們帶去各種各樣的困難。(4)技術(shù)角度:本系統(tǒng)采用了SSM框架,搭建后端,前端采用移動web設(shè)計,可以更友好的展示給用戶去看。數(shù)據(jù)庫采用mysql數(shù)據(jù)庫,作為一個不太大的項目,mysql數(shù)據(jù)庫足以應(yīng)對
第四章系統(tǒng)設(shè)計4.1E-R圖本系統(tǒng)E-R圖如圖4-1所示。圖4-1E-R圖4.2數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計數(shù)據(jù)庫常用的數(shù)據(jù)模型有:層次模型、面相對象模型、關(guān)系模型、網(wǎng)狀模型。本租房管理系統(tǒng)中,采用了關(guān)系模型的方式。編碼表:(編碼id,編碼),如表4-1所示。用戶表:(用戶id,昵稱,郵箱,密碼,手機號,激活碼,激活狀態(tài)),如表4-2所示。圖片表:(圖片id,房租id,圖片名稱),如表4-3所示。信息記錄表:(信息id,發(fā)送者id,接收者id,發(fā)送內(nèi)容,發(fā)送時間),如表4-4所示。房租表:(房租id,發(fā)布用戶id,價錢,房間類型,幾室,幾廳,幾衛(wèi),面積,樓層,是否審核通過,是否有網(wǎng)絡(luò),是否有熱水器,是否有廚房,是否有獨衛(wèi),是否離地鐵近,是否有冰箱,是否有空調(diào),是否有洗衣機,地址信息,經(jīng)緯度,標(biāo)題,創(chuàng)建時間,審核時間,發(fā)布時間,房間介紹),如表4-5所示。4.3數(shù)據(jù)庫表設(shè)計表4-l編碼表表名t_code列名注釋數(shù)據(jù)類型空/非空備注F_code_id編碼idint(8)NOTNULL主鍵F_code編碼int(8)NOTNULL無表說明用來存放所以編碼信息,以防重復(fù)。表4-2用戶表表名t_user列名注釋數(shù)據(jù)類型空/非空備注f_user_id用戶idint(8)NOTNULL主鍵f_name昵稱varchar(10)NULL無f_email郵箱varchar(20)NULL無f_password密碼varchar(20)NULL無f_phone手機號varchar(11)NULL無f_code激活碼varchar(32)NULL無f_status激活狀態(tài)int(1)NULL無表說明用來存放用戶信息表4-3圖片表表名T_img列名注釋數(shù)據(jù)類型空/非空備注F_img_id圖片idint(8)NOTNULL主鍵F_room_id房租idint(8)NOTNULL無F_imgname圖片名稱varchar(255)NOTNULL無表說明用來存放房租的圖片地址表4-4信息記錄表表名T_message列名注釋數(shù)據(jù)類型空/非空備注F_message_id信息idint(11)NOTNULL主鍵F_from_user_id發(fā)送者int(8)NOTNULL無F_to_user_id接收者int(8)NOTNULL無F_message信息內(nèi)容varchar(255)NOTNULL無F_isread是否已讀int(1)NOTNULL無F_time時間varchar(14)NOTNULL無表說明存儲用戶信息聊天記錄表4-5房租表表名T_room列名注釋數(shù)據(jù)類型空/非空備注F_room_id房間idint(8)NOTNULL主鍵F_user_id用戶idint(8)NULL無F_price價錢int(5)NULL無F_type類型int(1)NULL無F_chamber室int(1)NULL無F_hall廳int(1)NULL無F_bathroom衛(wèi)int(1)NULL無F_area面積int(3)NULL無F_floor樓層int(3)NULL無F_checkstatue審核狀態(tài)int(1)NULL無F_isshow是否展示int(1)NULL無F_isnetwork是否有網(wǎng)絡(luò)int(1)NULL無F_iscalorifier是否有熱水器int(1)NULL無F_iskitchen是否有廚房int(1)NULL無F_isbathroom是否獨衛(wèi)int(1)NULL無F_ismetro是否臨地鐵int(1)NULL無F_isrefrigerator是否有冰箱int(1)NULL無F_isairconditioner是否有空調(diào)int(1)NULL無F_iswashingmachine是否有洗衣機int(1)NULL無F_address地址varchar(500)NULL無f_longitude經(jīng)度varchar(50)NULL無f_latitude緯度varchar(50)NULL無F_title標(biāo)題varchar(500)NULL無F_createtime創(chuàng)建時間varchar(50)NULL無F_checktime審核時間varchar(50)NULL無F_publishtime發(fā)布時間varchar(50)NULL無F_introduction房租介紹varchar(2000)NULL無表說明用來存放房租信息4.2使用角色介紹(1)管理員:管理員具有審核用戶信息和房源的信息的權(quán)力。如圖4-2所示。圖4-2管理員功能圖(2)用戶:這里用戶有兩種,一種是房東,另一種是房屋的需求者。這兩種角色使用同一個系統(tǒng)登錄。如圖4-3所示。圖4-3用戶功能圖第五章系統(tǒng)實現(xiàn)5.1模塊介紹圖5-1模塊圖5.2注冊模塊圖5-2注冊頁面圖在注冊頁面,用戶需要輸入郵箱手機號和密碼來進行注冊,這里該系統(tǒng)使用了JavaEmail來發(fā)送用戶激活鏈接,來完成用戶的注冊。在這個中,使用的是bootstrap前端框架,在這個框架中,不僅僅給我們提供了非常多的組件樣式,還有一個很重要的技術(shù),就是柵格系統(tǒng),他將列數(shù)分為12,通過對組件寬度的設(shè)置,可以很容易將頁面搭建出來,也非常的美觀。頁面如圖5-2所示。核心代碼:publicstaticvoidsendMail(Stringemail,Stringcode)throwsException{Stringhost="";Propertiesproperties=System.getProperties();//獲取系統(tǒng)屬性properties.setProperty("mail.smtp.host",host);//設(shè)置郵件服務(wù)器properties.setProperty("mail.smtp.auth","true");//打開認證MailSSLSocketFactorysf=newMailSSLSocketFactory();sf.setTrustAllHosts(true);properties.put("mail.smtp.ssl.enable","true");properties.put("mail.smtp.ssl.socketFactory",sf);//1.獲取默認session對象Sessionsession=Session.getDefaultInstance(properties,newAuthenticator(){publicPasswordAuthenticationgetPasswordAuthentication(){returnnewPasswordAuthentication(SystemConstant.MAIL_FROM,SystemConstant.MAIL_PASSWORD);//發(fā)件人郵箱賬號、授權(quán)碼}});//2.創(chuàng)建郵件對象Messagemessage=newMimeMessage(session);//2.1設(shè)置發(fā)件人message.setFrom(newInternetAddress(SystemConstant.MAIL_FROM));//2.2設(shè)置接收人message.addRecipient(Message.RecipientType.TO,newInternetAddress(email));//2.3設(shè)置郵件主題message.setSubject(SystemConstant.MAIL_SUBJECT);//2.4設(shè)置郵件內(nèi)容Stringcontent="<html><head></head><body><h1><ahref=\"http://"+SystemConstant.MAIL_UIL+"?fCode="+code+"\">這是一封激活郵件,點擊我激活您的郵件</a></h1></body></html>";message.setContent(content,"text/html;charset=UTF-8");//3.發(fā)送郵件Transport.send(message);}這一塊是郵箱發(fā)送的java代碼,這里使用的是java來發(fā)送qq郵箱,首先要有郵箱的服務(wù)器,本系統(tǒng)使用的是qq郵箱的服務(wù)器,qq它為我們提供了qq郵箱服務(wù)器,我們只需要登錄qq郵箱,獲取我們郵箱的秘鑰,就可以用來免費的發(fā)送qq郵箱。這里激活的方法是,在發(fā)送郵箱的時候,將用戶的id帶過去,郵箱的內(nèi)容是一個連接,也就是一個激活賬號的接口,當(dāng)用戶點擊的時候,會訪問本接口,將用戶的id激活。5.3登錄模塊圖5-3登錄頁面圖用戶可以使用郵箱或者手機號和密碼進行登錄,登錄的用戶必須滿足,賬號和密碼匹配,并且是激活完成的賬號才可以登錄系統(tǒng),這個模塊沒有難點,就是簡單的獲取數(shù)據(jù)庫信息,進行比對即可。為了實現(xiàn)安全性,本系統(tǒng)加入了過濾器,只有當(dāng)用戶登錄的時候,才能訪問首頁。在用戶登錄的時候,我們將用戶的信息設(shè)置到session中保存起來,在訪問其他頁面時,需要根據(jù)session的值來判斷用戶是否登錄。并且,頁面也會根據(jù)session中用戶的信息去數(shù)據(jù)庫中查找對應(yīng)的信息。頁面如圖5-3所示。@Override
publicResultlogin(Map<String,Object>param){
TUserPojotUserPojo=systemMapper.selectUserByAccountAndPw(param);
if(!MainUtil.isEmpty(tUserPojo)){
if(tUserPojo.getfStatus()==0){
returnnewResult(false,null,"賬號未激活");
}
}else{
returnnewResult(false,null,"賬號或密碼錯誤");
}
returnnewResult(true,tUserPojo,"");
}@RequestMapping("/login")
publicResultlogin(HttpServletRequestrequest){
Map<String,Object>param=newHashMap<>();
Stringaccount=request.getParameter("account");
Stringpassword=request.getParameter("password");
param.put("account",account);
param.put("fPassword",password);
Resultresult=systemService.login(param);
if(result.isB()){
HttpSessionsession=request.getSession();
TUserPojotUserPojo=(TUserPojo)result.getO();
session.setAttribute("fUserId",String.valueOf(tUserPojo.getfId()));
session.setAttribute("tUserPojo",tUserPojo);
}
returnresult;
}5.4首頁模塊圖5-4首頁圖在首頁模塊的設(shè)計中,分為三個部分,第一部分是廣告位,第二部分是推薦房源,第三部分則是房源信息展示,在首頁中,還引用了高德地圖組件,用來定位當(dāng)前位置,用來判斷與房源的位置距離。點擊發(fā)布的房源,可以跳轉(zhuǎn)到房源的詳情頁面,在這個頁面展示的房源的全部信息,這個頁面提供了房東的手機號,可以進行大電話聯(lián)系,還可以點擊聯(lián)系房東,與房東在網(wǎng)上交流。這里的難點有:獲取當(dāng)前位置與房源位置之間的距離計算。頁面如圖5-4所示。mapObj.plugin('AMap.Geolocation',function(){
geolocation=newAMap.Geolocation({
enableHighAccuracy:true,//是否使用高精度定位,默認:true
timeout:10000,//超過10秒后停止定位,默認:無窮大
maximumAge:0,//定位結(jié)果緩存0毫秒,默認:0
convert:true,//自動偏移坐標(biāo),偏移后的坐標(biāo)為高德坐標(biāo),默認:true
showButton:true,//顯示定位按鈕,默認:true
buttonPosition:'LB',//定位按鈕??课恢?,默認:'LB',左下角
buttonOffset:newAMap.Pixel(10,20),//定位按鈕與設(shè)置的??课恢玫钠屏?,默認:Pixel(10,20)
showMarker:true,//定位成功后在定位到的位置顯示點標(biāo)記,默認:true
showCircle:true,//定位成功后用圓圈表示定位精度范圍,默認:true
panToLocation:true,//定位成功后將定位到的位置作為地圖中心點,默認:true
zoomToAccuracy:true//定位成功后調(diào)整地圖視野范圍使定位位置及精度范圍視野內(nèi)可見,默認:false
});
mapObj.addControl(geolocation);
geolocation.getCurrentPosition();
AMap.event.addListener(geolocation,'complete',onComplete);//返回定位信息
AMap.event.addListener(geolocation,'error',onError);//返回定位出錯信息
});
functiononComplete(obj){
//varpoint=[118.751220,32.556073];
//alert(AMap.GeometryUtil.distance(obj.position,point))
nowPoint=obj.position;
$.post("/renting/selectRoom",{},function(ret){
if(ret.o!==null){
varroom=ret.o;
varstr="";
for(vari=0;i<room.length;i++){
vartype="";
if(room[i].fType==0){
type="整租";
}else{
type="合租";
}
varpoint=[room[i].fLongitude,room[i].fLatitude];
varm=AMap.GeometryUtil.distance(nowPoint,point);
varkm=Math.round(m/1000);
str+=""
$("#room").append(str);
}
});
}這一部分則是調(diào)用了高德地圖的api,來計算當(dāng)前距離與房屋的距離。并且通過ajax獲取數(shù)據(jù)庫中的房屋信息,來展示在頁面中。5.5論壇模塊作為網(wǎng)絡(luò)用戶,印象最深的還是論壇,隨著一批論壇的崛起,又一批論壇倒下,因為有了論壇,互聯(lián)網(wǎng)用戶能更好的在一起交流,這也是該系統(tǒng)設(shè)計論壇的意義所在,希望用戶可以在一起交流租房經(jīng)驗,去尋找更好的租房體驗。這一模塊的設(shè)計比較簡單,發(fā)布的形式是:標(biāo)題,內(nèi)容。展示的內(nèi)容有:標(biāo)題,內(nèi)容,發(fā)布者,時間。作為論壇,評論,點贊必不可少。其它的用戶可以在底下發(fā)表評論,相互交流。5.6發(fā)布模塊圖5-5我的房源頁面圖圖5-6發(fā)布頁面圖在發(fā)布模塊中,每一個用戶都有發(fā)布的權(quán)利。在發(fā)布模塊中,用戶需要在此模塊填寫房屋信息,并且調(diào)用了高德api,可以獲取房屋的地理位置,還可以從手機中獲取圖片,可以上傳多個圖片。在這里有兩個技術(shù)難點,第一個是獲取當(dāng)前位置,第二個是上傳圖片。頁面如圖5-5和5-6所示。submit:function(){
$.post("/renting/uploadImg",{
imgArr:JSON.stringify(imgArr)
},function(ret){
if(ret.b){
$.post("/renting/addroom",{
fPrice:$("#fPrice").val(),
fType:$("#fType").val(),
fChamber:$("#fChamber").val(),
fHall:$("#fHall").val(),
fBathroom:$("#fBathroom").val(),
fArea:$("#fArea").val(),
fFloor:$("#fFloor").val(),
fIsnetwork:$("#fIsnetwork").val(),
fIscalorifier:$("#fIscalorifier").val(),
fIskitchen:$("#fIskitchen").val(),
fIsbathroom:$("#fIsbathroom").val(),
fIsmetro:$("#fIsmetro").val(),
fIsrefrigerator:$("#fIsrefrigerator").val(),
fIsairconditioner:$("#fIsairconditioner").val(),
fIswashingmachine:$("#fIswashingmachine").val(),
fAddress1:fAddress1,
fAddress2:JSON.stringify(fAddress2),
fTitle:$("#fTitle").val(),
fIntroduction:$("#fIntroduction").val(),
imgArr:JSON.stringify(imgArr)
},function(ret){
if(ret.b){
alert("發(fā)布成功");
UTIL.OPEN("myroom.jsp");
}
});
}
});
}
}這是js部分,獲取手機端填寫的信息,然后使用ajax上傳至后臺@Override
publicResultaddRoom(Map<String,Object>param){
StringfRoomId=utilService.getEightCode();
Map<String,Object>param1=newHashMap<>();
param1.put("fRoomId",fRoomId);
param1.put("fUserId",param.get("fUserId"));
param1.put("fPrice",param.get("fPrice"));
param1.put("fType",param.get("fType"));
param1.put("fChamber",param.get("fChamber"));
param1.put("fHall",param.get("fHall"));
param1.put("fBathroom",param.get("fBathroom"));
param1.put("fArea",param.get("fArea"));
param1.put("fFloor",param.get("fFloor"));
param1.put("fCheckstatue","0");
param1.put("fIsshow","1");
param1.put("fIsnetwork",param.get("fIsnetwork"));
param1.put("fIscalorifier",param.get("fIscalorifier"));
param1.put("fIskitchen",param.get("fIskitchen"));
param1.put("fIsbathroom",param.get("fIsbathroom"));
param1.put("fIsmetro",param.get("fIsmetro"));
param1.put("fIsrefrigerator",param.get("fIsrefrigerator"));
param1.put("fIsairconditioner",param.get("fIsairconditioner"));
param1.put("fIswashingmachine",param.get("fIswashingmachine"));
param1.put("fAddress",param.get("Address1"));
Stringfitude=(String)param.get("Address2");
if(!MainUtil.isEmpty(fitude)){
JSONObjectfitudejson=newJSONObject(fitude);
param1.put("fLongitude",fitudejson.get("lng"));
param1.put("fLatitude",fitudejson.get("lat"));
}
param1.put("fTitle",param.get("fTitle"));
param1.put("fIntroduction",param.get("fIntroduction"));
param1.put("fCreatetime",GetDateUtil.getFourteenStringDateUtil());
param1.put("fChecktime","");
param1.put("fPublishtime",GetDateUtil.getFourteenStringDateUtil());
intret1=systemMapper.insertRoom(param1);
StringimgArr=(String)param.get("imgArr");
List<Map<String,Object>>list=newArrayList<>();
JSONArrayjsonlist=newJSONArray(imgArr);
for(inti=0;i<jsonlist.length();i++){
Map<String,Object>param2=newHashMap<>();
JSONObjectimg=jsonlist.getJSONObject(i);
param2.put("fImgId",utilService.getEightCode());
param2.put("fRoomId",fRoomId);
param2.put("fImgname",img.getString("name"));
list.add(param2);
}
intret2=systemMapper.insertImg(list);
if(ret1>0&&ret2>0){
returnnewResult(true,null,"");
}
returnnewResult(false,null,"");
}這是service層,后端接收值之后將數(shù)據(jù)插入到數(shù)據(jù)庫中。5.7信息模塊圖5-7聊天列表圖圖5-8聊天信息圖信息模塊發(fā)送消息使用的是websocket技術(shù),并且會將發(fā)送的信息保存在數(shù)據(jù)庫中,方便下次瀏覽。介紹websocke技術(shù):websocke是HTML5的東西(協(xié)議),也就是說,HTTP協(xié)議不改變,或者不相關(guān),但是HTTP不支持持久連接(長連接,循環(huán)連接不計算)第一HTTP有1.1和1.0,也就是所謂的keep-alive,將多個HTTP請求合并為一個。頁面如圖5-7和5-8所示。@ServerEndpoint(value="/websocket",configurator=NewConfigurator.class)
publicclassWebSocket{
@Autowired
privateSystemServicesystemService;
privatestaticfinalSet<WebSocket>endPoints=newCopyOnWriteArraySet<>();
privateLoggerlogger=Logger.getLogger(WebSocket.class);
privatestaticMap<String,Session>routetab=newHashMap<>();
privateHttpSessionhttpSession;
privateSessionsession;
privateStringfUserId;
@OnOpen
publicvoidonOpen(Sessionsession,EndpointConfigconfig){
("連接成功");
this.session=session;
httpSession=(HttpSession)config.getUserProperties().get(HttpSession.class.getName());
fUserId=(String)httpSession.getAttribute("fUserId");
routetab.put(fUserId,session);
endPoints.add(this);
}
@OnMessage
publicvoidonMessage(Stringmsg){
(msg);
JSONObjectjson=newJSONObject(msg);
Stringcontent=json.getString("content");
Stringto=String.valueOf(json.getInt("to"));
StringfTime=GetDateUtil.getFourteenStringDateUtil();
JSONObjectnewMessage=newJSONObject();
newMess
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 營養(yǎng)科學(xué)技術(shù)的研究和發(fā)展考核試卷
- 潛水裝備在海洋環(huán)境保護法規(guī)遵守考核試卷
- 碩士學(xué)習(xí)精要
- 吉林省松原市乾安縣七中2025屆高三第五次適應(yīng)性訓(xùn)練歷史試題含解析
- 武漢工程大學(xué)《生物制藥工藝學(xué)實驗一》2023-2024學(xué)年第二學(xué)期期末試卷
- 內(nèi)蒙古鴻德文理學(xué)院《新興時代下的公共政策》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧省大連市莊河高級中學(xué)2025年高三畢業(yè)班下學(xué)期摸底聯(lián)考歷史試題試卷含解析
- 山東城市服務(wù)職業(yè)學(xué)院《環(huán)境藝術(shù)設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 江西工程學(xué)院《數(shù)字音頻技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 吉林省長春市第二實驗學(xué)校2025年初三五月適應(yīng)性考試英語試題文試卷含答案
- 臨時聘用司機合同范本
- ipo上市商業(yè)計劃書
- 抖音短陪跑合同范本
- HJ 636-2012 水質(zhì) 總氮的測定 堿性過硫酸鉀消解紫外分光光度法
- 山東省青島市市北區(qū)2023-2024學(xué)年七年級下學(xué)期英語期末考試試題
- 現(xiàn)代風(fēng)險導(dǎo)向?qū)徲嬙谔旌鈺嫀熓聞?wù)所的應(yīng)用研究
- 拔牙技巧必成高手
- 新生兒科科室發(fā)展規(guī)劃方案
- 投標(biāo)項目實施方案服務(wù)響應(yīng)方案
- (高清版)DZT 0285-2015 礦山帷幕注漿規(guī)范
- 《養(yǎng)老護理員》-課件:老年人安全防范及相關(guān)知識
評論
0/150
提交評論