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

易買網後台管理模組:用戶註冊 AJAX 驗證、用戶 CRUD 分頁、商品分類兩級聯動完整實現

     編輯:Java 綜合教學

一、用戶註冊與 AJAX 遠端校驗

前端 jQuery

$("#userId").blur(function() {
    $.post("<%=path%>/servlet/DuCheckDoc", {name: $(this).val()}, function(data) {
        if (data == "true") $("#msg").text("用戶名已存在").addClass("error");
        else $("#msg").text("可註冊").removeClass("error");
    });
});

後端 Servlet

public class DuCheckDoc extends HttpServlet {
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
        String uName = req.getParameter("name");
        List list = new UserNameImpl().getUserName(); // 查全表
        String msg = "false";
        for (User u : list) if (uName.equals(u.getUserId())) { msg = "true"; break; }
        resp.getWriter().print(msg);
    }
}

改進建議:改用 SELECT COUNT(*) FROM user WHERE id=? 避免全表掃描。

二、用戶管理 CRUD 與分頁

DAO 關鍵 SQL

-- 分頁查詢 (SQL Server 語法)
SELECT TOP ? * FROM EASYBUY_USER
WHERE identity_ID NOT IN (SELECT TOP ? identity_ID FROM EASYBUY_USER)
-- 修改
UPDATE EASYBUY_USER SET EU_USER_ID=?, EU_USER_NAME=?, ... WHERE identity_ID=?
-- 刪除
DELETE FROM EASYBUY_USER WHERE identity_ID=?

Servlet 分頁邏輯

Page page = new Page();
page.setPageSize(3);
int total = dao.getAllCount();
page.setPageCount(total % 3 == 0 ? total/3 : total/3 + 1);
int pageIndex = req.getParameter("pageIndex") != null ? Integer.parseInt(req.getParameter("pageIndex")) : 1;
page.setList(dao.getAllUser(pageIndex, page.getPageSize()));
req.setAttribute("page", page);

JSP 分頁條

<a href="?opr=list&pageIndex=1">首頁</a>
<a href="?opr=list&pageIndex=${page.pageIndex-1}">上一頁</a>
${page.pageIndex}/${page.pageCount}
<a href="?opr=list&pageIndex=${page.pageIndex+1}">下一頁</a>
<a href="?opr=list&pageIndex=${page.pageCount}">尾頁</a>

三、商品分類兩級聯動(一級/二級分類)

資料模型

EASYBUY_PRODUCT_CATEGORY
EPC_ID, EPC_NAME, EPC_PARENT_ID
-- 一級分類:EPC_ID == EPC_PARENT_ID
-- 二級分類:EPC_PARENT_ID 指向一級 EPC_ID

DAO 查詢

// 所有一級
SELECT * FROM EASYBUY_PRODUCT_CATEGORY WHERE EPC_ID = EPC_PARENT_ID
// 所有二級
SELECT * FROM EASYBUY_PRODUCT_CATEGORY WHERE EPC_ID != EPC_PARENT_ID

修改/刪除業務規則

  • 刪除二級:檢查該分類下是否有商品,有則禁止刪除。
  • 刪除一級:檢查是否有子分類,有則禁止刪除。
  • 新增二級:選擇一級父分類,parentId 存入 EPC_PARENT_ID。

Servlet 派發

String opr = req.getParameter("opr");
if ("listinfo".equals(opr)) { /* 分頁查詢並轉發 productClass.jsp */ }
else if ("update".equals(opr)) { /* 載入數據轉發 productClass-modify.jsp */ }
else if ("add".equals(opr)) { /* 載入一級分類轉發 productClass-add.jsp */ }

四、前端頁面片段

分類列表(巢狀迴圈)

<c:forEach items="${page.listc}" var="item">  <!-- 一級 -->
  <tr><td>${item.id}</td><td>${item.name}</td>...</tr>
  <c:forEach items="${levelslist}" var="son">  <!-- 二級 -->
    <c:when test="${item.id == son.parentId}">
      <tr><td class="childClass">${son.name}</td>...</tr>
    </c:when>
  </c:forEach>
</c:forEach>

修改頁面下拉選單回顯

<select name="parentId">
  <c:forEach items="${levellist}" var="item">
    <option value="${item.id}" ${item.id == rid ? 'selected' : ''}>${item.name}</option>
  </c:forEach>
</select>

五、代碼規範建議

  • DAO 應使用 PreparedStatement 防注入(代碼中已用 ? 佔位符)。
  • Servlet 單一職責:建議拆分為 UserServlet、CategoryServlet 等。
  • 分頁工具類 Page 可泛型化,復用性更強。
  • 異常處理統一拋給錯誤頁,避免 printStackTrace() 洩露堆疊。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved