day05-功能实现04

打印 上一主题 下一主题

主题 887|帖子 887|积分 2661

家居网购项目实现04

以下皆为部分代码,详见 https://github.com/liyuelian/furniture_mall.git
10.功能09-后台管理 删除家居

10.1需求分析/图解

需求如下:

  • 管理员进入到家居管理页面
  • 点击删除家居连接,弹出确认窗口,确认删除,取消放弃
10.2思路分析

10.3代码实现

10.3.1dao层

FurnDAO接口
  1. /**
  2. * 通过传入的id,删除furn表中对应的记录
  3. *
  4. * @param id id
  5. * @return 返回受影响的行数
  6. */
  7. public int deleteFurnById(int id);
复制代码
FurnDAOImpl
  1. @Override
  2. public int deleteFurnById(int id) {
  3.     String sql = "DELETE FROM `furn` WHERE `id`=?;";
  4.     return update(sql, id);
  5. }
复制代码
10.3.2service层

FurnService接口
  1. /**
  2. * 根据id删除对应的家居信息
  3. *
  4. * @param id id
  5. * @return 返回修改表的行数
  6. */
  7. public int deleteFurnById(int id);
复制代码
FurnServiceImpl
  1. @Override
  2. public int deleteFurnById(int id) {
  3.     return furnDAO.deleteFurnById(id);
  4. }
复制代码
测试类
  1. @Test
  2. public void deleteFurnById() {
  3.     if (furnService.deleteFurnById(24) != 0) {
  4.         System.out.println("删除成功");
  5.     } else {
  6.         System.out.println("删除失败");
  7.     }
  8. }
复制代码
10.3.3web层

FurnServlet
  1. /**
  2. * 处理删除家居的请求
  3. *
  4. * @param req
  5. * @param resp
  6. * @throws ServletException
  7. * @throws IOException
  8. */
  9. protected void delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  10.     //获取请求删除的家居id
  11.     String id = req.getParameter("id");
  12.     //防止接收的id不是一个数字型的字符串
  13.     furnService.deleteFurnById(DataUtils.parseInt(id, 0));
  14.     //重定向到家居列表页-该地址由浏览器解析
  15.     resp.sendRedirect(req.getContextPath() + "/manage/furnServlet?action=list");
  16. }
复制代码
10.3.4前端页面校验

furn_manage.jsp添加校验
  1. [/code][size=4]10.4完成测试[/size]
  2. 点击删除
  3. [img]https://liyuelian.oss-cn-shenzhen.aliyuncs.com/imgs/image-20221219184622113.png[/img]删除成功
  4. [img]https://liyuelian.oss-cn-shenzhen.aliyuncs.com/imgs/image-20221219184635704.png[/img][size=5]11.功能10-后台管理 修改家居[/size]
  5. [size=4]11.1需求分析/图解[/size]
  6. [img]https://liyuelian.oss-cn-shenzhen.aliyuncs.com/imgs/image-20221219185628206.png[/img][img]https://liyuelian.oss-cn-shenzhen.aliyuncs.com/imgs/image-20221219185715835.png[/img][list=1]
  7. [*]管理员进入到家居管理页面furn_manage.jsp,点击修改按钮,跳转到furn_update.jsp
  8. [*]在furn_update.jsp先回显该家居信息
  9. [*]在框中填写新的信息,点击修改家居按钮
  10. [*]修改成功后,回到展示页面,重新刷新显示家居列表
  11. [/list][size=4]11.2思路分析[/size]
  12. [img]https://liyuelian.oss-cn-shenzhen.aliyuncs.com/imgs/%E5%90%8E%E5%8F%B0%E7%AE%A1%E7%90%86%20%E4%BF%AE%E6%94%B9%E5%AE%B6%E5%B1%85.png[/img][size=4]11.3代码实现[/size]
  13. [size=3]11.3.1dao层[/size]
  14. FurnDAO接口
  15. [code]/**
  16. * 通过传入的id,返回furn表中对应的furn对象
  17. * @param id id
  18. * @return 返回furn表中对应的furn对象
  19. */
  20. public Furn queryFurnById(int id);
  21. /**
  22. * 通过传入的furn对象,修改furn表对应的记录的字段值
  23. * @param furn 传入的furn对象
  24. * @return 返回受影响的行数
  25. */
  26. public int updateFurn(Furn furn);
复制代码
FurnDAOImpl
  1. @Override
  2. public Furn queryFurnById(int id) {
  3.     String sql = "SELECT `id` , `name` , `maker` , `price` , `sales` , `stock` , `img_path` AS imgPath " +
  4.             "FROM `furn` WHERE id=?";
  5.     return querySingle(sql, Furn.class, id);
  6. }
  7. @Override
  8. public int updateFurn(Furn furn) {
  9.     String sql = "UPDATE `furn` " +
  10.             "SET `name`=?, `maker`=?,`price`=?,`sales`=?,`stock`=?,`img_path`=? " +
  11.             "WHERE `id`=?";
  12.     return update(sql, furn.getName(), furn.getMaker(), furn.getPrice(),
  13.             furn.getSales(), furn.getStock(), furn.getImgPath(), furn.getId());
  14. }
