Github: "https://github.com/nnngu" 項目源代碼: "https://github.com/nnngu/nguSeckill" 前端交互流程設計 對於一個系統,需要產品經理、前端工程師和後端工程師的參與,產品經理將用戶的需求做成一個開發文檔交給前端工程師和後端工程師, ...
Github:https://github.com/nnngu
項目源代碼:https://github.com/nnngu/nguSeckill
前端交互流程設計
對於一個系統,需要產品經理、前端工程師和後端工程師的參與,產品經理將用戶的需求做成一個開發文檔交給前端工程師和後端工程師,前端工程師為系統完成頁面的開發,後端工程師為系統完成業務邏輯的開發。對於我們這個秒殺系統,它的前端交互流程設計如下圖:
這個流程圖就告訴了我們詳情頁的流程邏輯,前端工程師根據這個流程圖設計頁面,而我們後端工程師根據這個流程圖開發我們對應的代碼。前端交互流程是系統開發中很重要的一部分,接下來進行Restful
介面設計的學習。
Restful介面設計學習
什麼是Restful?它就是一種優雅的URL表述方式,用來設計我們資源的訪問URL。通過這個URL的設計,我們就可以很自然的感知到這個URL代表的是哪種業務場景或者什麼樣的數據或資源。基於Restful設計的URL,對於我們介面的使用者、前端、web系統或者搜索引擎甚至是我們的用戶,都是非常友好的。關於Restful的瞭解大家去網上一搜一大把,我這裡就不再做介紹了。下麵看看我們這個秒殺系統的URL設計:
接下來基於上述資源介面來開始對Spring MVC框架的使用。
配置Spring MVC框架
在web.xml
文件裡面引入DispatcherServlet
:
web.xml
裡面的代碼請參照項目的源代碼。
添加 applicationContext-web.xml
添加 applicationContext-web.xml
,在下圖所示的位置。
applicationContext-web.xml
裡面的代碼請參照項目的源代碼。
這樣我們便完成了Spring MVC的相關配置(即將Spring MVC框架整合到了我們的項目中),接下來就要基於Restful介面進行我們項目的控制器 SeckillController
的開發工作了。
編寫 SeckillController
控制器中的每一個方法都對應我們系統中的一個資源URL,其設計應該遵循Restful介面的設計風格。
創建控制器SeckillController.java
,如下圖:
SeckillController.java
裡面的代碼請參照項目的源代碼。
SeckillController.java
中的方法完全是對照Service介面方法進行開發的,第一個方法用於訪問我們商品的列表頁,第二個方法訪問商品的詳情頁,第三個方法用於返回一個json數據,數據中封裝了我們商品的秒殺地址,第四個方法用於封裝用戶是否秒殺成功的信息,第五個方法用於返回系統當前時間。代碼中涉及到一個將返回秒殺商品地址封裝為json數據的類,即SeckillResult
,在dto包中創建它,如下:
建立一個全局ajax請求返回類,返回json
創建SeckillResult.java
,如下圖:
SeckillResult.java
裡面的代碼請參照項目的源代碼。
到此,控制器的開發任務完成,接下來進行我們的頁面開發。
頁面的編寫
項目的前端頁面是由Bootstrap
開發的,所以我們要先去下載Bootstrap
或者是使用線上CDN。
使用線上CDN的方法:
<!-- Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- 可選的 Bootstrap 主題文件(一般不用引入) -->
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
<!-- Bootstrap 核心 JavaScript 文件 -->
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
為了方便我們本地調試,我在項目里使用的是本地的Bootstrap
。
步驟:
下載
JQuery
,因為Bootstrap
就是依賴JQuery
的下載
Bootstrap
下載一個倒計時插件
jquery.countdown.min.js
,再下載一個操作Cookie
插件jquery.cookie.min.js
如圖放置:
- 編寫一個公共的頭部
jsp
文件,位於WEB-INF/jsp/common
下的head.jsp
,如下圖:
head.jsp
裡面的代碼請參照項目的源代碼。
- 編寫一個公共的
jstl
標簽庫文件tag.jsp
,在下圖所示的位置。
tag.jsp
裡面的代碼請參照項目的源代碼。
- 編寫列表頁面
list.jsp
,在下圖所示的位置。
list.jsp
裡面的代碼請參照項目的源代碼。
- 編寫秒殺詳情頁面
detail.jsp
,在下圖所示的位置。
detail.jsp
裡面的代碼請參照項目的源代碼。
## 添加 seckill.js 文件
添加 seckill.js
文件,在下圖所示的位置。
seckill.js
裡面的代碼請參照項目的源代碼。
## 運行項目
運行項目,部署到tomcat
,在瀏覽器地址欄輸入 http://localhost:8080/seckill/list
,敲回車,即可看到如下圖的界面:
點擊相應商品後面的詳情頁鏈接即可查看該商品是否開啟秒殺、以及秒殺該商品等活動。
到此,我們成功完成了web層的開發。但一個秒殺系統,往往是會有成千上萬的人進行參與,我們目前的系統是抗不起多少高併發操作的,所以後面我們會對本系統進行高併發的優化。請查看我的下一篇文章。