版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 畢業(yè)論文設(shè)計(jì)XX網(wǎng)站設(shè)計(jì)與實(shí)現(xiàn)僅供參考摘 要網(wǎng)絡(luò)科學(xué)技術(shù)飛速發(fā)展,科技產(chǎn)品層出不窮,對(duì)于企業(yè)或公司,宣傳自己的理念及推廣所開發(fā)的產(chǎn)品是至關(guān)重要的。如果人們想要在更短的時(shí)間內(nèi),了解到更多有關(guān)科技產(chǎn)品的信息,一種比較便捷的方式便是通過網(wǎng)絡(luò)來訪問。xx網(wǎng)站設(shè)計(jì),它將需求、產(chǎn)品銷售與客戶服務(wù)高度緊密的結(jié)合在一起,大大提高了效率,方便客戶了解及訂購合適的軟件來提高工作效率,使得客戶與企業(yè)能夠輕松交互。網(wǎng)站以jsp作為前臺(tái)的主要展示工具,使用MVC設(shè)計(jì)模式,按照工廠模式解耦,設(shè)計(jì)程序的底層使用Hibernate持久層框架。Spring容器管理對(duì)象,Struts2結(jié)合jsp做前臺(tái)展示,實(shí)現(xiàn)了產(chǎn)品發(fā)布與展示
2、,新聞發(fā)布,企業(yè)精神理念展示,留言意見反饋,用戶實(shí)時(shí)咨詢,后臺(tái)管理等功能。關(guān)鍵詞:系統(tǒng);電子商務(wù);游戲開發(fā);軟件開發(fā)AbstractNetwork science and technology rapid development, science and technology products emerge in endlessly, for enterprise or company, promote their own ideas and development of products is vital.If people want to be in a shorter period of
3、 time, to know more about information technology products, is a more convenient way to access through the network. Jinrun website design, it will demand product sales and customer service level closely unifies in together, greatly improving the efficiency, convenient customer to understand and order
4、 the right software to improve work efficiency, make customers interact with the companies can easily. Site with JSP as the front desk of the main display tool, using the MVC design pattern, according to the three layers of decoupling relationship.The underlying use Hibernate persistence layer frame
5、work, the Spring container management object, struts 2 combined with JSP front-end display.Has realized the product distribution and display, press release, the concept of enterprise spirit, the message feedback, users real-time consultation, background management functions.Key words : System;Electr
6、onic commerce;The game development.Software development目 錄1 引言11.1 研究背景11.2 研究意義22 網(wǎng)站系統(tǒng)相關(guān)技術(shù)及工具介紹32.1 服務(wù)器Tomcat7.0簡介 32.2 JAVA語言32.3 MySQL42.4 Hibernate42.5 Spring框架52.6 MVC開發(fā)模式介紹53 需求分析及總體設(shè)計(jì)介紹73.1 需求分析73.2 項(xiàng)目架構(gòu)83.3 系統(tǒng)工作原理93.4模型設(shè)計(jì)103.4.1控制層設(shè)計(jì)103.4.2業(yè)務(wù)層設(shè)計(jì)113.4.3工具類設(shè)計(jì)163.4.4持久層設(shè)計(jì)184 網(wǎng)站的前臺(tái)設(shè)計(jì)與實(shí)現(xiàn)204.
7、1 首頁設(shè)計(jì)204.2 產(chǎn)品展示214.3新聞中心214.4 留言反饋界面展示224.5 其它界面展示235 網(wǎng)站的后臺(tái)設(shè)計(jì)與實(shí)現(xiàn)255.1 管理員登錄255.2 后臺(tái)主頁255.3 新聞管理模塊265.4 產(chǎn)品管理模塊275.5 網(wǎng)站信息管理模塊285.6 用戶留言管理模塊285.7 其它模塊296 系統(tǒng)測(cè)試306.1 測(cè)試要求306.2 測(cè)試用例設(shè)計(jì)306.3 測(cè)試結(jié)論307 結(jié)論31謝辭32參考文獻(xiàn)33僅供參考僅供參考XX網(wǎng)站設(shè)計(jì)與實(shí)現(xiàn)1 引 言1.1 研究背景目前,網(wǎng)絡(luò)的發(fā)展趨勢(shì)已經(jīng)商業(yè)化和全民普及趨勢(shì)。世界上大部分的公司企業(yè)都是以營利為首要目的。在宣傳推廣上,就顯得尤為重要。使用有效
8、的廣告可以為我們帶來高效益,比方在企業(yè)宣傳,招聘職工信息發(fā)布,網(wǎng)上銷售等方面,網(wǎng)絡(luò)給我們帶來了許多方便?,F(xiàn)在的網(wǎng)絡(luò)儼然已經(jīng)成為了企業(yè)競爭的重要戰(zhàn)略手段。網(wǎng)站的優(yōu)勢(shì)源于可以為企業(yè)提供一個(gè)舞臺(tái)來展示自己、另一個(gè)好處表達(dá)在能為消費(fèi)者更加便捷的提供一個(gè)了解企業(yè)的途徑。公司或企業(yè)可以通過網(wǎng)絡(luò)平臺(tái),實(shí)時(shí)的提供在線客服以供咨詢。利用網(wǎng)絡(luò)推廣和宣傳企業(yè)產(chǎn)品、實(shí)時(shí)的發(fā)布一些要聞,顧客的需求建議也可以通過留言信息及時(shí)的反饋給企業(yè)網(wǎng)站的工作人員。網(wǎng)絡(luò)的普及,使得電腦走進(jìn)了千家萬戶,社會(huì)各層人士獲得了平等接觸實(shí)時(shí)信息的時(shí)機(jī)。利用這股發(fā)展趨勢(shì),各大企業(yè)在管理和銷售上都能使用到軟件領(lǐng)域的工具來進(jìn)行便捷銷售,便捷辦公,解放
9、一定的勞動(dòng)力。利用網(wǎng)站推廣產(chǎn)品,推進(jìn)行業(yè)發(fā)展,促進(jìn)產(chǎn)品銷售是一個(gè)很好的方案,新的促銷形式,與傳統(tǒng)相比有許多優(yōu)點(diǎn):它降低產(chǎn)品成本;利用網(wǎng)絡(luò)作為交互平臺(tái);改變傳統(tǒng)的人與人直接碰面交談的方式,可以降低交互交談時(shí)受空間和時(shí)間的限制;信息的傳遞及發(fā)布更新更加迅速靈活,新的技術(shù)產(chǎn)品信息上傳后,可以立即得到推廣和發(fā)現(xiàn),客戶可以立即看到,對(duì)于滿意的產(chǎn)品,可以直接與客服人員交談,從而大大提高了效率。網(wǎng)站的主要功能是利用網(wǎng)站作為公司企業(yè)產(chǎn)品的展示平臺(tái),將最新產(chǎn)品的一些基本信息以及相關(guān)新聞、公司目前概況等信息以網(wǎng)站的形式發(fā)布到網(wǎng)絡(luò)上,以供人們觀看與借鑒。本次的畢業(yè)設(shè)計(jì)課題是基于JSP設(shè)計(jì)的企業(yè)網(wǎng)站系統(tǒng),它的產(chǎn)生背景
10、源于武夷山市企業(yè)信息化建設(shè)。此設(shè)計(jì)更具實(shí)際研究意義,目的是綜合所學(xué)知識(shí)和利用身邊的網(wǎng)絡(luò)資源,鍛煉動(dòng)手實(shí)踐能力,有利于提高綜合學(xué)習(xí)能力。順利完成設(shè)計(jì)課題的前提條件還需要很多課外知識(shí)的補(bǔ)充,如MVC開發(fā)模式,當(dāng)前流行的J2EE框架,對(duì)XML等配置文件的書寫有一定的了解等等。1.2 研究意義信息化技術(shù)飛速發(fā)展,科學(xué)技術(shù)一日千里,這推快了人們的生活節(jié)奏。時(shí)間變得更加珍貴。任何產(chǎn)品需要很好的被使用,其知名度就至關(guān)重要。人們生活中更多接觸的便是電視、電腦、 這些科技產(chǎn)品。那么對(duì)于軟件領(lǐng)域研發(fā)出來的科技產(chǎn)品,企業(yè)應(yīng)該如何對(duì)其推廣宣傳和銷售。源于這一思考,設(shè)想如果各大企業(yè)公司能紛紛建立起屬于自己的企業(yè)網(wǎng)站,將
11、最新的產(chǎn)品和新聞實(shí)時(shí)的發(fā)布更新,那么去推廣一個(gè)網(wǎng)站相對(duì)來講更加的省時(shí)省力,這是提高效率的有效途徑。企業(yè)建立網(wǎng)站,這樣可以很好的對(duì)外展示企業(yè)文化,是企業(yè)實(shí)力的一種表達(dá)方式。今天,各行各業(yè)的競爭日趨激烈,每個(gè)企業(yè)所面臨的主要任務(wù)是提高工作效率和工作質(zhì)量。企業(yè)網(wǎng)站的建立可以大量降低人力資源方面的成本付出,突破了時(shí)間和空間的限制,客戶對(duì)產(chǎn)品的詳細(xì)了解可以在任何時(shí)間和地點(diǎn)進(jìn)行,可以即時(shí)的進(jìn)行。有了展銷產(chǎn)品的網(wǎng)站平臺(tái),客戶就不需要到實(shí)地去查詢產(chǎn)品詳情,可以借助網(wǎng)絡(luò)平臺(tái)聯(lián)系銷售員,通過遠(yuǎn)程體驗(yàn),大大便捷了交易所帶來的時(shí)間問題。鑒于互聯(lián)網(wǎng)的諸多優(yōu)勢(shì)以及對(duì)國內(nèi)外軟件產(chǎn)品的銷售現(xiàn)狀的研究分析,我此次的設(shè)計(jì)是開發(fā)一
12、個(gè)集成了發(fā)布產(chǎn)品、發(fā)布新聞、服務(wù)咨詢等功能于一體的企業(yè)網(wǎng)站,以微小的力量推動(dòng)中國互聯(lián)網(wǎng)的發(fā)展。2 網(wǎng)站系統(tǒng)相關(guān)技術(shù)及工具介紹2.1 服務(wù)器Tomcat7.0簡介 Tomcat由開源社區(qū)研究開發(fā),對(duì)編程興趣人員可以自由對(duì)Tomcat服務(wù)器進(jìn)行學(xué)習(xí)和研究。因?yàn)樗拿赓M(fèi)和開源的這些特性。Tomcat得到了極大的推廣,并且經(jīng)過開源社區(qū)的奉獻(xiàn),它的性能也更加強(qiáng)大,趨于完善。 Tomcat是純粹的由java代碼編寫。它以小型、輕量級(jí)Web服務(wù)器的特點(diǎn)被廣泛的推廣運(yùn)用并受人喜愛。在個(gè)人的電腦上安裝上服務(wù)器軟件,個(gè)人的PC電腦自然就成為了一個(gè)初具模型服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問量不多的情
13、況下可以被普遍地使用。在配置好Tomcat服務(wù)器的電腦上,這樣Tomcat就可以對(duì)HTML頁面等用戶發(fā)出的訪問請(qǐng)求進(jìn)行響應(yīng)1。 我們將web應(yīng)用程序部署到Tomcat服務(wù)器中,就可以實(shí)現(xiàn)在本地進(jìn)行web應(yīng)用程序的調(diào)試運(yùn)行。2.2 JAVA語言Java以其面向?qū)ο蟮膬?yōu)勢(shì)和安卓市場(chǎng)被廣闊人群深知。由于Java被很流行的推出,同時(shí)擁有世界上最大的開源社區(qū)正在迅速發(fā)展,對(duì)c+語言已經(jīng)形成了強(qiáng)大的沖擊。Java可以解決一些復(fù)雜的邏輯問題,將問題轉(zhuǎn)化為面向?qū)ο蟮乃枷肴ソ鉀Q。Java語言的由杰姆斯高斯林和他的同事共同開發(fā),工程正式啟動(dòng)于1995年。后期更名為Java,并且重新設(shè)計(jì)開發(fā)的互聯(lián)網(wǎng)應(yīng)用。
14、由Java編寫出的源代碼,經(jīng)虛擬機(jī)的類加載器編譯成字節(jié)碼文件后,可以運(yùn)行在不同的平臺(tái)上。這樣就脫離了java的運(yùn)行環(huán)境,只需要編譯過一次,就可以到處運(yùn)行2。Java有一個(gè)用戶友好,貼近現(xiàn)實(shí)生活的語法。這樣的語言具備著獨(dú)特的優(yōu)勢(shì),擁有面向?qū)ο蟮母拍?,穩(wěn)定性,和平臺(tái)獨(dú)立性,安全性,穩(wěn)定性和支持多線程,動(dòng)態(tài)等優(yōu)良特性。因?yàn)镴ava多的線程特性,處理器在不同的線程間快速切換。相比其他語言,如C+沒有內(nèi)置的多線程機(jī)制,因此C+的多線程就必須調(diào)用操作系統(tǒng)的多線程功能來進(jìn)行多線程程序的設(shè)計(jì)。Java在軟件的編程語言設(shè)計(jì)中,不單能夠應(yīng)用于開發(fā)大型的應(yīng)用程序,并且在Internet的應(yīng)用開發(fā)方面也較為突出。Ja
15、va不僅是一門現(xiàn)在大家大量使用的編程語言,就現(xiàn)在所知道的IT行業(yè)很多最新的技術(shù)都涉及了java語言,java早已經(jīng)被大家公認(rèn)為當(dāng)今世上最重要的語言之一3。2.3 MySQL就目前的數(shù)據(jù)分類來看,MySQL的規(guī)模可以將其劃分到中型數(shù)據(jù)庫,它是由瑞典研發(fā)人員所研發(fā),目前已經(jīng)屬于Oracle公司。MySQL是最流行的關(guān)系數(shù)據(jù)庫管理系統(tǒng),MySQL在諸多的Web應(yīng)用程序中是最好的關(guān)系數(shù)據(jù)庫管理系統(tǒng)4。MySQL的特點(diǎn)就是高效靈活,它的工作原理是將數(shù)據(jù)保存一張張的表中,數(shù)據(jù)整體存放合理,結(jié)構(gòu)優(yōu)良。MySQL使用標(biāo)準(zhǔn)的結(jié)構(gòu)化查詢語言、其軟件體積小、反應(yīng)速度快、成本低、開源,由于這些優(yōu)勢(shì),特別是小型和中型網(wǎng)
16、站的應(yīng)用開發(fā)通常是以MySQL為首選。MySQL的底層應(yīng)用語言以C和C+為主,使用了多種編譯器對(duì)其進(jìn)行測(cè)試和不斷改善,在移植性方面,mysql的表現(xiàn)較為突出。多種操作系統(tǒng)對(duì)mysql都支持,像通俗常用的就有:Linux、Mac OS、Windows等操作系統(tǒng)。它還為為多種編程語言提供了API的支持。例如Java、C+、C和Tcl等,MySQL與這邊編程都能完美融合。另外MySQL對(duì)多線程處理方面也有一些優(yōu)勢(shì),這樣就能使得服務(wù)器的CPU資源能夠被充分的利用起來。因?yàn)镸ySQL提供的標(biāo)準(zhǔn)結(jié)構(gòu)化查詢語言、提供ODBC和JDBC等連接數(shù)據(jù)庫的方法,使其更加便于管理、檢查,在優(yōu)化數(shù)據(jù)庫操作方面也更加便捷
17、5。2.4 HibernateHibernate的優(yōu)點(diǎn):對(duì)JDBC的封裝,簡化了許多重復(fù)的代碼。對(duì)DAO層編碼工作進(jìn)行了簡化,使開發(fā)可以集中精力關(guān)心業(yè)務(wù)邏輯。移植性好,它支持多種數(shù)據(jù)庫,這樣更換數(shù)據(jù)庫時(shí)代碼的改變量就比較少。該框架沒有實(shí)現(xiàn)任何接口,沒有侵入性。是一個(gè)輕量級(jí)框架。Hibernate延遲加載:延遲加載的特點(diǎn)是當(dāng)一個(gè)對(duì)象或?qū)ο蟮膶傩圆樵儠r(shí),該對(duì)象或?qū)傩詴簳r(shí)不存在內(nèi)存中,只有當(dāng)程序真正使用到數(shù)據(jù)時(shí),該數(shù)據(jù)才被加載到內(nèi)存中6。優(yōu)化Hibernate:1、在一對(duì)多的關(guān)聯(lián)關(guān)系中,應(yīng)該從多的一方維護(hù)。2、防止使用一對(duì)一,盡量使用多對(duì)一關(guān)聯(lián)關(guān)系。3、配置對(duì)象緩存,減少使用集合緩存。4、減少表字段
18、,表關(guān)聯(lián)不要怕多,二級(jí)緩存撐腰。Hibernate因?yàn)槠浜唵蔚膶W(xué)習(xí)成本,功能完備并且運(yùn)行高效,受到開發(fā)人員的喜愛。使用Hibernate自帶的查詢語言HQL,可以使數(shù)據(jù)庫操作方面更加得心應(yīng)手,解決很多開發(fā)上常見的對(duì)數(shù)據(jù)庫操作的一系列繁瑣問題,使程序員可以專注于解決業(yè)務(wù)邏輯的問題7。2.5 Spring框架Spring是一個(gè)輕量級(jí)容器,默認(rèn)的許多服務(wù)是不自動(dòng)打開的,需要手動(dòng)配置來將其打開。學(xué)習(xí)Spring框架的兩個(gè)關(guān)鍵:IOC和AOP。內(nèi)部核心是一個(gè)Bean工廠Bean Factory,它提供和實(shí)現(xiàn)控制反轉(zhuǎn)和依賴注入。另外Spring容器用于申明式的事務(wù),安全等服務(wù)應(yīng)用8。Spring可以與當(dāng)前
19、流行框架的集成,應(yīng)用范圍廣泛,可以是B/S或者C/S9。本網(wǎng)站系統(tǒng)采用注釋的方式來管理事務(wù)。從三層結(jié)構(gòu)來看,Web層的Struts2框架和Dao層的Hibernate框架都與其進(jìn)行整合。Spring的強(qiáng)大管理及代理等方式,使任何Java應(yīng)用都可以從Spring中受益10。其結(jié)構(gòu)如圖2-1所示:圖2-1 Spring結(jié)構(gòu) 2.6 MVC開發(fā)模式介紹MVC是企業(yè)級(jí)應(yīng)用的開發(fā)中常用的設(shè)計(jì)模式。它把項(xiàng)目架構(gòu)進(jìn)行分層設(shè)計(jì),分為表現(xiàn)層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層。MVC即代表模型視圖控制器。模型Model即為一些常用的實(shí)體類,(如Person類實(shí)體),實(shí)體類主要用于封裝數(shù)據(jù)。視圖View,一般用作數(shù)據(jù)的顯示。
20、在J2EE中視圖由jsp負(fù)責(zé)顯示??刂破?Controller),用于協(xié)調(diào)M和V的關(guān)系,也用作解決業(yè)務(wù)邏輯,在Struts2中就是Action類11。1、模型模型一般表示數(shù)據(jù)的封裝。在三層架構(gòu)中,模型擁有較多的處理任務(wù)。模型能為視圖提供數(shù)據(jù)支持。因?yàn)槟P偷拇a可以被多個(gè)視圖重復(fù)使用,這樣可以減少代碼的重復(fù)性書寫12。2、視圖視圖提供應(yīng)用戶使用,并且可以與之交互的界面。在Web應(yīng)用初期,界面主要是由HTML做出簡單的顯示,然而,在現(xiàn)在的網(wǎng)絡(luò)技術(shù)發(fā)展下,一些新技術(shù)的出現(xiàn),如XHTML,XMLXSL,WML這些標(biāo)記語言和Web服務(wù)。MVC應(yīng)用程序可以處理許多不同的返回結(jié)果視圖13。3、控制器當(dāng)用戶請(qǐng)
21、求數(shù)據(jù),控制器做出響應(yīng)處理,最終將數(shù)據(jù)進(jìn)行封裝,再交給jsp做顯示。所以當(dāng)你點(diǎn)擊在JSP互動(dòng)環(huán)節(jié)時(shí),控制器接收組件的要求和決策模型的呼叫建立負(fù)責(zé)處理傳入的請(qǐng)求,然后封裝的數(shù)據(jù),確定該視圖顯示界面14。3 需求分析及總體設(shè)計(jì)介紹3.1 需求分析xx模型是典型網(wǎng)上產(chǎn)品展銷實(shí)踐中較為普遍的商務(wù)企業(yè)B/S模式,其主要功能模塊包括產(chǎn)品發(fā)布、新聞管理、留言反饋、業(yè)務(wù)咨詢等基本功能。此外,此網(wǎng)站也將實(shí)現(xiàn)企業(yè)網(wǎng)站系統(tǒng)的后臺(tái)管理,其中包括新增產(chǎn)品的添加與修改信息、新聞的相關(guān)處理功能等。本系統(tǒng)的Web層框架,是基于目前流行的SSH,前臺(tái)采用JSP技術(shù)作為顯示和交互,在網(wǎng)站的設(shè)計(jì)與開發(fā)過程中,利用軟件設(shè)計(jì)模式,做到
22、盡量削減體系功能模塊間的耦合。本網(wǎng)站系統(tǒng)前后臺(tái)的功能關(guān)系,如圖3-1所示:圖3-1 系統(tǒng)功能分析 前臺(tái)游客瀏覽部分:1 企業(yè)文化展示:顯示企業(yè)精神理念,公司福利待遇等信息;2 經(jīng)營業(yè)務(wù)展示:顯示企業(yè)經(jīng)營范圍內(nèi)業(yè)務(wù)項(xiàng)目;3 新聞顯示:按最新更新展示新聞條目及詳細(xì);4 產(chǎn)品顯示:通過預(yù)覽圖片或產(chǎn)看詳細(xì)的方式查看產(chǎn)品的詳細(xì)信息;5 留言反饋:通過表單的填寫提交對(duì)此網(wǎng)站以及產(chǎn)品的建議或意見。1. 后臺(tái)管理員管理部分:1 管理員:管理員登錄;2 新聞管理:分頁查看所有新聞,對(duì)新聞進(jìn)行編輯、批量刪除、添加新聞操作;3 產(chǎn)品管理:按更新時(shí)間順序添加新產(chǎn)品、查看產(chǎn)品詳細(xì)信息、編輯產(chǎn)品、刪除產(chǎn)品信息;4 網(wǎng)站基
23、本信息管理:更新網(wǎng)站基本信息,企業(yè)理念精神及公司福利,地址和聯(lián)系信息;3.2 項(xiàng)目架構(gòu) 圖3-2 項(xiàng)目架構(gòu) 如圖3-2所示,左邊是項(xiàng)目工程的三層架構(gòu)。Dao層及其接口實(shí)現(xiàn)類,這兩個(gè)包中的類協(xié)調(diào)負(fù)責(zé)對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行存取操作。而domain包下存放的是實(shí)體類,主要是為了對(duì)數(shù)據(jù)進(jìn)行封裝和攜帶數(shù)據(jù)。Service及其實(shí)現(xiàn)類在三層架構(gòu)中主要是針對(duì)業(yè)務(wù)邏輯進(jìn)行編寫的類。Beans.xml、Hibernate.cfg.xml與struts.xml這三個(gè)配置文件則是對(duì)應(yīng)SSH框架。而perties則是此web應(yīng)用程序中用到的一個(gè)自定義配置文件。右邊的是根目錄結(jié)構(gòu),其下是JSP頁面的存放
24、和樣式控制文件等,例如CSS、js文件等。本次的項(xiàng)目設(shè)計(jì)遵循MVC設(shè)計(jì)模式,利用Spring容器巧妙的創(chuàng)建和管理類,遵循工廠設(shè)計(jì)模式對(duì)類進(jìn)行解耦,按照三層架構(gòu)進(jìn)行設(shè)計(jì)和實(shí)現(xiàn),層與層之間類的功能明確,整體結(jié)構(gòu)清晰,便于調(diào)試和管理。3.3 系統(tǒng)工作原理基于web的網(wǎng)站系統(tǒng)是用戶通過瀏覽器發(fā)送請(qǐng)求,根據(jù) 協(xié)議,Tomcat服務(wù)器接收到用請(qǐng)求后,將根據(jù)配置文件為其分配是由哪種Servlet來處理。如果是訪問以.do結(jié)尾的URL地址,就交由Struts2來處理,Struts2將根據(jù)配置文件為其分配相應(yīng)的Action來處理請(qǐng)求。Action類中對(duì)應(yīng)的方法將調(diào)用相應(yīng)的業(yè)務(wù)類方法去完成請(qǐng)求,由業(yè)務(wù)類調(diào)用dao
25、方法來完成對(duì)數(shù)據(jù)庫的存取和訪問。如圖3-3所示:Spring將三層中所有的類的創(chuàng)建管理起來,包括控制層,業(yè)務(wù)層的實(shí)現(xiàn)類和DAO層中的類。圖3-3 工作原理3.4模型設(shè)計(jì)3.4.1控制層設(shè)計(jì)在SSH框架組合下,控制層的代碼由struts2的Action來充當(dāng),根據(jù)請(qǐng)求信息調(diào)用指定action類中的方法來進(jìn)行請(qǐng)求處理,以及返回對(duì)應(yīng)的結(jié)果視圖,由jsp將數(shù)據(jù)作為展示給用戶。命名空間以"/sys"標(biāo)記的為后臺(tái)的包,以"/cli"標(biāo)記的對(duì)應(yīng)前臺(tái),一般由網(wǎng)絡(luò)上的游客隨機(jī)訪問。在兩大類對(duì)應(yīng)的包名下有對(duì)應(yīng)前臺(tái)和后臺(tái)模塊的諸多Action類,代碼如下:Struts2中的前
26、臺(tái)配置:<package name="cli" namespace="/cli" extends="default"> <!- 客戶端首頁 -> <action name="indexAction_*" class="indexAction" method="1"> <result name="index">/WEB-INF/client/index.jsp</result> </actio
27、n> <!- 業(yè)務(wù)中心 -> <action name="businessAction_*" class="businessAction" method="1"> <result name="business">/WEB-INF/client/business.jsp</result> </action> <!- 產(chǎn)品展示 -> <action name="productAction_*" class="
28、;productAction" method="1"> <result name="product">/WEB-INF/client/product.jsp</result> <result name="promore">/WEB-INF/client/promore.jsp</result> </action> <!- 新聞中心 -> <action name="newsAction_*" class="new
29、sAction" method="1"> <result name="news">/WEB-INF/client/news.jsp</result> <result name="fullText">/WEB-INF/client/fullText.jsp</result> </action> </package>3.4.2業(yè)務(wù)層設(shè)計(jì)業(yè)務(wù)層由Struts2的action類和一些實(shí)體類配合使用,主要是針對(duì)業(yè)務(wù)邏輯與數(shù)據(jù)封裝,數(shù)據(jù)攜帶這些請(qǐng)求進(jìn)行處理,然
30、后返回結(jié)果視圖,供頁面做顯示。業(yè)務(wù)層的處理內(nèi)容包含:企業(yè)軟件產(chǎn)品的增刪改查功能、新聞模塊的顯示功能、留言與意見反饋功能、客服在線咨詢等。1、 軟件產(chǎn)品業(yè)務(wù)設(shè)計(jì),靈感來自于一些企業(yè)的門戶網(wǎng)站,其思路是:產(chǎn)品羅列,可以對(duì)產(chǎn)品的詳細(xì)信息查看,在產(chǎn)品的查看過程中可以即時(shí)的聯(lián)系客服人員訂購咨詢或了解詳情。下面是產(chǎn)品業(yè)務(wù)類實(shí)現(xiàn)的部分代碼:/ 后臺(tái)-顯示產(chǎn)品列表public String list() QueryBuilder queryBuilder = new QueryBuilder(Product.class);queryBuilder.addOrderProperty("updateTi
31、me", true);PageView pageView = productService.getPageView(queryBuilder, getPage Num(request);request.setAttribute("Products", pageView);return "list"/ 后臺(tái)-添加產(chǎn)品public String add() String suffix = null;try suffix = product.getPicFileName().substring(product.getPicFileName().las
32、tIndexOf(".");if (!".jpg".equalsIgnoreCase(suffix) this.addFieldError("msg", "格式錯(cuò)誤");return "addUI" catch (Exception e) this.addFieldError("msg", "請(qǐng)選擇產(chǎn)品圖片");return "addUI"/ 文件上傳if (product.getPicFileName() != null) Strin
33、g tmpFileName = product.getPicFileName().substring(product.getPicFileName().lastIndexOf("/") + 1);String UUIDName = UUIDUitls.getUUID() + suffix;String savedPath = ServletActionContext.getServletContext().getRealPath(uploads);File savedFile = new File(savedPath, UUIDName);if (product.getPi
34、c() = null) this.addFieldError("warn", "請(qǐng)選擇圖片");return "addUI"product.getPic().renameTo(savedFile);/ 添加記錄到數(shù)據(jù)庫product.setNewName(UUIDName);product.setOglName(tmpFileName);product.setUpdateTime(new Date();productBiz.save(pro);request.setAttribute("msg", "提示
35、:上傳成功");return "addUI"2、 留言反饋處理:首先對(duì)想要留言的用戶進(jìn)行規(guī)則校驗(yàn)、 號(hào)碼校驗(yàn)、郵箱規(guī)則校驗(yàn),校驗(yàn)不通過的(包含空)將不提交頁面,當(dāng)非空等檢測(cè)通過之后,就提交表單,這樣就可以從數(shù)據(jù)庫中查看到經(jīng)過檢測(cè)的用戶留言,可以防止大量的垃圾留言。3、 新聞?wù)故緲I(yè)務(wù):包括新聞條目,新聞的發(fā)布時(shí)間按照更新的時(shí)間排序,通過分頁對(duì)新聞進(jìn)行顯示。新聞模塊的功能實(shí)現(xiàn),是從數(shù)據(jù)庫按頁查出當(dāng)前顯示頁的新聞頁集合信息,用list集合封裝,然后借助ognl對(duì)其進(jìn)行迭代操作并顯示。而在前臺(tái)頁面的分頁功能實(shí)現(xiàn),則是由Action去獲取每頁的大小數(shù)和所查看數(shù)據(jù)的當(dāng)前頁碼,
36、動(dòng)態(tài)的拼湊hql語句,每次去數(shù)據(jù)庫詢出指定頁碼的記錄條數(shù),進(jìn)行封裝到page實(shí)體,再將多個(gè)page實(shí)體封裝成list集合,完成查詢后將返回結(jié)果給頁面進(jìn)行迭代顯示。下面為新聞模塊的部分代碼:/ 新聞列表public String listNews() QueryBuilder queryBuilder = new QueryBuilder(News.class);queryBuilder.addOrderProperty("record", false);PageView pageView = newsService.getPageView(queryBuilder, get
37、PageNum(request);request.setAttribute("news", pageView);return "listNews"/ 批量刪除新聞public String del() / 獲取idsString sids = request.getParameterValues("News_ids");Integer ids = DataType.converterStringArray2IntegerArray(sids);if (ids != null) / 刪除newsService.deleteSysProd
38、uctsByIds(ids);return "listAction"return null;/ 發(fā)布新聞public String addNews() / 非空判斷-titleif (StringUtils.isBlank(news.getTitle() this.addFieldError("msg", "請(qǐng)?zhí)顚懳恼聵?biāo)題");return "addNewsUI"/ 如果是事紀(jì)-年份不能為空String suffix = null;if (News.EVENTS_VALUE.equals(news.getRemar
39、k() if (StringUtils.isBlank(news.getYear() this.addFieldError("msg", "請(qǐng)?zhí)顚懯录o(jì)年份");return "addNewsUI" else / 如果是新聞,圖片不能為空if (StringUtils.isBlank(news.getPicFileName() / 新聞?dòng)袌D片this.addFieldError("msg", "請(qǐng)選擇新聞圖片");return "addNewsUI"/ 圖片名不為空的時(shí)候-驗(yàn)后
40、綴名try suffix = news.getPicFileName().substring(news.getPicFileName().lastIndexOf(".");if (!".jpg".equalsIgnoreCase(suffix) this.addFieldError("msg", "格式錯(cuò)誤");return "addNewsUI" catch (Exception e) this.addFieldError("msg", "請(qǐng)選擇圖片")
41、;return "addNewsUI"/ 新聞發(fā)布者-驗(yàn)空if (StringUtils.isBlank(news.getName() this.addFieldError("msg", "請(qǐng)?zhí)顚懩纳矸?quot;);return "addNewsUI"/ 新聞內(nèi)容-驗(yàn)空if (StringUtils.isBlank(news.getContent() this.addFieldError("msg", "請(qǐng)?zhí)顚懳恼聝?nèi)容");return "addNewsUI"/
42、 1根據(jù)remark判斷新聞還是事紀(jì)if (News.EVENTS_VALUE.equals(news.getRemark() / 設(shè)置年份"2010 -"String temp = news.getYear().substring(0, 4);news.setYear(temp + ""); / 2設(shè)置新聞發(fā)布時(shí)間,截取news.setPostTime(new Date();/ 3.新聞?wù)厝f (news.getContent().length() > 100) news.setDigest(news.getContent().substr
43、ing(0, 99);/ 4.設(shè)置新聞圖片上傳信息-圖片上傳if (StringUtils.isNotBlank(news.getPicFileName() / System.out.println(picForm.getPicFileName();String tmpFileName = news.getPicFileName().substring(news.getPicFileName().lastIndexOf("/") + 1);String UUIDName = UUIDUitls.getUUID() + suffix;String savedPath = Se
44、rvletActionContext.getServletContext().getRealPath(uploads);System.out.println("-新聞添加-" + savedPath);File savedFile = new File(savedPath, UUIDName);/ 新聞必須要有圖、事紀(jì)圖片可有可無-以下判斷不需要if (news.getPic() = null) this.addFieldError("warn", "請(qǐng)選擇圖片");return "addNewsUI"news.g
45、etPic().renameTo(savedFile);/ 添加記錄到數(shù)據(jù)庫news.setNewName(UUIDName);news.setOglName(tmpFileName);/ 4.其他信息保存newsService.save(news);request.setAttribute("msg", "提示:文章發(fā)布成功");return "addNewsUI"3.4.3工具類設(shè)計(jì)當(dāng)設(shè)計(jì)的程序在調(diào)用過程中將重復(fù)性的調(diào)用一些方法或需要便捷的提供調(diào)用時(shí),這時(shí)候就需要將其抽取出來,封裝成單獨(dú)的工具。這樣就可以與業(yè)務(wù)無關(guān)而可以在任意的層
46、被單獨(dú)使用。在此次設(shè)計(jì)中的工具類方法有:CheckPrivalegeInterceptor.java類用于檢測(cè)后臺(tái)操作時(shí),管理員是否是登錄狀態(tài)的檢測(cè)。DataType.java用于對(duì)web前臺(tái)所獲取到的數(shù)據(jù)參數(shù)進(jìn)行類型轉(zhuǎn)換。MD5keyBean.java則是用于對(duì)字符串進(jìn)行加密使用,一般是對(duì)其成數(shù)據(jù)指紋摘要,是一串32位的明文密碼。而SessionUtils.java是針對(duì)登錄用戶可以設(shè)置服務(wù)器session的存活時(shí)間或者退出系統(tǒng)時(shí)將user從session中移除出去。UUIDUtil.java用于生成全球唯一id號(hào)。代碼例如:1. DataType.javapublic class Data
47、Type public static Integer converterStringArray2IntegerArray(String sids) if (sids != null && sids.length > 0) Integer ids = new Integersids.length;for (int i = 0; i < ids.length; i+) if (StringUtils.isNotBlank(sidsi) idsi = Integer.parseInt(sidsi);return ids;return null;public static
48、Integer Str2Integer(String id)if (StringUtils.isNotBlank(id) return Integer.parseInt(id);return null;public static String Integer2Str(Integer id)if (id!=null) return id.toString();return null;2. SessionUtils.javapublic class SessionUtils public static void setSysUserToSession( ServletRequest request
49、,User user) Session session=request.getSession();if(user=null)return;session.setAttribute("user", user);public static User getSysUserFormSession( ServletRequest request) Session session=request.getSession(false); if(session=null) return null; User user=(User)session.getAttribute("user
50、"); return user;3.4.4持久層設(shè)計(jì)為了解決并發(fā)訪問帶來的問題,此次設(shè)計(jì)選用以c3p0數(shù)據(jù)源為其設(shè)計(jì)數(shù)據(jù)庫連接池。由每一個(gè)實(shí)體類對(duì)應(yīng)一張表,利用Hibernate的持久化,懶加載,緩存等特性對(duì)數(shù)據(jù)進(jìn)行保存、更新和頻繁的查找操作。從Struts2的Action的創(chuàng)建、Service類和Dao對(duì)象的創(chuàng)建,使用了當(dāng)前流行的工廠模式,三層架構(gòu)中每一個(gè)層的類都對(duì)其進(jìn)行抽取接口,并且使用注解加配置文件相結(jié)合,由Spring容器代為管理對(duì)象的生命周期,靈活搭配,整個(gè)項(xiàng)目工程看起來結(jié)構(gòu)清晰。事務(wù)的控制,同樣是采用注解的方式,這樣的設(shè)計(jì)結(jié)構(gòu)一目了然,便于后期系統(tǒng)的維護(hù)和升級(jí)15。下面是
51、代碼的部分例如:1. Hibernate配置文件中的映射:<hibernate-configuration><session-factory><mapping resource="com/jinrun/domain/User.hbm.xml" /><mapping resource="com/jinrun/domain/Picture.hbm.xml" /><mapping resource="com/jinrun/domain/Message.hbm.xml" /><
52、mapping resource="com/jinrun/domain/SysInfo.hbm.xml" /><mapping resource="com/jinrun/domain/Product.hbm.xml" /><mapping resource="com/jinrun/domain/Business.hbm.xml" /><mapping resource="com/jinrun/domain/News.hbm.xml" /><mapping resour
53、ce="com/jinrun/domain/CompanyInfo.hbm.xml" /><mapping resource="com/jinrun/domain/Employee.hbm.xml" /></session-factory></hibernate-configuration>2. Spring控制反轉(zhuǎn)和事務(wù)管理注解:/*獲取父類的泛型類型*/private Class entityClass=GenericClass.getGenericClass(this.getClass();Resource
54、(name="sessionFactory")public void setSessionFactoryDI(SessionFactory sessionFactory) super.setSessionFactory(sessionFactory);public void save(T t) this.getHibernateTemplate().save(t);public void update(T entity) this.getHibernateTemplate().update(entity);事務(wù)注解:Service("newsService&quo
55、t;)Transactionalpublic class NewsServiceImpl implements NewsService / 事務(wù)注解Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, readOnly = false)public void save(News news) News downNews = findDownIdIsNullById();4 網(wǎng)站的前臺(tái)設(shè)計(jì)與實(shí)現(xiàn)在這個(gè)章節(jié)將會(huì)介紹這次網(wǎng)站設(shè)計(jì)的界面部分。xx的前臺(tái)是供游客瀏覽新聞、接觸這個(gè)門戶網(wǎng)站企業(yè)的基本信
56、息,查看最新設(shè)計(jì)產(chǎn)品,意見反饋及聯(lián)系該網(wǎng)站等一些基本所需用途。一個(gè)網(wǎng)站的前臺(tái)的設(shè)計(jì)首先應(yīng)該是精美,令人舒適,其次突出企業(yè)的宣傳主題和精神理念。所以,前臺(tái)的設(shè)計(jì)應(yīng)當(dāng)是簡明扼要、層次分明、條理清晰。下面將介紹“xx”的前端部分的實(shí)現(xiàn)。4.1 首頁設(shè)計(jì)首頁為6個(gè)主要部分,導(dǎo)航欄平鋪的方式,簡明清晰的列出。如圖4-1所示:圖4-1 網(wǎng)站首頁展示圖4-1展示了網(wǎng)站的首頁信息,導(dǎo)航欄的左側(cè)為一個(gè)企業(yè)的logo標(biāo)志。右邊分別對(duì)應(yīng)六項(xiàng)網(wǎng)站常用的菜單。其下方為可更新,可自動(dòng)切換的宣傳圖片。首頁可以展示出公司最新研發(fā)的軟件產(chǎn)品宣傳,包括宣傳圖片和產(chǎn)品信息。4.2 產(chǎn)品展示圖4-2,產(chǎn)品的展示,可以是以圖片預(yù)覽的方式連續(xù)翻看產(chǎn)品信息,或可點(diǎn)擊查看詳細(xì):圖4-2 產(chǎn)品展示4.3新聞中心圖4-3,按照后臺(tái)的發(fā)布時(shí)間順序?qū)⒆钚赂碌男侣勶@示在最前,并顯示時(shí)間和新聞標(biāo)題:圖4-3 新聞中心4.4 留言反饋界面展示圖4-4聯(lián)系我們界面:圖4-4 留言反饋界面表單校驗(yàn)注冊(cè)頁面校驗(yàn):l 您的:Ø 不能為空;l 電子郵箱:Ø 不能為空;Ø 按照郵箱的規(guī)則校驗(yàn)進(jìn)行約束;l :Ø 不能為空;Ø 數(shù)字約束;Ø 長度控制在7-15位
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度服裝代銷合同模板(快時(shí)尚品牌合作)4篇
- 二零二五年度城市出租車經(jīng)營權(quán)轉(zhuǎn)讓合同7篇
- 二零二五年度家電產(chǎn)品環(huán)保材料采購合同4篇
- 2025年度智能門禁系統(tǒng)門衛(wèi)工程施工合同4篇
- 二零二五年度企業(yè)年會(huì)主題定制策劃合同協(xié)議書4篇
- 2025年度智能電網(wǎng)充電樁技術(shù)研發(fā)與應(yīng)用合同4篇
- 2025年度城市綜合體商鋪?zhàn)赓U及管理服務(wù)合同
- 2025年度星級(jí)酒店廚師團(tuán)隊(duì)勞動(dòng)合同范本3篇
- 2025年度智能家居系統(tǒng)集成個(gè)人房屋裝修合同范本
- 2025年度個(gè)人版權(quán)代理傭金合同3篇
- 開展課外讀物負(fù)面清單管理的具體實(shí)施舉措方案
- 2025年云南中煙工業(yè)限責(zé)任公司招聘420人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025-2030年中國洗衣液市場(chǎng)未來發(fā)展趨勢(shì)及前景調(diào)研分析報(bào)告
- 2024解析:第三章物態(tài)變化-基礎(chǔ)練(解析版)
- 北京市房屋租賃合同自行成交版北京市房屋租賃合同自行成交版
- 《AM聚丙烯酰胺》課件
- 系統(tǒng)動(dòng)力學(xué)課件與案例分析
- 《智能網(wǎng)聯(lián)汽車智能傳感器測(cè)試與裝調(diào)》電子教案
- 客戶分級(jí)管理(標(biāo)準(zhǔn)版)課件
- GB/T 32399-2024信息技術(shù)云計(jì)算參考架構(gòu)
- 人教版數(shù)學(xué)七年級(jí)下冊(cè)數(shù)據(jù)的收集整理與描述小結(jié)
評(píng)論
0/150
提交評(píng)論