复制代码
FurnDAOImplTest
  1. @Test
  2. public void queryFurnById() {
  3.     Furn furn = furnDAO.queryFurnById(1);
  4.     System.out.println(furn);
  5. }
  6. @Test
  7. public void updateFurn() {
  8.     Furn furn = new Furn(39,"king","皇家家居",new BigDecimal(999),
  9.             88,99,"assets/images/product-image/default.jpg");
  10.     int i = furnDAO.updateFurn(furn);
  11.     System.out.println("i=" + i);
  12. }
复制代码
11.3.2service层

FurnService
  1. /**
  2. * 根据id返回家居信息
  3. *
  4. * @param id id
  5. * @return 返回furn表中对应的furn对象
  6. */
  7. public Furn queryFurnById(int id);
  8. /**
  9. * 将传入的furn对象,根据id更新到furn表对应的字段
  10. *
  11. * @param furn 传入的furn对象
  12. * @return 返回受影响的行数
  13. */
  14. public int updateFurn(Furn furn);
复制代码
FurnServiceImpl
  1. @Override
  2. public Furn queryFurnById(int id) {
  3.     return furnDAO.queryFurnById(id);
  4. }
  5. @Override
  6. public int updateFurn(Furn furn) {
  7.     return furnDAO.updateFurn(furn);
  8. }
复制代码
FurnServiceImplTest
  1. @Test
  2. public void queryFurnById() {
  3.     Furn furn = furnService.queryFurnById(1);
  4.     System.out.println(furn);
  5. }
  6. @Test
  7. public void updateFurn() {
  8.     int i = furnService.updateFurn(new Furn(38, "queen", "皇家家居", new BigDecimal(888),
  9.             99, 21, "assets/images/product-image/default.jpg"));
  10.     System.out.println("i=" + i);
  11. }
复制代码
11.3.3web层

FurnServlet
  1. /**
  2. * 处理显示单个家居信息的请求
  3. *
  4. * @param req
  5. * @param resp
  6. * @throws ServletException
  7. * @throws IOException
  8. */
  9. protected void showFurn(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  10.     //获取请求显示的家居id
  11.     String id = req.getParameter("id");
  12.     //在数据库中查询,得到furn对象
  13.     Furn furn = furnService.queryFurnById(DataUtils.parseInt(id, 0));
  14.     //将furn放入到request域中
  15.     req.setAttribute("furn", furn);
  16.     //请求转发到furn_update.jsp中,在该页中显示furn信息
  17.     //这里使用请求转发是因为如果使用重定向,当刷新页面之后就没有了request域中的信息
  18.     req.getRequestDispatcher("/views/manage/furn_update.jsp")
  19.             .forward(req, resp);
  20. }
  21. /**
  22. * 处理修改家居的请求
  23. *
  24. * @param req
  25. * @param resp
  26. * @throws ServletException
  27. * @throws IOException
  28. */
  29. protected void update(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  30.     //自动填充Javabean
  31.     Furn furn = DataUtils.copyParamToBean(req.getParameterMap(), new Furn());
  32.     //调用updateFurn,更改数据
  33.     furnService.updateFurn(furn);
  34.     //修改成功后重定向,显示列表家居
  35.     resp.sendRedirect(req.getContextPath() + "/manage/furnServlet?action=list");
  36. }
复制代码
相应的前端接口也需要修改,这里忽略
utils包工具类DataUtils:
  1. package com.li.furns.utils;
  2. import org.apache.commons.beanutils.BeanUtils;
  3. import java.util.Map;
  4. /**
  5. * @author 李
  6. * @version 1.0
  7. */
  8. public class DataUtils {
  9.     public static <T> T copyParamToBean(Map value, T bean) {
  10.         try {
  11.             //将req.getParameterMap()的数据自动封装到furn对象中
  12.             //底层使用反射将数据封装,前提是,表单提交的数据字段名称必须和Javabean的属性名一致
  13.             BeanUtils.populate(bean, value);
  14.         } catch (Exception e) {
  15.             e.printStackTrace();
  16.         }
  17.         return bean;
  18.     }
  19.     //将字符串转成数字,否则返回默认值
  20.     public static int parseInt(String str, int defaultVal) {
  21.         try {
  22.             return Integer.parseInt(str);
  23.         } catch (NumberFormatException e) {
  24.             System.out.println(str + " 格式不正确");
  25.         }
  26.         return defaultVal;
  27.     }
  28. }
复制代码
11.4完成测试

点击修改按钮
跳转到修改页面,显示数据成功
插入新数据,点击修改按钮
页面跳转显示成功
数据库显示修改成功

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

干翻全岛蛙蛙

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表