網站設計與實現(xiàn)_第1頁
網站設計與實現(xiàn)_第2頁
網站設計與實現(xiàn)_第3頁
網站設計與實現(xiàn)_第4頁
網站設計與實現(xiàn)_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

網站設計與實現(xiàn)XX網站設計與實現(xiàn)摘要網絡科學技術飛速發(fā)展,科技產品層出不窮,對于企業(yè)或公司,宣傳自己的理念及推廣所開發(fā)的產品是至關重要的。如果人們想要在更短的時間內,了解到更多有關科技產品的信息,一種比較便捷的方式便是經過網絡來訪問。xx網站設計,它將需求、產品銷售與客戶服務高度緊密的結合在一起,大大提高了效率,方便客戶了解及訂購合適的軟件來提高工作效率,使得客戶與企業(yè)能夠輕松交互。網站以jsp作為前臺的主要展示工具,使用MVC設計模式,按照工廠模式解耦,設計程序的底層使用Hibernate持久層框架。Spring容器管理對象,Struts2結合jsp做前臺展示,實現(xiàn)了產品發(fā)布與展示,新聞發(fā)布,企業(yè)精神理念展示,留言意見反饋,用戶實時咨詢,后臺管理等功能。關鍵詞:系統(tǒng);電子商務;游戲開發(fā);軟件開發(fā)AbstractNetworkscienceandtechnologyrapiddevelopment,scienceandtechnologyproductsemergeinendlessly,forenterpriseorcompany,promotetheirownideasanddevelopmentofproductsisvital.Ifpeoplewanttobeinashorterperiodoftime,toknowmoreaboutinformationtechnologyproducts,isamoreconvenientwaytoaccessthroughthenetwork.Jinrunwebsitedesign,itwilldemandproductsalesandcustomerservicelevelcloselyunifiesintogether,greatlyimprovingtheefficiency,convenientcustomertounderstandandordertherightsoftwaretoimproveworkefficiency,makecustomersinteractwiththecompaniescaneasily.SitewithJSPasthefrontdeskofthemaindisplaytool,usingtheMVCdesignpattern,accordingtothethreelayersofdecouplingrelationship.TheunderlyinguseHibernatepersistencelayerframework,theSpringcontainermanagementobject,struts2combinedwithJSPfront-enddisplay.Hasrealizedtheproductdistributionanddisplay,pressrelease,theconceptofenterprisespirit,themessagefeedback,usersreal-timeconsultation,backgroundmanagementfunctions.Keywords:System;Electroniccommerce;Thegamedevelopment.Software development目錄TOC\o"1-3"\h\u218961引言 1260361.1研究背景 1226431.2研究意義 2191672網站系統(tǒng)相關技術及工具介紹 3139042.1服務器Tomcat7.0簡介

