首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java Web 网上书城实战项目:Servlet/JSP 架构全流程解析与源码结构详解

     編輯:Java 綜合教學

專案概覽

web_bookstore:基於 Servlet/JSP + HTML/CSS/JS 的輕量級網上書城,適合 Java Web 入門者串聯知識點。採用前後台分離架構,無框架依賴,核心邏輯清晰可控。

整體架構

web_bookstore
├── src
│   ├── admin        # 管理員 Servlet 控制邏輯
│   ├── dao          # 實體類 + DAO 操作類
│   ├── demo         # 測試用例
│   ├── service      # 會員/業務 Servlet 控制邏輯
│   ├── util         # 工具類(分頁、編碼過濾器等)
│   └── web.filter   # 過濾器(字符編碼、登錄攔截)
└── WebContent
    ├── admin        # 管理員 JSP 頁面
    ├── client       # 會員前台 JSP 頁面
    ├── css/js/img   # 靜態資源
    └── util         # 頁面片段(header、footer)

數據庫設計(5 表)

表名核心欄位說明
userid, username, password, email, status會員表,status=0 未激活,1 正常
productid, name, price, description, category_id, picture商品(書籍)表
ordersid, user_id, total_price, address, receiver, phone, status, create_time訂單主表
order_itemid, order_id, product_id, quantity, price訂單明細(單品)
messageid, user_id, content, create_time留言/通知表

SQL 建表腳本見專案 db.sql。

核心流程梳理

1. 會員註冊 → 管理員激活 → 登錄

  • 註冊寫入 user,status=0。
  • 管理員後台列表查看未激活用戶,點擊激活更新 status=1。
  • 登錄驗證通過後,將 user_id 寫入 Cookie(名 user),Session 存放用戶對象。

2. 購物車實現:Session 隔離多用戶

// AddCartServlet 關鍵邏輯
Cookie cookie = ServletUtils.getCookie(request, "user");
if (cookie == null) { /* 跳轉登錄 */ }

HttpSession session = request.getSession();
// 關鍵:Session 屬性名 = "cart" + user_id,實現用戶級隔離
Map<Product, Integer> cart = (Map<Product, Integer>) session.getAttribute("cart" + cookie.getValue());
if (cart == null) cart = new HashMap<>();
// 加入/更新數量
cart.put(product, cart.getOrDefault(product, 0) + 1);
session.setAttribute("cart" + cookie.getValue(), cart);

原理:同一 Session 對象對不同用戶存儲不同鍵,利用 Cookie 中的 user_id 做命名空間隔離。

3. 商品結算流程

  1. 購物車頁面 → 點擊「去結算」→ OrderConfirmServlet 讀取 Session 購物車數據,轉向 client/order_confirm.jsp。
  2. 用戶填寫收貨地址/電話 → 提交 → CreateOrderServlet:
      ① 計算總價 ② 生成訂單主表 + 明細表 ③ 清空購物車 Session ④ 跳轉支付頁。
  3. 支付頁模擬支付寶輸入 → PayServlet 更新訂單狀態 → 完成頁。

4. 管理員後台功能

  • 登錄攔截器判斷 user.role == admin。
  • 商品增刪改查(圖片上傳至 img/picture)。
  • 用戶列表、激活/禁用、訂單查看。

關鍵技術點總結

技術點實現方式學習價值
會話管理Cookie + Session,購物車鍵名隔離多用戶狀態隔離核心模式
分頁查詢DAO 層 limit ?,? + Util 分頁 Bean大數據量前端分頁標準寫法
文件上傳Commons FileUpload / Servlet 3.0 @MultipartConfig圖片上傳實戰
過濾器鏈EncodingFilter + LoginFilter統一編碼、權限攔截
MVC 分層Servlet(Controller) → Service → DAO → DB分層思想雛形,為 SpringMVC 鋪路

專案啟動步驟

  1. 導入 MyEclipse/Eclipse/IDEA,配置 Tomcat 8/9。
  2. 建立資料庫 bookstore,執行 db.sql。
  3. 修改 db.properties(JDBC URL/用戶/密碼)。
  4. 部署專案,訪問 https://localhost:8080/web_bookstore/client/index.jsp。

擴展建議

  • 引入 Spring + MyBatis 替換手寫 DAO/事務管理。
  • 前端升級 Vue/React + REST API,實現前後端分離。
  • 加入 Redis 緩存熱門書籍、Session 共享支援集群。
  • 引入 RabbitMQ 異步處理訂單通知、郵件發送。

此專案雖簡單,但涵蓋了 Java Web 核心知識點的最小閉環,建議初學者完整跑通、逐行閱讀 Servlet 代碼,再逐步引入框架重構,理解框架解決的具體痛點。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved