家居網購專案實作03
8.功能07-后臺管理 顯示家居
8.1需求分析/圖解
- 給后臺管理提供獨立登錄頁面,管理員登錄地址不對外公開
- 管理員登錄成功后,顯示管理選單頁面
- 管理員點擊家居管理,顯示所有家居資訊
8.2思路分析
ps:實作管理員登錄功能,方案一是將管理員視為member,添加到member表中,為了區別管理員和用戶的權限,添加一個欄位即可;方案二是重新創建一張admin表,單獨存盤admin資訊,
這里采用方案二,
8.3代碼實作
8.3.1admin表和furn表
admin表:
-- 創建admin表
CREATE TABLE `admin`(
`id` INT PRIMARY KEY AUTO_INCREMENT,
`username` VARCHAR(32) NOT NULL UNIQUE,
`password` VARCHAR(32) NOT NULL,
`email` VARCHAR(64)
)CHARSET utf8 ENGINE INNODB;
-- 插入測驗資料
INSERT INTO admin (`username`,`password`,`email`)
VALUES('admin',MD5('admin'),'[email protected]');
SELECT * FROM admin;
furn表:
-- 設計家居表furn
-- 根據 需求-檔案-界面 設計欄位
-- 注意:id int(11), 11為顯示的寬度,配合零填充(zerofill)
-- int(2), 2表示的也是顯示寬度
-- 也就是說, int(11)和int(2)存盤的范圍是一樣的,兩者存放的資料范圍只和int相關
-- 例如,67890使用int(11)來存盤,顯示為 00000067890
-- 67890使用int(2)來存盤,顯示為 67890
-- 也就是說,當存盤的資料位數不夠時,使用0來填充剩下的寬度(零填充)
CREATE TABLE `furn`(
`id` INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, #id-使用無符號
`name` VARCHAR(64) NOT NULL, #家居名
`maker` VARCHAR(64) NOT NULL, #制造商
`price` DECIMAL(11,2) NOT NULL, #價格 建議用DECIMAL定點數
`sales` INT UNSIGNED NOT NULL, #銷量
`stock` INT UNSIGNED NOT NULL, #庫存
`img_path` VARCHAR(256) NOT NULL #存放圖片的路徑即可,不建議直接存放圖片到資料庫中
)CHARSET utf8 ENGINE INNODB;
-- 增加測驗資料
INSERT INTO furn(`id`,`name`,`maker`,`price`,`sales`,`stock`,`img_path`)
VALUES(NULL,'北歐風格小桌子','熊貓家居',180,666,7,'assets/images/product-image/6.jpg');
INSERT INTO furn(`id`,`name`,`maker`,`price`,`sales`,`stock`,`img_path`)
VALUES(NULL,'簡約風格小椅子','熊貓家居',180,666,7,'assets/images/product-image/4.jpg');
INSERT INTO furn(`id`,`name`,`maker`,`price`,`sales`,`stock`,`img_path`)
VALUES(NULL,'典雅風格小臺燈','螞蟻家居',180,666,7,'assets/images/product-image/14.jpg');
INSERT INTO furn(`id`,`name`,`maker`,`price`,`sales`,`stock`,`img_path`)
VALUES(NULL,'溫馨風格盆景架','螞蟻家居',180,666,7,'assets/images/product-image/16.jpg');
SELECT * FROM `furn`;
8.3.2管理員登錄功能
管理員登錄功能實作參考:功能04-會員登錄
詳細代碼請看 https://github.com/liyuelian/furniture_mall.git
-
entity層增加Admin物體,進行admin表映射,
-
dao層增加AdminDAO介面,,由AdminDAOImpl實作該介面方法,同時AdminDAOImpl繼承BasicDAO,用于查詢資料庫中有無對應Admin用戶回傳對應資訊
-
utils包創建AdminDAOImplTest類并測驗
-
Service層創建AdminService介面,AdminServiceImpl實作該介面
-
utils包中創建AdminServiceImplTest類并測驗
-
web層創建AdminServlet并配置,該Servlet對接前端頁面,根據功能06-web層Servlet減肥中的方法,AdminServlet直接繼承BasicServlet,只需要在AdminServlet撰寫業務代碼即可,不需要實作doPost方法,doPost由抽象父類BasicServlet使用反射+動態系結回呼
AdminServlet:
package com.li.furns.web; import com.li.furns.entity.Admin; import com.li.furns.service.AdminService; import com.li.furns.service.impl.AdminServiceImpl; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * @author 李 * @version 1.0 */ public class AdminServlet extends BasicServlet { private AdminService adminService = new AdminServiceImpl(); public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //獲取用戶輸入的賬號密碼 String username = request.getParameter("username"); String password = request.getParameter("password"); //構建一個Admin物件 Admin admin = new Admin(null, username, password, null); if (adminService.login(admin) == null) { //登錄失敗,回傳管理員登錄頁面并提示錯誤資訊 request.setAttribute("errInfo", "登錄失敗,賬號資訊有誤"); request.getRequestDispatcher("/views/manage/manage_login.jsp") .forward(request, response); } else { //登錄成功,跳轉到manage_menu.jsp request.getRequestDispatcher("/views/manage/manage_menu.jsp") .forward(request, response); } } } -
修改前端頁面manage_login.jsp(登錄表單提交注意添加隱藏域)
8.3.3顯示家居功能
詳細代碼請看 https://github.com/liyuelian/furniture_mall.git
-
entity層增加Furn物體
這里如果Furn物體的屬性名和對應表的欄位不一致,可以通過給查詢的欄位起別名的方法解決
-
dao層增加FurnDAO介面,由FurnDAOImpl實作該介面,同時繼承BasicDAO,用于查詢資料庫furn表中的所有資訊
-
utils包創建FurnDAOImplTest類并測驗
-
service層添加FurnService介面,由FurnServiceImpl實作該介面
-
utils包創建FurnServiceImplTest類并測驗
-
web層創建FurnServlet并配置(配置的url為/manage/furnServlet,目的是為了之后使用過濾器可以更好地限制訪問權限),該Servlet對接前端頁面,直接繼承BasicServlet,只需要在Servlet中撰寫業務代碼即可,
package com.li.furns.web; import com.li.furns.entity.Furn; import com.li.furns.service.FurnService; import com.li.furns.service.impl.FurnServiceImpl; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; public class FurnServlet extends BasicServlet { private FurnService furnService = new FurnServiceImpl(); protected void list(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { List<Furn> furns = furnService.queryFurns(); //將furns集合放入到request域中 req.setAttribute("furns", furns); //請求轉發 req.getRequestDispatcher("/views/manage/furn_manage.jsp") .forward(req, resp); } } -
在對接的前端頁面furn_manage.jsp,使用jstl將接收到的家居集合顯示出來
8.3.4整合管理員登錄和顯示家居功能
上述兩個功能的流程為,管理員登錄后由AdminServlet請求轉發到manage_menu.jsp頁面,點擊頁面上的“家居管理”,FurnServlet請求轉發到furn_manage.jsp頁面,該頁面顯示所有家居資訊,
8.4完成測驗
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/540192.html
標籤:其他