39752.2JAVA語言 392322.3MySQL 4165132.4Hibernate 4279732.5Spring框架 5132172.6MVC開發(fā)模式介紹 5168373需求分析及總體設計介紹 7240973.1需求分析 7136693.2項目架構 8267553.3系統(tǒng)工作原理 9109033.4模型設計 10326443.4.1控制層設計 10263523.4.2業(yè)務層設計 1158953.4.3工具類設計 16186533.4.4持久層設計 18198284網站的前臺設計與實現(xiàn) 2041214.1首頁設計 20150714.2產品展示 21303604.3新聞中心 2148004.4留言反饋界面展示 2215384.5其它界面展示 23296915網站的后臺設計與實現(xiàn) 25138265.1管理員登錄 25252215.2后臺主頁 254875.3新聞管理模塊 26324985.4產品管理模塊 27226345.5網站信息管理模塊 28296125.6用戶留言管理模塊 2878345.7其它模塊 2932356系統(tǒng)測試 3018546.1測試要求 30219406.2測試用例設計 30189916.3測試結論 30156447結論 3125450謝辭 3225265參考文獻 33XX網站設計與實現(xiàn)1引言1.1研究背景當前,網絡的發(fā)展趨勢已經商業(yè)化和全民普及趨勢。世界上大部分的公司企業(yè)都是以營利為首要目的。在宣傳推廣上,就顯得尤為重要。使用有效的廣告能夠為我們帶來高效益,比如在企業(yè)宣傳,招聘員工信息發(fā)布,網上銷售等方面,網絡給我們帶來了許多方便?,F(xiàn)在的網絡儼然已經成為了企業(yè)競爭的重要戰(zhàn)略手段。網站的優(yōu)勢源于能夠為企業(yè)提供一個舞臺來展示自己、另一個好處體現(xiàn)在能為消費者更加便捷的提供一個了解企業(yè)的途徑。公司或企業(yè)能夠經過網絡平臺,實時的提供在線客服以供咨詢。利用網絡推廣和宣傳企業(yè)產品、實時的發(fā)布一些要聞,顧客的需求建議也能夠經過留言信息及時的反饋給企業(yè)網站的工作人員。網絡的普及,使得計算機走進了千家萬戶,社會各層人士獲得了平等接觸實時信息的機會。利用這股發(fā)展趨勢,各大企業(yè)在管理和銷售上都能使用到軟件領域的工具來進行便捷銷售,便捷辦公,解放一定的勞動力。利用網站推廣產品,推進行業(yè)發(fā)展,促進產品銷售是一個很好的方案,新的促銷形式,與傳統(tǒng)相比有許多優(yōu)點:它降低產品成本;利用網絡作為交互平臺;改變傳統(tǒng)的人與人直接碰面交談的方式,能夠降低交互交談時受空間和時間的限制;信息的傳遞及發(fā)布更新更加迅速靈活,新的技術產品信息上傳后,能夠立即得到推廣和發(fā)現(xiàn),客戶能夠立即看到,對于滿意的產品,能夠直接與客服人員交談,從而大大提高了效率。網站的主要功能是利用網站作為公司企業(yè)產品的展示平臺,將最新產品的一些基本信息以及相關新聞、公司當前概況等信息以網站的形式發(fā)布到網絡上,以供人們觀看與借鑒。本次的畢業(yè)設計課題是基于JSP設計的企業(yè)網站系統(tǒng),它的產生背景源于武夷山市企業(yè)信息化建設。此設計更具實際研究意義,目的是綜合所學知識和利用身邊的網絡資源,鍛煉動手實踐能力,有利于提高綜合學習能力。順利完成設計課題的前提條件還需要很多課外知識的補充,如MVC開發(fā)模式,當前流行的J2EE框架,對XML等配置文件的書寫有一定的了解等等。1.2研究意義信息化技術飛速發(fā)展,科學技術一日千里,這推快了人們的生活節(jié)奏。時間變得更加寶貴。任何產品需要很好的被使用,其知名度就至關重要。人們生活中更多接觸的便是電視、電腦、手機這些科技產品。那么對于軟件領域研發(fā)出來的科技產品,企業(yè)應該如何對其推廣宣傳和銷售。源于這一思考,設想如果各大企業(yè)公司能紛紛建立起屬于自己的企業(yè)網站,將最新的產品和新聞實時的發(fā)布更新,那么去推廣一個網站相對來講更加的省時省力,這是提高效率的有效途徑。企業(yè)建立網站,這樣能夠很好的對外展示企業(yè)文化,是企業(yè)實力的一種體現(xiàn)方式。今天,各行各業(yè)的競爭日趨激烈,每個企業(yè)所面臨的主要任務是提高工作效率和工作質量。企業(yè)網站的建立能夠大量降低人力資源方面的成本付出,突破了時間和空間的限制,客戶對產品的詳細了解能夠在任何時間和地點進行,能夠即時的進行。有了展銷產品的網站平臺,客戶就不需要到實地去查詢產品詳情,能夠借助網絡平臺聯(lián)系銷售員,經過遠程體驗,大大便捷了交易所帶來的時間問題。鑒于互聯(lián)網的諸多優(yōu)勢以及對國內外軟件產品的銷售現(xiàn)狀的研究分析,我此次的設計是開發(fā)一個集成了發(fā)布產品、發(fā)布新聞、服務咨詢等功能于一體的企業(yè)網站,以微小的力量推動中國互聯(lián)網的發(fā)展。2網站系統(tǒng)相關技術及工具介紹2.1服務器Tomcat7.0簡介

Tomcat由開源社區(qū)研究開發(fā),對編程興趣人員能夠自由對Tomcat服務器進行學習和研究。因為它的免費和開源的這些特性。Tomcat得到了極大的推廣,而且經過開源社區(qū)的貢獻,它的性能也更加強大,趨于完善。

Tomcat是純粹的由java代碼編寫。它以小型、輕量級Web服務器的特點被廣泛的推廣運用并受人喜愛。在個人的電腦上安裝上服務器軟件,個人的PC電腦自然就成為了一個初具模型服務器,在中小型系統(tǒng)和并發(fā)訪問量不多的情況下能夠被普遍地使用。在配置好Tomcat服務器的電腦上,這樣Tomcat就能夠對HTML頁面等用戶發(fā)出的訪問請求進行響應[1]。

