一、流程分析

二、代码

1.view层

(1)list.jsp

 1 <c:forEach items="${parents }" var="parent">
 2         <tr class="trOneLevel">
 3             <td width="200px;">${parent.cname }</td>
 4             <td>${parent.desc }</td>
 5             <td width="200px;">
 6               <a href="<c:url value='/admin/AdminCategoryServlet?method=addChildPre&pid=${parent.cid }'/>">添加二级分类</a>
 7               <a href="<c:url value='/admin/AdminCategoryServlet?method=editParentPre&cid=${parent.cid }'/>">修改</a>
 8               <a οnclick="return confirm('您是否真要删除该一级分类?')" href="<c:url value='/admin/AdminCategoryServlet?method=deleteParent&cid=${parent.cid }'/>">删除</a>
 9             </td>
10         </tr>
11     <c:forEach items="${parent.children }" var="child">
12         <tr class="trTwoLevel">
13             <td>${child.cname }</td>
14             <td>J${child.desc }</td>
15             <td width="200px;" align="right">
16               <a href="<c:url value='/admin/AdminCategoryServlet?method=editChildPre&cid=${child.cid }'/>">修改</a>
17               <a οnclick="return confirm('您是否真要删除该二级分类?')" href="<c:url value='/admin/AdminCategoryServlet?method=deleteChild&cid=${child.cid }'/>">删除</a>
18             </td>
19         </tr>
20     </c:forEach>
21 </c:forEach>

(2)edit.jsp

 1     <script type="text/javascript" src="<c:url value='/jquery/jquery-1.5.1.js'/>"></script>
 2     <script type="text/javascript">
 3         function checkForm() {
 4             if(!$("#cname").val()) {
 5                 alert("分类名不能为空!");
 6                 return false;
 7             }
 8             if(!$("#desc").val()) {
 9                 alert("分类描述不能为空!");
10                 return false;
11             }
12             return true;
13         }
14     </script>
15 <style type="text/css">
16     body {background: rgb(254,238,189);}
17 </style>
18   </head>
19
20   <body>
21     <h3>修改1级分类</h3>
22     <h1></h1>
23     <p style="font-weight: 900; color: red">${msg }</p>
24     <form action="<c:url value='/admin/AdminCategoryServlet'/>" method="post" οnsubmit="return checkForm()">
25         <input type="hidden" name="cid" value="${parent.cid }"/>
26         <input type="hidden" name="method" value="editParent"/>
27         分类名称:<input type="text" name="cname" id="cname" value="${parent.cname }"/><br/>
28         分类描述:<textarea rows="5" cols="50" id="desc" name="desc">${parent.desc }</textarea><br/>
29         <input type="submit" value="修改分类"/>
30         <input type="button" value="返回" οnclick="history.go(-1)"/>
31     </form>
32   </body>
33 </html>

2.servlet层

(1)AdminCategoryServlet.java

 1     /**
 2      * 准备编辑一级分类
 3      * @param req
 4      * @param resp
 5      * @return
 6      * @throws ServletException
 7      * @throws IOException
 8      */
 9     public String editParentPre(HttpServletRequest req, HttpServletResponse resp)
10             throws ServletException, IOException {
11         req.setAttribute("parent", service.load(req.getParameter("cid")));
12         return "/adminjsps/admin/category/edit.jsp";
13     }
14
15     /**
16      * 编辑一级分类
17      * @param req
18      * @param resp
19      * @return
20      * @throws ServletException
21      * @throws IOException
22      */
23     public String editParent(HttpServletRequest req, HttpServletResponse resp)
24             throws ServletException, IOException {
25         Category parent = CommonUtils.toBean(req.getParameterMap(), Category.class);
26         service.edit(parent);
27         return findAll(req, resp);
28     }

3.service层

(1)AdminCategoryService.java

 1     /**
 2      * 加载分类
 3      * @param cid
 4      * @return
 5      */
 6     public Category load(String cid) {
 7         try {
 8             return categoryDao.load(cid);
 9         } catch (SQLException e) {
10             throw new RuntimeException(e);
11         }
12     }
13
14     /**
15      * 修改分类
16      * @param category
17      */
18     public void edit(Category category) {
19         try {
20             categoryDao.edit(category);
21         } catch (SQLException e) {
22             throw new RuntimeException(e);
23         }
24     }

4.dao层

(1)AdminCategoryDao.java

 1 /**
 2      * 加载分类
 3      * @param cid
 4      * @return
 5      * @throws SQLException
 6      */
 7     public Category load(String cid) throws SQLException {
 8         String sql = "select * from t_category where cid=?";
 9         Map<String,Object> map = qr.query(sql, new MapHandler(), cid);
10         return toCategory(map);
11     }
12
13     /**
14      * 修改分类
15      * @param category
16      * @throws SQLException
17      */
18     public void edit(Category category) throws SQLException {
19         String sql = "update t_category set cname=?, pid=?, `desc`=? where cid=?";
20         String pid = null;
21         if(category.getParent() != null) {
22             pid = category.getParent().getCid();
23         }
24         Object [] params = {category.getCname(), pid, category.getDesc(), category.getCid()};
25         qr.update(sql, params);
26     }

