• 网上图书商城项目学习笔记-025分类管理模块分析及查询所有分类实现


    一、流程分析

    1.分类管理介绍

    2.查询所有分类

    二、代码

    1.view层

    (1)top.jsp

     1   <body style="background: rgb(78,78,78);color: #fff;">
     2 <h1 style="text-align: center; line-height: 30px;">网上书城系统后台管理</h1>
     3 <div style="line-height: 10px;">
     4     <span>管理员:${sessionScope.admin.adminname }</span>
     5     <a target="_top" href="<c:url value='/adminjsps/login.jsp'/>">退出</a>
     6     <span style="padding-left:50px;">
     7         <a href="<c:url value='/admin/AdminCategoryServlet?method=findAll'/>">分类管理</a>
     8         <a href="<c:url value='/adminjsps/admin/book/main.jsp'/>">图书管理</a>
     9         <a href="<c:url value='/admin/AdminOrderServlet?method=findAll'/>">订单管理</a>
    10     </span>
    11 </div>
    12   </body>

    (2)list.jsp 

     1   <body>
     2     <h2 style="text-align: center;">分类列表</h2>
     3     <table align="center" border="1" cellpadding="0" cellspacing="0">
     4         <caption class="captionAddOneLevel">
     5           <a href="<c:url value='/adminjsps/admin/category/add.jsp'/>">添加一级分类</a>
     6         </caption>
     7         <tr class="trTitle">
     8             <th>分类名称</th>
     9             <th>描述</th>
    10             <th>操作</th>
    11         </tr>
    12         
    13 <c:forEach items="${parents }" var="parent">
    14         <tr class="trOneLevel">
    15             <td width="200px;">${parent.cname }</td>
    16             <td>${parent.desc }</td>
    17             <td width="200px;">
    18               <a href="<c:url value='/admin/AdminCategoryServlet?method=addChildPre&pid=${parent.cid }'/>">添加二级分类</a>
    19               <a href="<c:url value='/admin/AdminCategoryServlet?method=editParentPre&cid=${parent.cid }'/>">修改</a>
    20               <a onclick="return confirm('您是否真要删除该一级分类?')" href="<c:url value='/admin/AdminCategoryServlet?method=deleteParent&cid=${parent.cid }'/>">删除</a>
    21             </td>
    22         </tr>
    23     <c:forEach items="${parent.children }" var="child">
    24         <tr class="trTwoLevel">
    25             <td>${child.cname }</td>
    26             <td>J${child.desc }</td>
    27             <td width="200px;" align="right">
    28               <a href="<c:url value='/admin/AdminCategoryServlet?method=editChildPre&cid=${child.cid }'/>">修改</a>
    29               <a onclick="return confirm('您是否真要删除该二级分类?')" href="<c:url value='/admin/AdminCategoryServlet?method=deleteChild&cid=${child.cid }'/>">删除</a>
    30             </td>
    31         </tr>
    32     </c:forEach>
    33 </c:forEach>
    34 
    35     </table>
    36   </body>

    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 findAll(HttpServletRequest req, HttpServletResponse resp)
    10             throws ServletException, IOException {
    11         List<Category> parents = service.findAll();
    12         req.setAttribute("parents", parents);
    13         return "/adminjsps/admin/category/list.jsp";
    14     }

    3.service层

    (1)CategoryService.java 

     1     /**
     2      * 查询所有分类
     3      * @return
     4      */
     5     public List<Category> findAll() {
     6         try {
     7             return categoryDao.findAll();
     8         } catch (SQLException e) {
     9             throw new RuntimeException(e);
    10         }
    11     }

    4.dao层

    (1)CategoryDao.java

     1     /**
     2      * 返回所有分类
     3      * @return
     4      * @throws SQLException
     5      */
     6     public List<Category> findAll() throws SQLException {
     7         // 1. 查询出所有一级分类
     8         String sql = "SELECT * FROM t_category WHERE pid IS NULL ORDER BY orderBy";
     9         List<Map<String,Object>> mapList = qr.query(sql, new MapListHandler());
    10         
    11         List<Category> parents = toCategoryList(mapList);
    12         
    13         // 2. 循环遍历所有的一级分类,为每个一级分类加载它的二级分类 
    14         for(Category parent : parents) {
    15             // 查询出当前父分类的所有子分类
    16             List<Category> children = findByparent(parent.getCid());
    17             // 设置给父分类
    18             parent.setChildren(children);
    19         }
    20         return parents;
    21     }
    22 
    23     /**
    24      * 可以把多个Map(List<Map>)映射成多个Category(List<Category>)
    25      * @param mapList
    26      * @return
    27      */
    28     private List<Category> toCategoryList(List<Map<String, Object>> mapList) {
    29         List<Category> categoryList = new ArrayList<Category>();
    30         for(Map<String,Object> map : mapList) {
    31             Category c = toCategory(map);
    32             categoryList.add(c);
    33         }
    34         return categoryList;
    35     }
    36 
    37 
    38     /**
    39      * 把一个Map中的数据映射到Category中
    40      * @param map
    41      * @return
    42      */
    43     private Category toCategory(Map<String, Object> map) {
    44         /*
    45          * map {cid:xx, cname:xx, pid:xx, desc:xx, orderBy:xx}
    46          * Category{cid:xx, cname:xx, parent:(cid=pid), desc:xx}
    47          */
    48         Category category = CommonUtils.toBean(map, Category.class);
    49         String pid = (String) map.get("pid");
    50         if(pid != null) {
    51             Category parent = new Category();
    52             parent.setCid(pid);
    53             category.setParent(parent);
    54         }
    55         return category;
    56     }
    57 
    58     /**
    59      * 通过父分类查询子分类
    60      * @param cid
    61      * @return
    62      * @throws SQLException
    63      */
    64     public List<Category> findByparent(String cid) throws SQLException {
    65         String  sql = "select * from t_category where pid=?";
    66          List<Map<String,Object>> mapList = qr.query(sql, new MapListHandler(), cid);
    67         return toCategoryList(mapList);
    68     }
  • 相关阅读:
    jQuery 2.0.3 源码分析 回调对象
    JQuery+JQuery ui实现的弹出窗口+遮罩层+拖动+更改大小~!
    2019.8.25 小结
    2019.8.23 小结
    宜中食堂游记
    2019.8.21小结
    2019.8.22小结
    2019.8.19小结
    题解 CF499A 【Watching a movie】
    2019.8.18小结
  • 原文地址:https://www.cnblogs.com/shamgod/p/5181445.html
Copyright © 2020-2023  润新知