網上書城+源碼

  通過一段時間的Java Web基礎知識的學習,爲了將整個知識點串聯起來,本身寫了一個簡單的網上書城小項目。整個項目架構比較簡單,適合像我這種Java Web初學者來學習參考,項目名稱web_bookstore,是基於servlet/jsp和html/css/js實現的。css

  整個工程代碼已push到Git,詳見地址:web_bookstore html

總體架構

  該網上書城項目分爲前臺和後臺兩大部分,前臺部分包括會員註冊、會員登陸、購買書籍、添加購物車、結算等功能,後臺部分包括查看會員、查看商品、添加商品等功能。有些功能模塊還未添加,後續須要的話能夠再添加上去。總體架構框圖以下所示:git

代碼流程梳理

  經過看總體架構框圖可知,整個項目各個模塊之間關係仍是挺清晰的,下面先來一張web_bookstore工程總體圖:github

src源碼包說明:web

  • admin包:主要是一些管理員有關的Servlet控制邏輯
  • dao包:數據表類和數據表操做類
  • demo包:本身寫的一些測試用例
  • service包:會員相關的一些Servlet控制邏輯
  • util包:一些腳手架程序
  • web.filter:一些攔截器,好比控制網頁編碼等

WebContent文件說明:sql

  • admin:管理員相關jsp頁面
  • client:會員相關jsp頁面
  • css:全局css文件
  • img/picture:存放一些圖片
  • js:一些js程序
  • util:存放一些頁頭什麼的

  工程總體大體就是這些,下面分模塊大體梳理一下流程。數據庫

數據表

  通常項目首先會設計數據表,那我們就先說說數據表建立^_^。整個項目使用了5個數據表,分別是用戶表、商品表、訂單表、訂單項表(訂單中單個商品項信息)、消息表。具體的表結構和建立表SQL語句見源碼中的db.sql文件。下面是整個個數據庫的圖示:cookie

會員註冊

  會員須要先註冊後才能使用網上書城添加購物車和結算等功能,注意:會員註冊後須要管理員激活該會員後才能登陸。註冊界面以下所示:session

會員登陸

  會員註冊成功後,就能夠直接登錄到網上書城了,登陸界面以下所示。注意,若是是管理員登陸的話,會跳轉到後臺管理員主頁;若是是普通會員的話就會跳到會員主頁。架構

  會員成功登錄後,服務端會生成對應的Cookie,並寫入請求響應中,Cookie格式爲user=user_id形式,user_id爲用戶註冊後生成的一個對應id。

  接着就會跳轉到商品主頁上去,商品主頁頁面以下所示,目前商品表中只有2件商品:(

購物車流程

  在商品下面點擊加入購物車後就會將該商品添加到購物車中。

  注意:購物車是以Session形式保存在服務端的,由於網上書城是多用戶登陸的,如何保證多個用戶的Session不衝突呢,也就是購物車是如何實現的呢?一個用戶的購物車在服務端對應一個Session,該Session對應的屬性名字爲cart+user_id,user_id也就是用戶登陸成功寫入到Cookie的那個user值,由於cart+user_id是和用戶一一對應的,因此這樣就保證了全部用戶的Session不會衝突,對應的源碼在AddCarServlet邏輯中,以下所示:

// 先判斷用戶是否登陸
Cookie cookie = ServletUtils.getCookie(request, "user");
if (cookie == null) {
    response.getWriter().println("抱歉,你當前還未登陸,2秒後調到登陸頁面");
    response.addHeader("refresh", "2;url=" + request.getContextPath() + "/client/login.jsp");
    return;
}

// 獲取購物車對象
HttpSession session = request.getSession();
Map<Product, Integer> cart = (Map<Product, Integer>) session.getAttribute("cart" + cookie.getValue());
if (cart == null) {
    cart = new HashMap<Product, Integer>();
}

商品結算流程

  在購物車頁面點擊如今結帳後,就會跳轉到提交訂單頁面中了。

  填寫收貨地址、收貨人、電話等信息後,點擊提交訂單,就到了計算頁面了,而後輸入支付寶帳號和密碼後,商品購買流程就結束了。

 

管理員流程

  在管理員頁面若是填寫的是管理員帳號的話,就直接到管理員管理頁面了,整圖頁面以下所示:

  目前管理員功能有限,只有添加商品、查看全部商品、查看全部用戶等功能,後續能夠添加上去,這裏對照着源碼大體就明白了,就不具體說明了。

  到此,總體項目流程已經梳理完畢,具體請點擊web_bookstore查看源碼。

參考鏈接

  一、https://github.com/luoxn28

  二、Java Web之會話技術

  三、Java Web之Servlet技術

相關文章
相關標籤/搜索