家居網購專案實作04
以下皆為部分代碼,詳見 https://github.com/liyuelian/furniture_mall.git
10.功能09-后臺管理 洗掉家居
10.1需求分析/圖解
需求如下:
- 管理員進入到家居管理頁面
- 點擊洗掉家居連接,彈出確認視窗,確認洗掉,取消放棄
10.2思路分析
10.3代碼實作
10.3.1dao層
FurnDAO介面
/**
* 通過傳入的id,洗掉furn表中對應的記錄
*
* @param id id
* @return 回傳受影響的行數
*/
public int deleteFurnById(int id);
FurnDAOImpl
@Override
public int deleteFurnById(int id) {
String sql = "DELETE FROM `furn` WHERE `id`=?;";
return update(sql, id);
}
10.3.2service層
FurnService介面
/**
* 根據id洗掉對應的家居資訊
*
* @param id id
* @return 回傳修改表的行數
*/
public int deleteFurnById(int id);
FurnServiceImpl
@Override
public int deleteFurnById(int id) {
return furnDAO.deleteFurnById(id);
}
測驗類
@Test
public void deleteFurnById() {
if (furnService.deleteFurnById(24) != 0) {
System.out.println("洗掉成功");
} else {
System.out.println("洗掉失敗");
}
}
10.3.3web層
FurnServlet
/**
* 處理洗掉家居的請求
*
* @param req
* @param resp
* @throws ServletException
* @throws IOException
*/
protected void delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//獲取請求洗掉的家居id
String id = req.getParameter("id");
//防止接收的id不是一個數字型的字串
furnService.deleteFurnById(DataUtils.parseInt(id, 0));
//重定向到家居串列頁-該地址由瀏覽器決議
resp.sendRedirect(req.getContextPath() + "/manage/furnServlet?action=list");
}
10.3.4前端頁面校驗
furn_manage.jsp添加校驗
<%--引入jquery--%>
<script type="text/javascript" src="https://www.cnblogs.com/liyuelian/archive/2022/12/19/script/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$(function () {
//獲取洗掉id,系結事件
$("a.deleteFurn").click(function () {
//獲取要洗掉的家居的名字
var furnName = $(this).parent().parent().find("td:eq(1)").text();
//confirm彈出的視窗,點擊確定回傳true,點擊取消回傳false
return confirm("確認要洗掉"+furnName+"嗎?");
})
})
</script>
10.4完成測驗
點擊洗掉
洗掉成功
11.功能10-后臺管理 修改家居
11.1需求分析/圖解
- 管理員進入到家居管理頁面furn_manage.jsp,點擊修改按鈕,跳轉到furn_update.jsp
- 在furn_update.jsp先回顯該家居資訊
- 在框中填寫新的資訊,點擊修改家居按鈕
- 修改成功后,回到展示頁面,重新重繪顯示家居串列
11.2思路分析
11.3代碼實作
11.3.1dao層
FurnDAO介面
/**
* 通過傳入的id,回傳furn表中對應的furn物件
* @param id id
* @return 回傳furn表中對應的furn物件
*/
public Furn queryFurnById(int id);
/**
* 通過傳入的furn物件,修改furn表對應的記錄的欄位值
* @param furn 傳入的furn物件
* @return 回傳受影響的行數
*/
public int updateFurn(Furn furn);
FurnDAOImpl
@Override
public Furn queryFurnById(int id) {
String sql = "SELECT `id` , `name` , `maker` , `price` , `sales` , `stock` , `img_path` AS imgPath " +
"FROM `furn` WHERE id=?";
return querySingle(sql, Furn.class, id);
}
@Override
public int updateFurn(Furn furn) {
String sql = "UPDATE `furn` " +
"SET `name`=?, `maker`=?,`price`=?,`sales`=?,`stock`=?,`img_path`=? " +
"WHERE `id`=?";
return update(sql, furn.getName(), furn.getMaker(), furn.getPrice(),
furn.getSales(), furn.getStock(), furn.getImgPath(), furn.getId());
}
FurnDAOImplTest
@Test
public void queryFurnById() {
Furn furn = furnDAO.queryFurnById(1);
System.out.println(furn);
}
@Test
public void updateFurn() {
Furn furn = new Furn(39,"king","皇家家居",new BigDecimal(999),
88,99,"assets/images/product-image/default.jpg");
int i = furnDAO.updateFurn(furn);
System.out.println("i=" + i);
}
11.3.2service層
FurnService
/**
* 根據id回傳家居資訊
*
* @param id id
* @return 回傳furn表中對應的furn物件
*/
public Furn queryFurnById(int id);
/**
* 將傳入的furn物件,根據id更新到furn表對應的欄位
*
* @param furn 傳入的furn物件
* @return 回傳受影響的行數
*/
public int updateFurn(Furn furn);
FurnServiceImpl
@Override
public Furn queryFurnById(int id) {
return furnDAO.queryFurnById(id);
}
@Override
public int updateFurn(Furn furn) {
return furnDAO.updateFurn(furn);
}
FurnServiceImplTest
@Test
public void queryFurnById() {
Furn furn = furnService.queryFurnById(1);
System.out.println(furn);
}
@Test
public void updateFurn() {
int i = furnService.updateFurn(new Furn(38, "queen", "皇家家居", new BigDecimal(888),
99, 21, "assets/images/product-image/default.jpg"));
System.out.println("i=" + i);
}
11.3.3web層
FurnServlet
/**
* 處理顯示單個家居資訊的請求
*
* @param req
* @param resp
* @throws ServletException
* @throws IOException
*/
protected void showFurn(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//獲取請求顯示的家居id
String id = req.getParameter("id");
//在資料庫中查詢,得到furn物件
Furn furn = furnService.queryFurnById(DataUtils.parseInt(id, 0));
//將furn放入到request域中
req.setAttribute("furn", furn);
//請求轉發到furn_update.jsp中,在該頁中顯示furn資訊
//這里使用請求轉發是因為如果使用重定向,當重繪頁面之后就沒有了request域中的資訊
req.getRequestDispatcher("/views/manage/furn_update.jsp")
.forward(req, resp);
}
/**
* 處理修改家居的請求
*
* @param req
* @param resp
* @throws ServletException
* @throws IOException
*/
protected void update(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//自動填充Javabean
Furn furn = DataUtils.copyParamToBean(req.getParameterMap(), new Furn());
//呼叫updateFurn,更改資料
furnService.updateFurn(furn);
//修改成功后重定向,顯示串列家居
resp.sendRedirect(req.getContextPath() + "/manage/furnServlet?action=list");
}
相應的前端介面也需要修改,這里忽略
utils包工具類DataUtils:
package com.li.furns.utils;
import org.apache.commons.beanutils.BeanUtils;
import java.util.Map;
/**
* @author 李
* @version 1.0
*/
public class DataUtils {
public static <T> T copyParamToBean(Map value, T bean) {
try {
//將req.getParameterMap()的資料自動封裝到furn物件中
//底層使用反射將資料封裝,前提是,表單提交的資料欄位名稱必須和Javabean的屬性名一致
BeanUtils.populate(bean, value);
} catch (Exception e) {
e.printStackTrace();
}
return bean;
}
//將字串轉成數字,否則回傳默認值
public static int parseInt(String str, int defaultVal) {
try {
return Integer.parseInt(str);
} catch (NumberFormatException e) {
System.out.println(str + " 格式不正確");
}
return defaultVal;
}
}
11.4完成測驗
點擊修改按鈕
跳轉到修改頁面,顯示資料成功
插入新資料,點擊修改按鈕
頁面跳轉顯示成功
資料庫顯示修改成功
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/540280.html
標籤:其他
