亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SSH框架網上商城項目第30戰(zhàn)之項目總結(附源碼下載地址)

 更新時間:2016年06月07日 14:45:32   作者:eson_15  
這篇文章主要介紹了SSH框架網上商城項目第30戰(zhàn)之項目總結,并附源碼下載地址,感興趣的小伙伴們可以參考一下

0. 寫在前面

  友情提示:下載地址在下面哦。
  項目基本完成了,加上這個總結,與這個項目相關的博客也寫了30篇了,積少成多,寫博客的過程是固化思路的一個過程,對自己很有用,同時也能幫助別人。順便說個題外話,在學習的過程中肯定會遇到很多異常出現(xiàn),我們要做的首先是定位這個異常,一般異常的后面都會跟一個或多個Caused by:xxx,這些都是引起異常的原因,一般我們找最下面的一個Caused by,那里往往才是問題的根源。如果自己解決不了,可以去谷歌、百度搜索(搜索的時候別一大堆異常往上一貼,注意搜關鍵的部分?。?,一般我們遇到的問題,99.9%前人都遇到過,基本都能解決,我遇到不能解決的問題基本都是這么干的,自己解決的多了,就有感覺了~最后希望大家在閱讀我的博客時會有所收獲!  
  廢話就不說了,下面總結一下這個網上商城的項目,我不會面面俱到,主要分為幾個模塊來總結,包括 用到了哪些技術等等,具體的細節(jié)我會在文章中附上快速鏈接,大家可以查看具體的某篇文章。
  回憶一下這個項目,總共可以分為這些主要的模塊:

---項目環(huán)境的搭建
---搭建后臺管理系統(tǒng)
---搭建前臺顯示頁面
---購物車相關功能
---在線支付功能
---郵件和短信的發(fā)送功能
---域名的申請和項目的部署
---表單驗證和報表的顯示

  下面針對每個模塊,做一下具體的分析。

1. 項目環(huán)境的搭建

  這是每個工程都少不了的環(huán)節(jié),而且也會出現(xiàn)很多亂七八糟的問題,剛開始學SSH的時候,總是苦于搭建環(huán)境,因為不太熟練,但是熟練了就好了,主要是要“有節(jié)奏的”去搭建,也就是說搭建一個環(huán)境工程得一步步來,一點點的搭,很多人上來就把jar包啪嘰一下全導進去了,然后什么配置文件啊啪嘰一下全寫好或者從其他地方粘貼來,然后一運行,掛了……然后各種去找問題,何苦呢?這樣的話就算搭建10次也不能得心應手。飯要一口口的吃,路要一步一步的走。   
  SSH的環(huán)境搭建,我個人遵循的流程是:

Spring –> Hibernate –> Spring整合Hibernate –> Struts2 –> Spring整合Struts2

  每一步做完寫個測試類測試一下,這很重要,因為一步步往下走的話,出錯了也知道錯在哪一步,去哪找問題,最重要的是,這種流程熟練了,下次再搭環(huán)境的時候就易如反掌了。關于SSH環(huán)境搭建的詳細信息請看下面的文章:
  整合Struts2、Hibernate4.3和Spring4.2
  基本增刪查改、Service和Action的抽取以及使用注解替換xml

2. 搭建后臺管理系統(tǒng)

  后臺管理系統(tǒng)我用的是EasyUI搭建的,說真的,EasyUI我也是一知半解,前端的東西我了解的都不深,但是懂一點,具體用的時候也是各種去查的,也沒系統(tǒng)的學過,所以沒有一個良好的知識體系,但是也不影響去玩。程序猿都喜歡說玩一個技術啥的,聽起來好像挺高大上的,慢慢的我也受到一些影響,也喜歡這么說了,不過我對于前端就真的在玩了……  
  jQuery EasyUI是一組基于jQuery的UI插件集合體,而jQuery EasyUI的目標就是幫助web開發(fā)者更輕松的打造出功能豐富并且美觀的UI界面。開發(fā)者不需要編寫復雜的javascript,也不需要對css樣式有深入的了解,開發(fā)者需要了解的只有一些簡單的html標簽?! ?
  EasyUI的請求都是Ajax請求,不會有新的頁面出來,全都都在tab選項卡中或者彈出一個窗口之類的。后臺管理系統(tǒng)主要分為三部分:商品的類別管理、商品的管理以及銷售管理。銷售管理放在最后再說。

2.1 商品類別的管理

  該部分主要涉及到了EasyUI環(huán)境和后臺框架的搭建、數據庫的級聯(lián)查詢和分頁、DataGrid數據顯示、Struts2整合json以及商品類別的添加、刪除、更新和搜索。這也是遵循了該部分的一個完成的順序?! ?
  DataGrid以表格的形式展示數據,開發(fā)人員不需要具備特定的知識就可以操作它,它有個很好的幫助文檔,比較詳細,在本項目中我也介紹了創(chuàng)建DataGrid的幾種方式,并且也簡單介紹了一下DataGrid的部分屬性,算是入門吧,我也是入門,多多開發(fā)才能掌握這個技術?! ?
  類別的添加、刪除、更新和搜索功能,主要都是利用EasyUI自帶的驗證功能,添加商品類別的時,驗證輸入框的輸入是否正確,是否必填等;刪除時是否先選中的某一行或某幾行;更新的時候每次只能更新一行等,所有這些都是Ajax請求?! ?
  關于這部分內容的詳細信息,我已經歸類了,請參考這些文章:
  使用EasyUI搭建后臺頁面框架
  EasyUI菜單的實現(xiàn)
  數據庫的級聯(lián)查詢和分頁
  基于DataGrid的數據顯示功能
  Struts2和Json的整合  
  DataGrid實現(xiàn)查詢和刪除功能
  DataGrid實現(xiàn)添加和更新功能     

下面是我自己遇到的問題:
  Struts2和Json整合中的懶加載異常問題
  Hibernate4執(zhí)行save()或update()無效  

2.2 商品的管理

  商品的管理也有添加刪除等操作,跟類別管理道理上是一樣的,有個地方就是商品的添加,需要上傳商品的照片,這里涉及到了Struts2實現(xiàn)文件上傳的功能,我們需要在服務器端建一個文件夾專門用來存儲上傳文件的,然后寫一個model來接收文件,關于文件上傳,要專門寫一個工具類,項目中開發(fā)就是這樣的,共性的代碼一定要抽取,哪怕只有一句代碼也要抽??!這是習慣,也是必須要做的。具體細節(jié)參下面列出的這些的文章:
  商品類基本模塊的搭建  
  查詢和刪除商品功能的實現(xiàn)  
  添加和更新商品功能的實現(xiàn)  
  Struts2實現(xiàn)文件上傳功能  

3. 搭建前臺顯示頁面

  當然,前臺的頁面不是我設計的,這一塊內容我總結的是跟前臺顯示相關的一些后臺技術,比如:監(jiān)聽器獲取首頁數據、定時器同步首頁數據、Hibernate二級緩存處理熱門商品的緩存等。
  以前在學習serlvet的時候,首頁顯示數據我是這么干的,用一個frame,右邊顯示數據,那么index.jsp中右邊的部分我跳轉到一個servlet,然后servlet中去數據庫中取出所有商品,放到request域中帶過去新的jsp頁面顯示。這雖然能實現(xiàn),但是很笨。在這里我用了監(jiān)聽器來干這件事,首先自己定義一個監(jiān)聽器,在項目啟動的時候把數據庫中所有商品信息給取出來,放到application域中,然后首頁中直接用EL表達式從application域中去取即可?! ?
  還有個問題,當我在管理系統(tǒng)中添加一個新的商品時,我必須要重啟一下tomcat才能將新的商品加到application域中,因為第一次取出來后就一直在application域中了,就定死了,后面新添加的就不在application域里面,為了解決這個問題,我使用了定時器來同步首頁數據。于是改寫了之前寫好的監(jiān)聽器,在監(jiān)聽器中設置一個定時器,獲取數據庫中商品的數據的代碼放到定時器任務中,第一次開啟立馬執(zhí)行,然后每6個小時執(zhí)行一次(時間可以自己隨便設定),也就是說每6個小時重新獲取一下數據庫中的商品,存到application域中。一般網站也是這么干的,像CSDN的個人博客主頁也是,每天更新一次排名,大概是晚上10點左右吧,具體時間我忘了。那個時候刷新就會看到數據的更新,這樣也減小了服務器的壓力。

  該部分具體的技術細節(jié),參見下面這幾篇文章:
  使用監(jiān)聽器獲取顯示在首頁的數據  
  監(jiān)聽器如何獲取Spring的配置文件 
  線程、定時器定時同步首頁數據 
  Hibernate二級緩存處理首頁的熱門顯示

4. 購物車相關功能

  購物車的部分主要涉及到的技術有:后臺的處理購物車和購物項的邏輯、過濾器判斷登陸、訂單的級聯(lián)入庫以及頁面緩存的問題。
  購物車的話主要是后臺的一些實現(xiàn)邏輯了,購物車里需要有購物項,啥意思呢?我們在天貓上買東西都知道,可以把不同的商品都放到購物車里,然后購物車里有很多商品,每個商品的數量又可以有多個,每個商品及其相關信息就是一個購物項,所以添加購物車的時候,我們首先要完成一個購物項,再將此購物項添加到購物車里。
  當用戶想要結算的時候,我們得首先判斷用戶有沒有登陸,這用到了過濾器技術,專門過濾某一類的url,在過濾器中判斷當前session中有沒有user對象,如果有說明登陸過了,直接放行就行,如果沒有則跳轉到登陸頁面讓用戶登陸,登陸完成后跳轉到用戶原來想去的頁面。也就相當于門衛(wèi)一樣~看大門的~
  剛剛也提到了,訂單信息包含 購物車和購物項,那么我們在訂單入庫的時候,就要考慮到它們的級聯(lián)問題,我們可以通過在兩者的POJO中設置相應的注解屬性即可,但是有個前提,像這種有外鍵關聯(lián)的,在入庫之前都要將對應的POJO中的外鍵部分的字段賦好值,比如訂單要將訂單項加進去,訂單項中的訂單屬性也得賦好值,然后才可以交給Hibernate,Hibernate根據配置好的注解(或者xml文件)將它們一起級聯(lián)入庫。
  頁面緩存的問題指的是,當用戶確認了訂單后,如果點后退,又會回到訂單確認頁面,剛剛的訂單確認頁面又出來了,而且session還在,信息還是剛剛的信息,這明顯不是我們想要的結果。我們需要在前臺和后臺同時進行處理才行。
  該部分具體技術細節(jié),請參見下面的幾篇文章:

  購物車基本功能的實現(xiàn)
  過濾器實現(xiàn)登陸功能的判斷
  訂單信息的級聯(lián)入庫和頁面緩存問題

5. 在線支付功能

  這一部分主要介紹了一些關于易寶支付接口的東西,其實在線支付功能針對不同的第三方都是不一樣的,主要是要理解在線支付功能開發(fā)的一個流程,具體技術細節(jié)得依賴具體的第三方所提供的資料了。但是一般的流程都是:調用第三方的接口 –> 第三方調用銀行接口 –> 完成支付 –> 第三方回跳到我們指定的頁面。
  這部分中,還涉及到了一個重要的技術,就是struts2如何處理多個model請求。一般struts2實現(xiàn)了ModeDriven<model>后就可以在Action中使用該model,但是現(xiàn)在如果有兩個Model咋整呢?在struts2中還有另外一個叫parametersAware接口,只要實現(xiàn)了這個接口,并且定義一個存儲參數的Map,就可以接收request請求中的所有參數,我們可以根據不同的參數來判斷使用哪個model,這種方法可以很好的解決struts2處理多個model請求問題。
  關于該部分的技術細節(jié),請參考下列博文:

  在線支付平臺的介紹
  易寶支付流程的一個demo
  獲取銀行圖標和支付頁面的顯示
  完成在線支付功能的邏輯
  struts2中如何處理多個model請求

6. 郵件和短信的發(fā)送功能

  郵件的發(fā)送和短信的發(fā)送這一部分相對來說比較簡單,都是一些固定的API,會用就行,記不住查查即可,我也記不住。郵件發(fā)送功能要導入mail.jar包,然后根據流程發(fā)送郵件即可,短信功能首先得去申請一下短信發(fā)送功能,申請好了后,第三方就會給我們提供一些API接口,我們只要參考他的就可以開發(fā)短信發(fā)送功能了,跟支付功能有點類似,都是借助于第三方平臺。
  這部分也沒啥技術難點,主要是流程吧,相關的文章如下:

  使用java email給用戶發(fā)郵件
  完成訂單支付成功后的短信發(fā)送功能

7. 域名空間的申請和項目的部署發(fā)布

  這一塊主要介紹了如何申請一個免費的域名空間(免費15天而已啦~不過對于學習來說,enough~),雖然不是全部免費的,但是我們主要是要搞清楚這個流程,自己走一遍也好,并不一定要上傳完整的工程,一個jsp頁面或者html靜態(tài)頁面都行。
  項目的部署和發(fā)布主要有兩種方式:一種是使用FTP上傳,不過這個比較慢,而且有可能會丟失數據,個人的經驗是一點一點的發(fā);還有一種方式就是申請域名空間那里會提供一個部署的環(huán)境,我們只要將工程導出為war包,然后把war包部署上去即可。
  在項目部署之前有很多細節(jié)需要注意,比如要修改一些路徑啊,要修改一些數據啊等等,這些細節(jié)在我的博客里都有詳細的說明。該部分就一篇文章,如下:

  域名空間的申請和項目的部署發(fā)布

8. 表單驗證和報表的顯示

  后面補充了一些東西,就是Ajax動態(tài)更新購物車中商品的數量、表單的驗證和報表的顯示。
  Ajax動態(tài)更新購物車中商品的數量就是純粹的Ajax技術,我學習了一下而已,表單的驗證主要是登陸表單,這個項目里我沒做登陸了,但是登陸表單我做了一個,驗證功能也做好了,主要用到的是jQuery的Validate驗證插件,這個插件還是很強大的,可以直接將登陸表單加到項目中,設置一下相應的跳轉即可。  報表的顯示主要用的是JsChart,這款工具很好用,可以生成響應的js代碼,我們要做的就是前臺發(fā)送Ajax請求給后臺,根據實際需求從后臺取出數據,傳到前臺用JsChart圖表顯示出來即可。
  該部分的博文,我列出來放在下面:

  使用Ajax技術局部更新商品數量和總價
  jQuery-Validate驗證插件的使用步驟詳解
  使用JsChart技術在后臺顯示商品銷售報表

  網上商城這個項目目前就寫這么多了,CSDN下載頻道中的源碼和我的博客里是同步的,大家如果有需要可以下載我在CSDN里上傳的源碼(免費的~我的所有資源均免費)。后期如果要繼續(xù)完善,我會放到我的github中,也歡迎大家Follow我的github(雖然一般般啦~)Star我上傳的工程~下面是具體的下載地址:

  下載地址(與博客內容同步)
  GitHub下載地址(后期如果有更新會放在這)  

原文地址:http://blog.csdn.net/eson_15/article/details/51479994#download

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • JavaWeb中HttpSession中表單的重復提交示例

    JavaWeb中HttpSession中表單的重復提交示例

    這篇文章主要介紹了JavaWeb中HttpSession中表單的重復提交,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03
  • Java 實戰(zhàn)范例之精美網上音樂平臺的實現(xiàn)

    Java 實戰(zhàn)范例之精美網上音樂平臺的實現(xiàn)

    讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+vue+Springboot+ssm+mysql+maven+redis實現(xiàn)一個前后端分離的精美網上音樂平臺,大家可以在過程中查缺補漏,提升水平
    2021-11-11
  • Java使用html2image將html生成縮略圖圖片的實現(xiàn)示例

    Java使用html2image將html生成縮略圖圖片的實現(xiàn)示例

    本文主要介紹了Java使用html2image將html生成縮略圖圖片的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-12-12
  • Springboot+TCP監(jiān)聽服務器搭建過程圖解

    Springboot+TCP監(jiān)聽服務器搭建過程圖解

    這篇文章主要介紹了Springboot+TCP監(jiān)聽服務器搭建過程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • 了解spring中的CloudNetflix Hystrix彈性客戶端

    了解spring中的CloudNetflix Hystrix彈性客戶端

    這篇文章主要介紹了了解spring中的CloudNetflix Hystrix彈性客戶端,客戶端彈性模式是在遠程服務發(fā)生錯誤或表現(xiàn)不佳時保護遠程資源(另一個微服務調用或者數據庫查詢)免于崩潰。,需要的朋友可以參考下
    2019-06-06
  • 深入學習springboot線程池的使用和擴展

    深入學習springboot線程池的使用和擴展

    這篇文章主要介紹了深入學習springboot線程池的使用和擴展,springboot框架提供了@Async注解,幫助我們更方便的將業(yè)務邏輯提交到線程池中異步執(zhí)行,需要的朋友可以參考下
    2019-06-06
  • Java刪除String中指定字符的11種方法匯總

    Java刪除String中指定字符的11種方法匯總

    這篇文章主要給大家介紹了關于Java刪除String中指定字符的11種方法,在Java中String類提供了許多方法來處理字符串,其中包括刪除指定字符的方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • java中的空指針異常情況以及解決方案

    java中的空指針異常情況以及解決方案

    這篇文章主要介紹了java中的空指針異常情況以及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • MyBatis Plus整合Redis實現(xiàn)分布式二級緩存的問題

    MyBatis Plus整合Redis實現(xiàn)分布式二級緩存的問題

    Mybatis內置的二級緩存在分布式環(huán)境下存在分布式問題,無法使用,但是我們可以整合Redis來實現(xiàn)分布式的二級緩存,這篇文章給大家介紹MyBatis Plus整合Redis實現(xiàn)分布式二級緩存,感興趣的朋友跟隨小編一起看看吧
    2023-11-11
  • Java的封裝類和裝箱拆箱詳解

    Java的封裝類和裝箱拆箱詳解

    Java中存在基礎數據類型,但是在某些情況下,我們要對基礎數據類型進行對象的操作,例如,集合中只能存對象,而不能存在基礎數據類型,于是便出現(xiàn)了封裝類,本文將詳細給大家介紹Java封裝類和裝箱拆箱,需要的朋友可以參考下
    2023-05-05

最新評論