我們將web應用程序部署到Tomcat服務器中,就能夠實現(xiàn)在本地進行web應用程序的調試運行。2.2JAVA語言Java以其面向對象的優(yōu)勢和安卓市場被廣大人群深知。由于Java被很流行的推出,同時擁有世界上最大的開源社區(qū)正在迅速發(fā)展,對c++語言已經形成了強大的沖擊。Java能夠解決一些復雜的邏輯問題,將問題轉化為面向對象的思想去解決。Java語言的由杰姆斯高斯林和她的同事共同開發(fā),工程正式啟動于1995年。后期更名為Java,而且重新設計開發(fā)的互聯(lián)網應用。由Java編寫出的源代碼,經虛擬機的類加載器編譯成字節(jié)碼文件后,能夠運行在不同的平臺上。這樣就脫離了java的運行環(huán)境,只需要編譯過一次,就能夠到處運行[2]。Java有一個用戶友好,貼近現(xiàn)實生活的語法。這樣的語言具備著獨特的優(yōu)勢,擁有面向對象的概念,穩(wěn)定性,和平臺獨立性,安全性,穩(wěn)定性和支持多線程,動態(tài)等優(yōu)良特性。因為Java多的線程特性,處理器在不同的線程間快速切換。相比其它語言,如C++沒有內置的多線程機制,因此C++的多線程就必須調用操作系統(tǒng)的多線程功能來進行多線程程序的設計。Java在軟件的編程語言設計中,不單能夠應用于開發(fā)大型的應用程序,而且在Internet的應用開發(fā)方面也較為突出。Java不但是一門現(xiàn)在大家大量使用的編程語言,就現(xiàn)在所知道的IT行業(yè)很多最新的技術都涉及了java語言,java早已經被大家公認為當今世上最重要的語言之一[3]。2.3MySQL就當前的數(shù)據(jù)分類來看,MySQL的規(guī)模能夠將其劃分到中型數(shù)據(jù)庫,它是由瑞典研發(fā)人員所研發(fā),當前已經屬于Oracle公司。MySQL是最流行的關系數(shù)據(jù)庫管理系統(tǒng),MySQL在諸多的Web應用程序中是最好的關系數(shù)據(jù)庫管理系統(tǒng)[4]。MySQL的特點就是高效靈活,它的工作原理是將數(shù)據(jù)保存一張張的表中,數(shù)據(jù)整體存放合理,結構優(yōu)良。MySQL使用標準的結構化查詢語言、其軟件體積小、反應速度快、成本低、開源,由于這些優(yōu)勢,特別是小型和中型網站的應用開發(fā)一般是以MySQL為首選。MySQL的底層應用語言以C和C++為主,使用了多種編譯器對其進行測試和不斷改進,在移植性方面,mysql的表現(xiàn)較為突出。多種操作系統(tǒng)對mysql都支持,像通俗常見的就有:Linux、MacOS、Windows等操作系統(tǒng)。它還為為多種編程語言提供了API的支持。例如Java、C++、C和Tcl等,MySQL與這邊編程都能完美融合。另外MySQL對多線程處理方面也有一些優(yōu)勢,這樣就能使得服務器的CPU資源能夠被充分的利用起來。因為MySQL提供的標準結構化查詢語言、提供ODBC和JDBC等連接數(shù)據(jù)庫的方法,使其更加便于管理、檢查,在優(yōu)化數(shù)據(jù)庫操作方面也更加便捷[5]。2.4HibernateHibernate的優(yōu)點:對JDBC的封裝,簡化了許多重復的代碼。對DAO層編碼工作進行了簡化,使開發(fā)能夠集中精力關心業(yè)務邏輯。移植性好,它支持多種數(shù)據(jù)庫,這樣更換數(shù)據(jù)庫時代碼的改變量就比較少。該框架沒有實現(xiàn)任何接口,沒有侵入性。是一個輕量級框架。Hibernate延遲加載:延遲加載的特點是當一個對象或對象的屬性查詢時,該對象或屬性暫時不存在內存中,只有當程序真正使用到數(shù)據(jù)時,該數(shù)據(jù)才被加載到內存中[6]。優(yōu)化Hibernate:1、在一對多的關聯(lián)關系中,應該從多的一方維護。2、避免使用一對一,盡量使用多對一關聯(lián)關系。3、配置對象緩存,減少使用集合緩存。4、減少表字段,表關聯(lián)不要怕多,二級緩存撐腰。Hibernate因為其簡單的學習成本,功能完備而且運行高效,受到開發(fā)人員的喜愛。使用Hibernate自帶的查詢語言HQL,能夠使數(shù)據(jù)庫操作方面更加得心應手,解決很多開發(fā)上常見的對數(shù)據(jù)庫操作的一系列繁瑣問題,使程序員能夠專注于解決業(yè)務邏輯的問題[7]。2.5Spring框架Spring是一個輕量級容器,默認的許多服務是不自動打開的,需要手動配置來將其打開。學習Spring框架的兩個關鍵:IOC和AOP。內部核心是一個Bean工廠(BeanFactory),它提供和實現(xiàn)控制反轉和依賴注入。另外Spring容器用于申明式的事務,安全等服務應用[8]。Spring能夠與當前流行框架的集成,應用范圍廣泛,能夠是B/S或者C/S[9]。本網站系統(tǒng)采用注釋的方式來管理事務。從三層結構來看,Web層的Struts2框架和Dao層的Hibernate框架都與其進行整合。Spring的強大管理及代理等方式,使任何Java應用都能夠從Spring中受益[10]。其結構如圖2-1所示:圖2-1Spring結構2.6MVC開發(fā)模式介紹MVC是企業(yè)級應用的開發(fā)中常見的設計模式。它把項目架構進行分層設計,分為表現(xiàn)層、業(yè)務邏輯層、數(shù)據(jù)訪問層。MVC即代表模型視圖控制器。模型(Model)即為一些常見的實體類,(如Person類實體),實體類主要用于封裝數(shù)據(jù)。視圖(View),一般用作數(shù)據(jù)的顯示。在J2EE中視圖由jsp負責顯示??刂破?Controller),用于協(xié)調M和V的關系,也用作解決業(yè)務邏輯,在Struts2中就是Action類[11]。1、模型模型一般表示數(shù)據(jù)的封裝。在三層架構中,模型擁有較多的處理任務。模型能為視圖提供數(shù)據(jù)支持。因為模型的代碼能夠被多個視圖重復使用,這樣能夠減少代碼的重復性書寫[12]。2、視圖視圖提供給用戶使用,而且能夠與之交互的界面。在Web應用初期,界面主要是由HTML做出簡單的顯示,然而,在現(xiàn)在的網絡技術發(fā)展下,一些新技術的出現(xiàn),如XHTML,XML/XSL,WML這些標記語言和Web服務。MVC應用程序能夠處理許多不同的返回結果視圖[13]。3、控制器當用戶請求數(shù)據(jù),控制器做出響應處理,最終將數(shù)據(jù)進行封裝,再交給jsp做顯示。因此當你點擊在JSP互動環(huán)節(jié)時,控制器接收組件的要求和決策模型的呼叫建立負責處理傳入的請求,然后封裝的數(shù)據(jù),確定該視圖顯示界面[14]。3需求分析及總體設計介紹3.1需求分析《xx》模型是典型網上產品展銷實踐中較為普遍的商務企業(yè)B/S模式,其主要功能模塊包括產品發(fā)布、新聞管理、留言反饋、業(yè)務咨詢等基本功能。另外,此網站也將實現(xiàn)企業(yè)網站系統(tǒng)的后臺管理,其中包括新增產品的添加與修改信息、新聞的相關處理功能等。本系統(tǒng)的Web層框架,是基于當前流行的SSH,前臺采用JSP技術作為顯示和交互,在網站的設計與開發(fā)過程中,利用軟件設計模式,做到盡量削減體系功能模塊間的耦合。本網站系統(tǒng)前后臺的功能關系,如圖3-1所示:圖3-1系統(tǒng)功能分析前臺(游客瀏覽)部分:企業(yè)文化展示:顯示企業(yè)精神理念,公司福利待遇等信息;經營業(yè)務展示:顯示企業(yè)經營范圍內業(yè)務項目;新聞顯示:按最新更新展示新聞條目及詳細;產品顯示:經過預覽圖片或產看詳細的方式查看產品的詳細信息;留言反饋:經過表單的填寫提交對此網站以及產品的建議或意見。后臺(管理員管理)部分:管理員:管理員登錄;新聞管理:分頁查看所有新聞,對新聞進行編輯、批量刪除、添加新聞操作;產品管理:按更新時間順序添加新產品、查看產品詳細信息、編輯產品、刪除產品信息;網站基本信息管理:更新網站基本信息,企業(yè)理念精神及公司福利,地址和聯(lián)系信息;3.2項目架構 圖3-2項目架構如圖3-2所示,左邊是項目工程的三層架構。Dao層及其接口實現(xiàn)類,這兩個包中的類協(xié)調負責對數(shù)據(jù)庫中的數(shù)據(jù)進行存取操作。而domain包下存放的是實體類,主要是為了對數(shù)據(jù)進行封裝和攜帶數(shù)據(jù)。Service及其實現(xiàn)類在三層架構中主要是針對業(yè)務邏輯進行編寫的類。Beans.xml、Hibernate.cfg.xml與struts.xml這三個配置文件則是對應SSH框架。而perties則是此web應用程序中用到的一個自定義配置文件。右邊的是根目錄結構,其下是JSP頁面的存放和樣式控制文件等,例如CSS、js文件等。本次的項目設計遵循MVC設計模式,利用Spring容器巧妙的創(chuàng)立和管理類,遵循工廠設計模式對類進行解耦,按照三層架構進行設計和實現(xiàn),層與層之間類的功能明確,整體結構清晰,便于調試和管理。3.3系統(tǒng)工作原理基于web的網站系統(tǒng)是用戶經過瀏覽器發(fā)送請求,根據(jù)HTTP協(xié)議,Tomcat服務器接收到用請求后,將根據(jù)配置文件為其分配是由哪種Servlet來處理。如果是訪問以.do結尾的URL地址,就交由Struts2來處理,Struts2將根據(jù)配置文件為其分配相應的Action來處理請求。Action類中對應的方法將調用相應的業(yè)務類方法去完成請求,由業(yè)務類調用dao方法來完成對數(shù)據(jù)庫的存取和訪問。如圖3-3所示:Spring將三層中所有的類的創(chuàng)立管理起來,包括控制層,業(yè)務層的實現(xiàn)類和DAO層中的類。圖3-3工作原理3.4模型設計3.4.1控制層設計在SSH框架組合下,控制層的代碼由struts2的Action來充當,根據(jù)請求信息調用指定action類中的方法來進行請求處理,以及返回對應的結果視圖,由jsp將數(shù)據(jù)作為展示給用戶。命名空間以"/sys"標記的為后臺的包,以"/cli"標記的對應前臺,一般由網絡上的游客隨機訪問。在兩大類對應的包名下有對應前臺和后臺模塊的諸多Action類,代碼如下:Struts2中的前臺配置:<packagename="cli"namespace="/cli"extends="default"> <!--客戶端首頁--> <actionname="indexAction_*"class="indexAction"method="{1}"> <resultname="index">/WEB-INF/client/index.jsp</result> </action> <!--業(yè)務中心--><actionname="businessAction_*"class="businessAction"method="{1}"> <resultname="business">/WEB-INF/client/business.jsp</result> </action> <!--產品展示--> <actionname="productAction_*"class="productAction"method="{1}"> <resultname="product">/WEB-INF/client/product.jsp</result> <resultname="promore">/WEB-INF/client/promore.jsp</result> </action> <!--新聞中心--> <actionname="newsAction_*"class="newsAction"method="{1}"> <resultname="news">/WEB-INF/client/news.jsp</result> <resultname="fullText">/WEB-INF/client/fullText.jsp</result> </action></package>3.4.2業(yè)務層設計業(yè)務層由Struts2的action類和一些實體類配合使用,主要是針對業(yè)務邏輯與數(shù)據(jù)封裝,數(shù)據(jù)攜帶這些請求進行處理,然后返回結果視圖,供頁面做顯示。業(yè)務層的處理內容包含:企業(yè)軟件產品的增刪改查功能、新聞模塊的顯示功能、留言與意見反饋功能、客服在線咨詢等。軟件產品業(yè)務設計,靈感來自于一些企業(yè)的門戶網站,其思路是:產品羅列,能夠對產品的詳細信息查看,在產品的查看過程中能夠即時的聯(lián)系客服人員訂購咨詢或了解詳情。下面是產品業(yè)務類實現(xiàn)的部分代碼://后臺--顯示產品列表 publicStringlist(){ QueryBuilderqueryBuilder=newQueryBuilder(Product.class); queryBuilder.addOrderProperty("updateTime",true); PageViewpageView=productService.getPageView(queryBuilder,getPageNum(request)); request.setAttribute("Products",pageView); return"list"; }//后臺--添加產品 publicStringadd(){ Stringsuffix=null; try{ suffix=product.getPicFileName().substring(product.getPicFileName().lastIndexOf(".")); if(!".jpg".equalsIgnoreCase(suffix)){ this.addFieldError("msg","格式錯誤"); return"addUI"; } }catch(Exceptione){ this.addFieldError("msg","請選擇產品圖片"); return"addUI"; } //文件上傳 if(product.getPicFileName()!=null){ StringtmpFileName=product.getPicFileName().substring(product.getPicFileName().lastIndexOf("/")+1); StringUUIDName=UUIDUitls.getUUID()+suffix; StringsavedPath=ServletActionContext.getServletContext().getRealPath(uploads); FilesavedFile=newFile(savedPath,UUIDName); if(product.getPic()==null){ this.addFieldError("warn","請選擇圖片"); return"addUI"; } product.getPic().renameTo(savedFile); //添加記錄到數(shù)據(jù)庫 product.setNewName(UUIDName); product.setOglName(tmpFileName); product.setUpdateTime(newDate()); productBiz.save(pro); request.setAttribute("msg","提示:上傳成功"); } return"addUI"; }留言反饋處理:首先對想要留言的用戶進行姓名規(guī)則校驗、電話號碼校驗、郵箱規(guī)則校驗,校驗不經過的(包含空)將不提交頁面,當非空等檢測經過之后,就提交表單,這樣就能夠從數(shù)據(jù)庫中查看到經過檢測的用戶留言,能夠避免大量的垃圾留言。新聞展示業(yè)務:包括新聞條目,新聞的發(fā)布時間按照更新的時間排序,經過分頁對新聞進行顯示。新聞模塊的功能實現(xiàn),是從數(shù)據(jù)庫按頁查出當前顯示頁的新聞頁集合信息,用list集合封裝,然后借助ognl對其進行迭代操作并顯示。而在前臺頁面的分頁功能實現(xiàn),則是由Action去獲取每頁的大小數(shù)和所查看數(shù)據(jù)的當前頁碼,動態(tài)的拼湊hql語句,每次去數(shù)據(jù)庫詢出指定頁碼的記錄條數(shù),進行封裝到page實體,再將多個page實體封裝成list集合,完成查詢后將返回結果給頁面進行迭代顯示。下面為新聞模塊的部分代碼://新聞列表 publicStringlistNews(){ QueryBuilderqueryBuilder=newQueryBuilder(News.class); queryBuilder.addOrderProperty("record",false); PageViewpageView=newsService.getPageView(queryBuilder,getPageNum(request)); request.setAttribute("news",pageView); return"listNews"; }//批量刪除新聞 publicStringdel(){ //獲取ids String[]sids=request.getParameterValues("News_ids"); Integerids[]=DataType.converterStringArray2IntegerArray(sids); if(ids!=null){ //刪除 newsService.deleteSysProductsByIds(ids); return"listAction"; } returnnull; }//發(fā)布新聞 publicStringaddNews(){ //非空判斷title if(StringUtils.isBlank(news.getTitle())){ this.addFieldError("msg","請?zhí)顚懳恼聵祟}"); return"addNewsUI"; } //如果是事紀年份不能為空 Stringsuffix=null; if(News.EVENTS_VALUE.equals(news.getRemark())){ if(StringUtils.isBlank(news.getYear())){ this.addFieldError("msg","請?zhí)顚懯录o年份"); return"addNewsUI"; } }else{ //如果是新聞,圖片不能為空 if(StringUtils.isBlank(news.getPicFileName())){ //新聞有圖片 this.addFieldError("msg","請選擇新聞圖片"); return"addNewsUI"; } //圖片名不為空的時候驗后綴名 try{ suffix=news.getPicFileName().substring(news.getPicFileName().lastIndexOf(".")); if(!".jpg".equalsIgnoreCase(suffix)){ this.addFieldError("msg","格式錯誤"); return"addNewsUI"; } }catch(Exceptione){ this.addFieldError("msg","請選擇圖片"); return"addNewsUI"; } } //新聞發(fā)布者--驗空 if(StringUtils.isBlank(news.getName())){ this.addFieldError("msg","請?zhí)顚懩纳矸?); return"addNewsUI"; } //新聞內容--驗空 if(StringUtils.isBlank(news.getContent())){ this.addFieldError("msg","請?zhí)顚懳恼聝热?); return"addNewsUI"; } //1根據(jù)remark判斷新聞還是事紀 if(News.EVENTS_VALUE.equals(news.getRemark())){ //設置年份"-" Stringtemp=news.getYear().substring(0,4); news.setYear(temp+"-"); } //2設置新聞發(fā)布時間,截取 news.setPostTime(newDate()); //3.新聞摘要截取 if(news.getContent().length()>100){ news.setDigest(news.getContent().substring(0,99)); } //4.設置新聞圖片上傳信息圖片上傳 if(StringUtils.isNotBlank(news.getPicFileName())){ //System.out.println(picForm.getPicFileName()); StringtmpFileName=news.getPicFileName().substring(news.getPicFileName().lastIndexOf("/")+1); StringUUIDName=UUIDUitls.getUUID()+suffix; StringsavedPath=ServletActionContext.getServletContext().getRealPath(uploads); System.out.println("--新聞添加--"+savedPath); FilesavedFile=newFile(savedPath,UUIDName); //新聞必須要有圖、事紀圖片可有可無以下判斷不需要 if(news.getPic()==null){ this.addFieldError("warn","請選擇圖片"); return"addNewsUI"; } news.getPic().renameTo(savedFile); //添加記錄到數(shù)據(jù)庫 news.setNewName(UUIDName); news.setOglName(tmpFileName); } //4.其它信息保存 newsService.save(news); request.setAttribute("msg","提示:文章發(fā)布成功"); return"addNewsUI"; }3.4.3工具類設計當設計的程序在調用過程中將重復性的調用一些方法或需要便捷的提供調用時,這時候就需要將其抽取出來,封裝成單獨的工具。這樣就能夠與業(yè)務無關而能夠在任意的層被單獨使用。在此次設計中的工具類方法有:CheckPrivalegeInterceptor.java類用于檢測后臺操作時,管理員是否是登錄狀態(tài)的檢測。DataType.java用于對web前臺所獲取到的數(shù)據(jù)參數(shù)進行類型轉換。MD5keyBean.java則是用于對字符串進行加密使用,一般是對其成數(shù)據(jù)指紋摘要,是一串32位的明文密碼。而SessionUtils.java是針對登錄用戶能夠設置服務器session的存活時間或者退出系統(tǒng)時將user從session中移除出去。UUIDUtil.java用于生成全球唯一id號。代碼示例:DataType.javapublicclassDataType{ publicstaticInteger[]converterStringArray2IntegerArray(String[]sids){ if(sids!=null&&sids.length>0){ Integer[]ids=newInteger[sids.length]; for(inti=0;i<ids.length;i++){ if(StringUtils.isNotBlank(sids[i])){ ids[i]=Integer.parseInt(sids[i]); } } returnids; } returnnull; } publicstaticIntegerStr2Integer(Stringid){ if(StringUtils.isNotBlank(id)){ returnInteger.parseInt(id); } returnnull; } publicstaticStringInteger2Str(Integerid){ if(id!=null){ returnid.toString(); } returnnull; }}SessionUtils.javapublicclassSessionUtils{ publicstaticvoidsetSysUserToSession(HttpServletRequestrequest,Useruser){HttpSessionsession=request.getSession(); if(user==null){ return; } session.setAttribute("user",user); } publicstaticUsergetSysUserFormSession(HttpServletRequestrequest){ HttpSessionsession=request.getSession(false); if(session==null){ returnnull; } Useruser=(User)session.getAttribute("user"); returnuser; }}3.4.4持久層設計為了解決并發(fā)訪問帶來的問題,此次設計選用以c3p0數(shù)據(jù)源為其設計數(shù)據(jù)庫連接池。由每一個實體類對應一張表,利用Hibernate的持久化,懶加載,緩存等特性對數(shù)據(jù)進行保存、更新和頻繁的查找操作。從Struts2的Action的創(chuàng)立、Service類和Dao對象的創(chuàng)立,使用了當前流行的工廠模式,三層架構中每一個層的類都對其進行抽取接口,而且使用注解加配置文件相結合,由Spring容器代為管理對象的生命周期,靈活搭配,整個項目工程看起來結構清晰。事務的控制,同樣是采用注解的方式,這樣的設計結構一目了然,便于后期系統(tǒng)的維護和升級[15]。下面是代碼的部分示例:Hibernate配置文件中的映射:<hibernate-configuration><session-factory> <mappingresource="com/jinrun/domain/User.hbm.xml"/> <mappingresource="com/jinrun/domain/Picture.hbm.xml"/> <mappingresource="com/jinrun/domain/Message.hbm.xml"/> <mappingresource="com/jinrun/domain/SysInfo.hbm.xml"/> <mappingresource="com/jinrun/domain/Product.hbm.xml"/> <mappingresource="com/jinrun/domain/Business.hbm.xml"/> <mappingresource="com/jinrun/domain/News.hbm.xml"/> <mappingresource="com/jinrun/domain/CompanyInfo.hbm.xml"/> <mappingresource="com/jinrun/domain/Employee.hbm.xml"/></session-factory></hibernate-configuration>Spring控制反轉和事務管理注解: /**獲取父類的泛型類型***/ privateClassentityClass=GenericClass.getGenericClass(this.getClass()); @Resource(name="sessionFactory") publicvoidsetSessionFactoryDI(SessionFactorysessionFactory){ super.setSessionFactory(sessionFactory); } publicvoidsave(Tt){ this.getHibernateTemplate().save(t); } publicvoidupdate(Tentity){ this.getHibernateTemplate().update(entity); }}事務注解:@Service("newsService")@TransactionalpublicclassNewsServiceImplimplementsNewsService{ //事務注解 @Transactional(isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED,readOnly=false) publicvoidsave(Newsnews){ NewsdownNews=findDownIdIsNullById();}4網站的前臺設計與實現(xiàn)在這個章節(jié)將會介紹這次網站設計的界面部分?!秞x》的前臺是供游客瀏覽新聞、接觸這個門戶網站企業(yè)的基本信息,查看最新設計產品,意見反饋及聯(lián)系該網站等一些基本所需用途。一個網站的前臺的設計首先應該是精美,令人舒適,其次突出企業(yè)的宣傳主題和精神理念。因此,前臺的設計應當是簡明扼要、層次分明、條理清晰。下面將介紹“xx”的前端部分的實現(xiàn)。4.1首頁設計首頁為6個主要部分,導航欄平鋪的方式,簡明清晰的列出。如圖4-1所示:圖4-1網站首頁展示圖4-1展示了網站的首頁信息,導航欄的左側為一個企業(yè)的logo標志。右邊分別對應六項網站常見的菜單。其下方為可更新,可自動切換的宣傳圖片。首頁能夠展示出公司最新研發(fā)的軟件產品宣傳,包括宣傳圖片和產品信息。4.2產品展示圖4-2,產品的展示,能夠是以圖片預覽的方式連續(xù)翻看產品信息,或可點擊查看詳細:圖4-2產品展示4.3新聞中心圖4-3,按照后臺的發(fā)布時間順序將最新更新的新聞顯示在最前,并顯示時間和新聞標題:圖4-3新聞中心4.4留言反饋界面展示圖4-4聯(lián)系我們界面:圖4-4留言反饋界面表單校驗注冊頁面校驗:您的姓名:不能為空;電子郵箱:不能為空;按照郵箱的規(guī)則校驗進行約束;電話:不能為空;數(shù)字約束;長度控制在7-15位;留言:不能為空;留言的字符長度不能小于0;表單校驗中,對于以上校驗未經過的,表單不予提交。這里的部分校驗是使用的是validate動態(tài)驗證來初步完成校驗,用戶體驗效果較好。4.5其它界面展示圖4-5企業(yè)年度優(yōu)秀員工界面:圖4-5企業(yè)年度優(yōu)秀員工界面圖4-6企業(yè)精神文化展示界面:圖4-6企業(yè)精神文化展示界面5網站的后臺設計與實現(xiàn)網站的后臺設計是為管理員方便管理網站而設計的,其中包括新聞中心、產品信息管理、網站信息維護、用戶留言管理。5.1管理員登錄后臺管理員登錄頁面,登錄成功后到達后臺主頁。圖5-1后臺登錄界面5.2后臺主頁管理員登錄成功后,到達主頁。主頁是框架頁,由上、下構成,下部框架分為左右。圖5-2后臺主頁界面上部顯示標題和部分簡單菜單,分別為:登錄人員、當前系統(tǒng)時間、修改口令及退出系統(tǒng);左部顯示供管理員管理網站的菜單,其中能夠對網站相應模塊執(zhí)行增刪改操作。右部默認顯示管理員的登錄信息和一些溫馨提示,當點擊左部鏈接后,內容都將在右部做出顯示。5.3新聞管理模塊在新聞模塊里的管理編輯頁面:圖5-3添加新聞界面圖5-4新聞編輯界面5.4產品管理模塊在產品展示模塊里的產品頁面:新聞列表頁面:圖5-5添加新聞界面新聞編輯頁面:圖5-6產品編輯界面在產品的管理中,能夠執(zhí)行批量刪除等操作。在編輯產品的頁面中,將會對產品的名稱及產品的描述信息做出非空約束等。編輯或添加成功時,系統(tǒng)會有消息提示。5.5網站信息管理模塊圖5-7網站信息修改界面5.6用戶留言管理模塊圖5-8用戶留言查看界面在用戶留言管理模塊中,能夠執(zhí)行批量刪除、查看留言詳細、查看留言的網絡方向來源等操作。5.7其它模塊網站管理員頁面:圖5-9網站管理員界面修改管理員口令:圖5-10修改管理員口令界面公司修改頁面:圖5-11企業(yè)信息管理界面6系統(tǒng)測試6.1測試要求一個模塊的功能的改動是否會對另一個模塊產生不利的影響;下降的子功能緊密程度,達到預期的功能要求;測試全局數(shù)據(jù)結構是否存在問題;6.2測試用例設計以登錄系統(tǒng)測試作為示例,設計測試用例如表6-1所示:表6-1登入系統(tǒng)測試用例功能特性用戶登錄驗證測試目的對輸入信息進行健壯性判斷測試數(shù)據(jù)用戶名稱:wgu密碼:123序號描述輸入信息期望實際結果結論1輸入用戶姓名,按“登陸”按鈕。用戶姓名:wgu,密碼不填彈框提示“用戶名或密碼有誤!”彈框提示“登錄的密碼不能為空!”和預期的一樣2輸入密碼,按“登陸”按鈕。用戶姓名不填,密碼:123顯示警告信息“用戶名或密碼誤!”彈框提示“用戶登錄名稱不能為空!”和預期的一樣3輸入用戶姓名和密碼,按“登陸”按鈕。用戶姓名:1,密碼:1顯示警告信息“用戶名或密碼有誤!”顯示警告“用戶名或密碼錯誤”和預期的一樣4輸入用戶登錄名和口令,點擊“登陸”按鈕。用戶名:wgu,密碼:123正確登入到系統(tǒng)管理員操作界面正確登入到系統(tǒng)管理員操作界面和預期的一樣6.3測試結論一開始寫出的代碼調理較好,則測試容易。測試時,應當有序的系統(tǒng)測試來檢測潛在的故障,并進行定位。同時,問題是最容易在邊界這塊地方發(fā)生,這能夠經過手動或程序的方式檢查完成。自動檢測是最理想的,越多越好,因為機器不犯錯誤,不疲勞,而靠實際幻想容易欺騙自己,逃避測試,就隱藏了錯誤。在測試過后,及時出現(xiàn)了新的問題,也容易排查,因為它應該是出現(xiàn)在新的代碼里。7結論在這次畢業(yè)課題實踐過程當中,從最初課題構思到整站的設計完成,其中主要的功能模塊都已基本完成,包括科技產品的展銷功能,新聞發(fā)布與管理,留言意見接收與反饋,經營業(yè)務展示,網站信息更新與管理,企業(yè)基本信息的管理與展示,在線咨詢等功能。網站整體上的設計給人的覺比較簡單清新舒適,視覺上不易產生疲勞,采用HTML5的頁面效果,令用戶體驗更好。導航中的留言反饋菜單,展示了企業(yè)的地理位置和基本的聯(lián)系信息,便于聯(lián)系或查找時使用。這個模塊在設計時提供了留言的反饋功能,便于接收廣大群眾的不同意見和看法,以便改進產品質量、促進企業(yè)發(fā)展等問題。設計功能基本實現(xiàn),可是在設計上有一些細枝末節(jié)在當初設計的時候還是沒有考慮到位。

溫馨提示

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

評論

0/150

提交評論