转载于:https://www.cnblogs.com/shamgod/p/5181524.html

网上图书商城项目学习笔记-028编辑一级分类相关推荐

  1. 网上图书商城项目学习笔记-034订单管理

    一.流程分析 二.代码 1.view层 (1)list.jsp 1 <body> 2 <p class="pLink"> 3 <a href=&quo ...

  2. 网上图书商城项目学习笔记-035工具类之JdbcUtils及TxQueryRunner及C3P0配置

    事务就是保证多个操作在同一个connection,TxQueryRunner通过JdbcUtils获取连接,而JdbcUtils通过ThreadLocal<Connection>确保了不同 ...

  3. 网上图书商城项目学习笔记-008修改密码功能

    一.修改密码流程分析 二.代码 1.view层 1)pwd.jsp 1 <%@ page language="java" import="java.util.*&q ...

  4. spring boot 前后端分离项目(商城项目)学习笔记

    spring boot 前后端分离项目(商城项目)学习笔记 目录 spring boot 前后端分离项目(商城项目)学习笔记 后端配置 springboot项目 pom.xml文件 maven 配置文 ...

  5. vue3小兔鲜商城项目学习笔记+资料分享01

    最近正在学习vue3小兔鲜,需要相关学习资料的可以点链接 https://docs.qq.com/doc/DUmhUVERtUHpLaG1a 下面试学习笔记 项目起步 项目预览地址 小兔鲜儿商城:ht ...

  6. vue3小兔鲜商城项目学习笔记+资料分享06

    建议大家先去看我第一篇小兔鲜的文章,强烈建议,非常建议,十分建议,从头开始看更完整. 最近正在学习vue3小兔鲜 下面是学习笔记 购物车模块 购物车功能分析 [外链图片转存失败,源站可能有防盗链机制, ...

  7. vue3小兔鲜商城项目学习笔记+资料分享08

    建议大家先去看我第一篇小兔鲜的文章,强烈建议,非常建议,十分建议,从头开始看更完整. 最近正在学习vue3小兔鲜 下面是学习笔记 支付模块 路由和组件 任务目标: 完成支付页路由和组件 [外链图片转存 ...

  8. vue3小兔鲜商城项目学习笔记+资料分享09

    建议大家先去看我第一篇小兔鲜的文章,强烈建议,非常建议,十分建议,从头开始看更完整. 最近正在学习vue3小兔鲜 下面是学习笔记 会员中心模块 个人中心 个人中心-路由配置 本节目标:个人中心二级路由 ...

  9. vue3小兔鲜商城项目学习笔记+资料分享04

    最近正在学习vue3小兔鲜, 下面是学习笔记 详情模块 目标:界面渲染部分我们快速准备,详情模块的重点都在组件封装. 基础布局和路由 任务目标: 完成商品详情的基础布局和路由配置 [外链图片转存失败, ...

最新文章

  1. Python3 range()函数
  2. 算法设计与分析【第七周】贪心算法 最优装载问题
  3. C#连接MySQL数据库实例
  4. mac笔记本怎么外接显示屏_win to go的安装与Macbook pro外接eGPU开启
  5. 详述白盒测试的逻辑覆盖的路径覆盖及其优缺点
  6. MyBatis框架 注解
  7. IT职场人生系列之十九:危险职业(中)
  8. 阿里技术参考图册-研发篇
  9. 【ICPC 2021网络赛2】The 2021 ICPC Asia Regionals Online Contest (II)签到题5题
  10. 算法笔记-二分查找和二分答案
  11. UCOS操作系统——系统内部任务(六)
  12. UI库colorui的使用————小程序
  13. eclipse护眼颜色
  14. 黑马2021最新版 SpringCloud基础篇全技术栈导学(RabbitMQ+Docker+Redis+搜索+分布式)
  15. 万用表蜂鸣器档の响一声
  16. linux中Oops信息的调试及栈回溯—Linux人都知道,这是好东西!
  17. 给电脑文件批量重命名和更改后缀名
  18. 汉字转拼音(不带音调)
  19. (C语言)写一个函数,实现两个字符串的比较, 即自己写一个strcmp函数,函数原型为int strcmp(const char* p1, const char* p2)
  20. 对付“网络特工”软件的无可奈何的方法

热门文章

  1. 自学Web前端有哪些误区?自学Web需要掌握哪些技术
  2. 2020年,我们该如何学习WEB 前端开发
  3. android释放全局变量,Android全局变量
  4. tplinkl路由器跨vlan访问_路由器与三层交换机的区别:谁才是最好的选择?
  5. python多用户登录_python 多用户登录
  6. HDU-基础搜索总结
  7. java用DFA实现脏词过滤以及用FileAlterationListenerAdaptor实现对资源文件修改的动态监听
  8. MIT最新深度学习入门公开课
  9. 转:ReLU激活函数:简单之美
  10. (一) Qt Model/View 的简单说明