作為一名剛接觸 Java Web 開發的「小白」,記錄一下我在易買網項目中後台商品管理模塊的開發過程,希望能給同樣入門的同學一些參考。這個模塊涵蓋了數據庫表設計、DAO 層接口與實現、Servlet 處理請求、文件上傳以及分頁邏輯等核心環節。
專案使用 SQL Server 數據庫,核心涉及兩張表:
項目採用經典的分層架構,DAO 接口定義數據操作規範,實現類具體執行 SQL 語句,Servlet 作為控制層處理業務流轉。
ProductDao_hb 接口定義了商品的增刪改查及分頁核心方法:
public interface ProductDao_hb {
List<Product> getAllInfo() throws Exception;
List<Product> getOneProductData(int pageIndex, int pageSize) throws Exception;
int getAllCount() throws Exception;
boolean AddProduct(Product p) throws Exception;
boolean UpProduct(Product p) throws Exception;
boolean DelProduct(int id) throws Exception;
}
實現類 ProductDaoImpl_hb 繼承 BaseDao,封裝了 JDBC 操作。關鍵點如下:
TOP 和 NOT IN 子查詢實現物理分頁,雖然性能不如 ROW_NUMBER(),但在中小數據量下足夠使用。UpProduct(含圖片)和 UpPic(不含圖片)兩種更新方式,靈活應對前端是否上傳新圖片的場景。主 Servlet 通過 opr 參數區分操作類型:addProduct(跳轉新增/修改頁)、addNewProduct(執行新增)、delete、update、list(分頁列表)。
文件上傳採用 Apache Commons FileUpload 組件,核心邏輯在 AddProduct(request, response) 方法中:
// 解析 multipart/form-data 請求
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (isMultipart) {
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
if (item.isFormField()) {
// 處理普通表單字段:name、description、parentId、price、stock
} else {
// 處理文件字段:保存到 /images/product/ 目錄,文件名存入 Product 對象
}
}
}
Page_hb 封裝了分頁所需屬性:當前頁 pageIndex、每頁條數 pageSize、總記錄數 pageSum、總頁數 pageCount、數據列表 list。其 setPageIndex 方法內建邊界保護,防止頁碼越界。
Servlet 中分頁處理流程:
pageIndex,默認為 1。dao.getAllCount() 獲取總記錄數,計算總頁數。dao.getOneProductData(pageIndex, pageSize) 獲取當前頁數據。Page_hb 對象放入 request 域,轉發到 product.jsp 展示。這個模塊雖然代碼量不大,但串聯了 Web 開發的核心鏈路:請求接收 → 參數解析(含文件上傳) → 業務邏輯處理 → 數據庫操作 → 分頁查詢 → 結果封裝 → 視圖跳轉。作為練手項目,最大的收穫是理解了分層架構中各層職責劃分,以及分頁在數據庫層面的實現思路。後續可優化方向包括:引入連接池優化數據庫訪問、使用通用分頁插件(如 PageHelper)、引入事務管理保證數據一致性等。
代碼難免稚嫩,請多指教!