文章目录

  • 一、实现步骤:
  • 1.后端(6步骤):ItemCategory实体类-->ItemCategory接口-->ItemCategory接口配置文件-->ItemCategory服务层-->ItemCategory服务层实现-->ItemCategory控制层;
  • 2.前端(相关页面):ItemCategory.jsp页面-->add.jsp页面-->update.jsp页面-->ItemCategory2.jsp页面-->add2.jsp页面-->update2.jsp页面。
  • 二、实现代码
  • 1.ItemCategory.java
  • 2.ItemCategoryMapper.java
  • 3.ItemCategoryMapper.xml
  • 4.ItemCategoryService.java
  • 5.ItemCategoryServiceIml.java
  • 6.ItemCategoryController.java
  • 7.ItemCategory.jsp
  • 8.add.jsp
  • 9.update.jsp
  • 10.ItemCategory2.jsp
  • 11.add2.jsp
  • 12.update2.jsp


一、实现步骤:

1.后端(6步骤):ItemCategory实体类–>ItemCategory接口–>ItemCategory接口配置文件–>ItemCategory服务层–>ItemCategory服务层实现–>ItemCategory控制层;
2.前端(相关页面):ItemCategory.jsp页面–>add.jsp页面–>update.jsp页面–>ItemCategory2.jsp页面–>add2.jsp页面–>update2.jsp页面。

二、实现代码

1.ItemCategory.java
package com.javapandeng.po;

import java.io.Serializable;

/**
 * 【管理员后台-类目管理模块:第一步创建ItemCategory类目管理实体类】
 */
public class ItemCategory implements Serializable {

    /**
     * 主键id
     */
    private Integer id;
    /**
     * 类目名称
     */
    private String name;
    /**
     * 父id
     */
    private Integer pid;
    /**
     * 是否已删除
     */
    private Integer isDelete;

    /**
     * 类目构造方法*/
    public ItemCategory(Integer id, String name, Integer pid, Integer isDelete) {
        this.id = id;
        this.name = name;
        this.pid = pid;
        this.isDelete = isDelete;
    }
    public ItemCategory() {
    }

    /**
     * 类目属性的get、set方法*/
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getPid() {
        return pid;
    }
    public void setPid(Integer pid) {
        this.pid = pid;
    }
    public Integer getIsDelete() {
        return isDelete;
    }
    public void setIsDelete(Integer isDelete) {
        this.isDelete = isDelete;
    }

    /**
     * 类目属性的toString方法*/
    @Override
    public String toString() {
        return "ItemCategory{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pid=" + pid +
                ", isDelete=" + isDelete +
                '}';
    }
}
2.ItemCategoryMapper.java
package com.javapandeng.mapper;

import com.javapandeng.base.BaseDao;
import com.javapandeng.po.ItemCategory;

/**
 * 【管理员后台-类目管理模块:第二步创建ItemCategory类目管理的接口】
 */
/**
 * ItemCategory类目管理接口,继承于基础接口,基础接口中定义了大量的公用方法,供接口的xml文件的sql语句的使用
 */
public interface ItemCategoryMapper extends BaseDao<ItemCategory> {
}
3.ItemCategoryMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--【管理员后台-类目管理模块:第三步创建实体类对应的接口的xml配置文件】-->
<!--ItemCategoryMapper.xml管理员接口实现的相关xml的sql语句-->
<mapper namespace="com.javapandeng.mapper.ItemCategoryMapper"> <!--命名空间的值是为了区别不同的xml文件-->
    <!--一、ItemCategory实体类与数据库映射的对应字段-->
    <!--id作为一个标识,在下面的select语句的resultMap属性中被使用到-->
    <!--type是Manage实体类的绝对路径,或者写别名也可以-->
    <resultMap id="ResultMapItemCategory" type="com.javapandeng.po.ItemCategory">
        <result property="id" column="id" jdbcType="INTEGER"/>
        <result property="name" column="name" jdbcType="VARCHAR"/>
        <result property="pid" column="pid" jdbcType="INTEGER"/>
        <result property="isDelete" column="isDelete" jdbcType="INTEGER"/>
    </resultMap>


    <!--二、SQL片段 -->
    <!--1.ItemCategory类目数据库字段-->
    <!--id值自定义,在sql语句中使用include标签的refid属性来使用该sql片段-->
    <sql id="ItemCategory_field">
        id,name,pid,isDelete
    </sql>

    <!--2.ItemCategory类目实体类属性-->
    <!--id值自定义,在sql语句中使用include标签的refid属性来使用该sql片段-->
    <sql id="ItemCategory_insert">
        #{id},#{name},#{pid},#{isDelete}
    </sql>

    <!--3.更新结果-->
    <!--id值自定义,在sql语句中使用include标签的refid属性来使用该sql片段-->
    <!--if语句的意图:如果值不为空,就把新的值赋值给相应字段-->
    <sql id="ItemCategory_update">
        <if test="name != null">
            name = #{name},
        </if>
        <if test="pid != null">
            pid = #{pid},
        </if>
        <if test="isDelete != null">
            isDelete = #{isDelete}
        </if>
    </sql>

    <!--4.sql查询时条件-->
    <!--id值自定义,在sql语句中使用include标签的refid属性来使用该sql片段-->
    <!--if语句的意图:如果值不为空,就把新的值赋值给相应字段-->
    <sql id="ItemCategory_where">
        <if test="id != null">
            and id = #{id}
        </if>
        <if test="name != null">
            and name = #{name}
        </if>
        <if test="pid != null">
            and pid = #{pid}
        </if>
        <if test="isDelete != null">
            and isDelete = #{isDelete}
        </if>
    </sql>


    <!--三、SQL语句-->
    <!--1.新增数据-->
    <!--insert标签的id值为:ItemCategoryMapper管理员接口继承的BaseDao基础接口的对应方法名-->
    <!--新增数据的insert语句语法:insert into 表名(字段1,字段2,...) values(字段值1,字段值2);-->
    <!--include标签用来包含一个sql片段,refid是sql片段的标识id-->
    <!--values参数:使用ItemCategory实体类的属性-->
    <!--返回:主键id -->
    <insert id="insert" parameterType="com.javapandeng.po.ItemCategory" useGeneratedKeys="true" keyProperty="id">
        insert into item_category(
        <include refid="ItemCategory_field"/>
        ) values(
        <include refid="ItemCategory_insert"/>
        )
    </insert>

    <!--2.根据Manage管理员实体主键id删除一个实体-->
    <!--delete标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <delete id="deleteById" parameterType="java.lang.Integer">
        delete from item_category where id=#{id}
    </delete>

    <!--3.通过实体删除-->
    <!--delete标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <!--include标签包含一个sql片段,refid是sql片段的标识id-->
    <delete id="deleteByEntity" parameterType="com.javapandeng.po.ItemCategory">
        delete from item_category where 1=1
        <include refid="ItemCategory_where"/>
    </delete>

    <!--4.通过map删除 -->
    <!--delete标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <!--include标签包含一个sql片段,refid是sql片段的标识id-->
    <delete id="deleteByMap" parameterType="java.util.HashMap">
        delete from item_category where 1=1
        <include refid="ItemCategory_where"/>
    </delete>

    <!--5.更新一个实体 -->
    <!--update标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <update id="update" parameterType="com.javapandeng.po.ItemCategory">
        update item_category
        <set>
            <include refid="ItemCategory_update"/>
        </set>
        where 1=1
            <include refid="ItemCategory_where"/>
    </update>

    <!--6.通过id进行修改-->
    <!--update标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <update id="updateById" parameterType="com.javapandeng.po.ItemCategory">
        update item_category
        <set>
            <include refid="ItemCategory_update"/>
        </set>
        where id=#{id}
    </update>

    <!--7.根据参数查询-->
    <!--select标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <select id="listByMap" resultMap="ResultMapItemCategory" parameterType="map">
        select <include refid="ItemCategory_field"/>
        from item_category where 1=1
        <include refid="ItemCategory_where"/>
    </select>

    <!--8.查询整个表 -->
    <!--select标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <select id="listAll" resultMap="ResultMapItemCategory">
        select <include refid="ItemCategory_field"/>
        from item_category
    </select>

    <!--9.查询所有实体,根据实体属性值为判断条件查询所有实体-->
    <!--select标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <select id="listAllByEntity" resultMap="ResultMapItemCategory" parameterType="com.javapandeng.po.ItemCategory">
        select <include refid="ItemCategory_field"/>
        from item_category where 1=1
        <include refid="ItemCategory_where"/>
    </select>

    <!--10.根据主键获取一个实体-->
    <!--select标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <select id="load" resultMap="ResultMapItemCategory" parameterType="java.lang.Integer">
        select <include refid="ItemCategory_field"/>
        from item_category where id=#{id}
    </select>

    <!--11.根据主键获取一个实体-->
    <!--select标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <select id="getById" resultMap="ResultMapItemCategory" parameterType="java.lang.Integer">
        select <include refid="ItemCategory_field"/>
        from item_category where id=#{id}
    </select>

    <!--12.通过map查询-->
    <!--select标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <select id="getByMap" resultMap="ResultMapItemCategory" parameterType="map">
        select <include refid="ItemCategory_field"/>
        from item_category where 1=1
        <include refid="ItemCategory_where"/>
    </select>

    <!--13.通过对象查询-不分页-->
    <!--select标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <select id="getByEntity" resultMap="ResultMapItemCategory" parameterType="com.javapandeng.po.ItemCategory">
        select <include refid="ItemCategory_field"/>
        from item_category where 1=1
        <include refid="ItemCategory_where"/>
    </select>

    <!--14.通过map查询分页-->
    <!--select标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <select id="findByMap" resultMap="ResultMapItemCategory" parameterType="map">
        select <include refid="ItemCategory_field"/>
        from item_category where 1=1
        <include refid="ItemCategory_where"/>
    </select>

    <!--15.通过对象查询分页-->
    <!--select标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <select id="findByEntity" resultMap="ResultMapItemCategory" parameterType="com.javapandeng.po.ItemCategory">
        select <include refid="ItemCategory_field"/>
        from item_category where 1=1
        <include refid="ItemCategory_where"/>
    </select>

    <!--16.批量新增-->
    <!--select标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <select id="insertBatch" parameterType="java.util.List">
        insert into item_category(
        <include refid="ItemCategory_field"/>
        ) values
        <foreach collection="list" item="item" index="index" separator=",">
            (#{item.name},#{item.pid},#{item.isDelete})
        </foreach>
    </select>

    <!--17.批量修改-->
    <!--select标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <update id="updateBatch" parameterType="java.util.List">
        <foreach collection="list" item="item" index="index" separator=";">
            update item_category
            <set>
                <if test="item.name != null">
                    name = #{item.name},
                </if>
                <if test="item.pid != null">
                    pid = #{item.pid},
                </if>
                <if test="item.isDelete != null">
                    isDelete = #{item.isDelete}
                </if>
            </set>
            where 1=1
            <if test="item.id != null">
               and id = #{item.id}
            </if>
        </foreach>
    </update>

    <!--四、封装纯sql语法-->
    <!--1.查询一个对象返回map-->
    <!--select标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <select id="getBySqlReturnMap" resultType="map">
        ${sql}
    </select>

    <!--2.查询一个对象返回实体类-->
    <!--select标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <select id="getBySqlReturnEntity" resultMap="ResultMapItemCategory">
        ${sql}
    </select>

    <!--3.查询一个对象返回map列表-->
    <!--select标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <select id="listBySqlReturnMap" resultType="map">
        ${sql}
    </select>

    <!--4.查询列表返回实体-->
    <!--select标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <select id="listBySqlReturnEntity" resultMap="ResultMapItemCategory">
        ${sql}
    </select>

    <!--5.查询分页-->
    <!--select标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <select id="findBySqlRerturnEntity" resultMap="ResultMapItemCategory">
        ${sql}
    </select>

    <!--6.通过sql修改-->
    <!--select标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <update id="updateBysql">
        ${sql}
    </update>

    <!--7.通过sql删除-->
    <!--select标签的id值为:ItemCategoryMapper类目接口继承的BaseDao基础接口的对应方法名-->
    <delete id="deleteBySql">
         ${sql}
    </delete>
</mapper>
4.ItemCategoryService.java
package com.javapandeng.service;

import com.javapandeng.base.BaseService;
import com.javapandeng.po.ItemCategory;

/**
 * 【管理员后台-类目管理模块:第四步创建ItemCategoryService接口】【服务层】
 */
public interface ItemCategoryService extends BaseService<ItemCategory> {
}
5.ItemCategoryServiceIml.java
package com.javapandeng.service.impl;

import com.javapandeng.base.BaseDao;
import com.javapandeng.base.BaseServiceImpl;
import com.javapandeng.mapper.ItemCategoryMapper;
import com.javapandeng.po.ItemCategory;
import com.javapandeng.service.ItemCategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
*【管理员后台-类目管理模块:第五步创建ItemCategoryService接口的实现类】【服务层】
 */
@Service
public class ItemCategoryServiceImpl extends BaseServiceImpl<ItemCategory> implements ItemCategoryService {
    @Autowired
    ItemCategoryMapper itemCategoryMapper;

    @Override
    public BaseDao<ItemCategory> getBaseDao() {
        return itemCategoryMapper;
    }
}
6.ItemCategoryController.java
package com.javapandeng.controller;

import com.javapandeng.base.BaseController;
import com.javapandeng.po.Item;
import com.javapandeng.po.ItemCategory;
import com.javapandeng.po.TjDto;
import com.javapandeng.service.ItemCategoryService;
import com.javapandeng.service.ItemService;
import com.javapandeng.utils.Pager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
@RequestMapping("/itemCategory")    /*配置基础访问地址/itemCategory*/
public class ItemCategoryController extends BaseController {

    @Autowired
    private ItemCategoryService itemCategoryService;

    /**
     *【管理员后台-类目管理模块:第六步创建ItemCategoryController控制器】【控制层】
     */
    /*===============================================类目模块-分页显示==================================================*/
    /**
     * 分页查询类目列表
     */
    @RequestMapping("/findBySql")
    public String findBySql(Model model,ItemCategory itemCategory){
        String sql = "select * from item_category where isDelete = 0 and pid is null order by id";  /*isDelete=0是为删除的,pid is null表示没有父类别*/
        Pager<ItemCategory> pagers = itemCategoryService.findBySqlRerturnEntity(sql);   /*ctrl+alt+鼠标左键,跳到BaseServiceIml中的实现分页的代码*/
        model.addAttribute("pagers",pagers);
        model.addAttribute("obj",itemCategory);
        return "itemCategory/itemCategory";     /*返回到itemCategory.jsp页面*/
    }
    /*===============================================类目模块-分页显示==================================================*/


    /*===============================================类目模块-新增一级分类==============================================*/
    /**
     * 转向到新增一级类目页面
     */
    @RequestMapping(value = "/add")
    public String add(){
        return "itemCategory/add";  /*返回到add.jsp页面*/
    }

    /**
     * 新增一级类目保存功能
     */
    @RequestMapping("/exAdd")
    public String exAdd(ItemCategory itemCategory){
        itemCategory.setIsDelete(0);
        itemCategoryService.insert(itemCategory);
        return "redirect:/itemCategory/findBySql.action";   /*重定向到访问地址为findBySql的itemCategory.jsp页面*/
    }
    /*===============================================类目模块-新增一级分类==============================================*/


    /*===============================================类目模块-修改一级分类==============================================*/
    /**
     * 转向到修改一级类目页面
     */
    @RequestMapping(value = "/update")
    public String update(Integer id,Model model){
        ItemCategory obj = itemCategoryService.load(id);
        model.addAttribute("obj",obj);
        return "itemCategory/update";    /*返回到update.jsp页面*/
    }

    /**
     * 修改一级类目
     */
    @RequestMapping("/exUpdate")
    public String exUpdate(ItemCategory itemCategory){
        itemCategoryService.updateById(itemCategory);
        return "redirect:/itemCategory/findBySql.action";   /*重定向到访问地址为findBySql的itemCategory.jsp页面*/
    }
    /*===============================================类目模块-新增一级分类==============================================*/


    /*===============================================类目模块-删除一级分类==============================================*/
    /**
     * 删除类目
     */
    @RequestMapping("/delete")
    public String delete(Integer id){
        //删除本身
        ItemCategory load = itemCategoryService.load(id);
        load.setIsDelete(1);    /*假删除:即isDelete置为1*/
        itemCategoryService.updateById(load);
        //将下级也删除
        String sql = "update item_category set isDelete=1 where pid="+id;   /*同时将子类也删除*/
        itemCategoryService.updateBysql(sql);
        return "redirect:/itemCategory/findBySql.action";   /*重定向到访问地址为findBySql的itemCategory.jsp页面*/
    }
    /*===============================================类目模块-删除一级分类==============================================*/


    /*===============================================类目模块-查看二级分类==============================================*/
    /**
     * 查看二级类目
     */
    @RequestMapping("/findBySql2")
    public String findBySql2(ItemCategory itemCategory,Model model){
        String sql = "select * from item_category where isDelete=0 and pid="+itemCategory.getPid()+" order by id";  /*获取二级分类*/
        Pager<ItemCategory> pagers = itemCategoryService.findBySqlRerturnEntity(sql);
        model.addAttribute("pagers",pagers);
        model.addAttribute("obj",itemCategory);
        return "itemCategory/itemCategory2";    /*返回到ItemCategory2.jsp页面*/
    }
    /*===============================================类目模块-查看二级分类==============================================*/


    /*===============================================类目模块-新增二级分类==============================================*/
    /**
     * 转向到新增二级类目页面
     */
    @RequestMapping(value = "/add2")
    public String add2(int pid,Model model){
        model.addAttribute("pid",pid);
        return "itemCategory/add2";     /*返回到add2.jsp页面*/
    }

    /**
     * 新增二级类目保存功能
     */
    @RequestMapping("/exAdd2")
    public String exAdd2(ItemCategory itemCategory){
        itemCategory.setIsDelete(0);
        itemCategoryService.insert(itemCategory);
        return "redirect:/itemCategory/findBySql2.action?pid="+itemCategory.getPid();    /*重定向到ItemCategory2.jsp页面*/
    }
    /*===============================================类目模块-新增二级分类==============================================*/


    /*===============================================类目模块-修改二级分类==============================================*/
    /**
     * 转向到修改二级类目页面
     */
    @RequestMapping(value = "/update2")
    public String update2(Integer id,Model model){
        ItemCategory obj = itemCategoryService.load(id);
        model.addAttribute("obj",obj);
        return "itemCategory/update2";  /*返回到update2.jsp页面*/
    }

    /**
     * 修改二级类目
     */
    @RequestMapping("/exUpdate2")
    public String exUpdate2(ItemCategory itemCategory){
        itemCategoryService.updateById(itemCategory);
        return "redirect:/itemCategory/findBySql2.action?pid="+itemCategory.getPid();   /*重定向到ItemCategory2.jsp页面*/
    }
    /*===============================================类目模块-新增二级分类==============================================*/


    /*===============================================类目模块-删除二级分类==============================================*/
    /**
     * 删除二级类目
     */
    @RequestMapping("/delete2")
    public String delete2(Integer id,Integer pid){
        //删除本身
        ItemCategory load = itemCategoryService.load(id);
        load.setIsDelete(1);
        itemCategoryService.updateById(load);
        return "redirect:/itemCategory/findBySql2.action?pid="+pid; /*重定向到ItemCategory2.jsp页面页面*/
    }
    /*===============================================类目模块-删除二级分类==============================================*/



    @Autowired
    private ItemService itemService;

    @RequestMapping(value = "/tj")
    public String tj(ItemCategory itemCategory, Model model, HttpServletRequest request, HttpServletResponse response) {
        //分页查询
        String sql = "SELECT * FROM item_category WHERE isDelete = 0 and pid is null";
        sql += " ORDER BY ID DESC ";
        List<ItemCategory> list = itemCategoryService.listBySqlReturnEntity(sql);
        List<Map<String,Object>> maps = new ArrayList<Map<String,Object>>();
        List<TjDto> res = new ArrayList<TjDto>();
        if (!CollectionUtils.isEmpty(list)){
            for (ItemCategory c : list){
                TjDto td = new TjDto();
                int tot = 0;
                List<Item> listBySqlReturnEntity = itemService.listBySqlReturnEntity("SELECT * FROM item WHERE 1=1 and isDelete =0 and category_id_one="+c.getId());
                if (!CollectionUtils.isEmpty(listBySqlReturnEntity)){
                    for (Item i : listBySqlReturnEntity){
                        tot+= i.getGmNum();
                    }
                }
                Map<String,Object> map = new HashMap<String,Object>();
                map.put("name", c.getName());
                map.put("value", tot);
                maps.add(map);
            }
        }
        //存储查询条件
        model.addAttribute("maps", maps);
        return "itemCategory/tj";
    }

}
7.ItemCategory.jsp
<%@page language="java" contentType="text/html; character=UTF-8" pageEncoding="UTF-8" %>
<%--引入公共标签页面--%>
<%@include file="/common/taglibs.jsp"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%--【管理员后台-类目管理模块:第七步创建ItemCategory.jsp页面,用于分页显示所有类目】--%>
<html>
<head>
    <title>管理员后台-湖北工程学院</title>
    <%--引入css、js文件,同时使用了公共标签页面里面配置了的上下文路径ctx--%>
    <link rel="stylesheet" href="${ctx}/resource/css/pintuer.css">
    <link rel="stylesheet" href="${ctx}/resource/css/admin.css">
    <script src="${ctx}/resource/js/jquery.js"></script>
    <script src="${ctx}/resource/js/pintuer.js"></script>
</head>
<body>
<div class="panel admin-panel">
    <%--新增类目--%>
    <div class="padding border-bottom">
        <ul class="search" style="padding-left: 10px;">
            <li>
                <a class="button border-main icon-plus-square-o" href="${ctx}/itemCategory/add">新增类目</a>    <!--控制器的itemCategory/add,此处用来跳转到新增一级类目-->
            </li>
        </ul>
    </div>
    <%--table标签,显示id和名称,用于操作,实现分页--%>
    <table class="table table-hover text-center">
    <%--显示id、名称和操作--%>
        <tr>
            <th>ID</th>
            <th>类别名称</th>
            <th>操作</th>
        </tr>
    <%--显示id、名称和跳转到相关控制器配置的操作页面--%>
    <c:forEach items="${pagers.datas}" var="data" varStatus="l">
        <tr>
            <td>${data.id}</td>
            <td>${data.name}</td>
            <td>
                <div class="button-group">
                    <a class="button border-main" href="${ctx}/itemCategory/findBySql2?pid=${data.id}"><span class="icon-edit">查看二级分类</span> </a>   <!--控制器的itemCategory/findBySql2,用来查看二级类目-->
                    <a class="button border-main" href="${ctx}/itemCategory/update?id=${data.id}"><span class="icon-edit">修改</span> </a>    <!--控制器的itemCategory/update,用来转向到修改一级类目页面-->
                    <a class="button border-red" href="${ctx}/itemCategory/delete?id=${data.id}"><span class="icon-trash-o">删除</span> </a>  <!--控制器的itemCategory/delete,用来删除一级类目-->
                </div>
            </td>
        </tr>
    <%--实现分页--%>
    </c:forEach>
        <tr>
            <td colspan="8">
                <div class="pagelist">
                    <!--maxPageItems表示一页最多有多少条记录-->
                    <pg:pager url="${ctx}/itemCategory/findBySql" maxIndexPages="5" items="${pagers.total}" maxPageItems="15" export="curPage=pageNumber">
                        <pg:last>
                            共${pagers.total}记录,共${pageNumber}页,
                        </pg:last>
                        当前第${curPage}页
                        <pg:first>
                            <a href="${pageUrl}">首页</a>
                        </pg:first>
                        <pg:prev>
                            <a href="${pageUrl}">上一页</a>
                        </pg:prev>
                        <pg:pages>
                            <c:choose>
                                <c:when test="${curPage eq pageNumber}">
                                    <font color="red">[${pageNumber}]</font>
                                </c:when>
                                <c:otherwise>
                                    <a href="${pageUrl}">${pageNumber}</a>
                                </c:otherwise>
                            </c:choose>
                        </pg:pages>
                        <pg:next>
                            <a href="${pageUrl}">下一页</a>
                        </pg:next>
                        <pg:last>
                            <c:choose>
                                <c:when test="${curPage eq pageNumber}">
                                    <font color="red">尾页</font>
                                </c:when>
                                <c:otherwise>
                                    <a href="${pageUrl}">尾页</a>
                                </c:otherwise>
                            </c:choose>
                        </pg:last>
                    </pg:pager>
                </div>
            </td>
        </tr>
    </table>
</div>
</body>
</html>
8.add.jsp
<%@page language="java" contentType="text/html; character=UTF-8" pageEncoding="UTF-8" %>
<%--引入公共标签页面--%>
<%@include file="/common/taglibs.jsp"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%--【管理员后台-类目管理模块:第八步创建add.jsp页面,用于新增一级类目】--%>
<html>
<head>
    <title>管理员后台-湖北工程学院</title>
    <%--引入css、js文件,同时使用了公共标签页面里面配置了的上下文路径ctx--%>
    <link rel="stylesheet" href="${ctx}/resource/css/pintuer.css">
    <link rel="stylesheet" href="${ctx}/resource/css/admin.css">
    <script src="${ctx}/resource/js/jquery.js"></script>
    <script src="${ctx}/resource/js/pintuer.js"></script>
</head>
<body>
<div class="panel admin-panel">
    <div class="panel-head" id="add">
        <strong><span class="icon-pencil-square-o">新增类目</span> </strong>
    </div>
    <div class="body-content">
        <!--新增一级类目的表单-->
        <form action="${ctx}/itemCategory/exAdd" method="post" class="form-x">  <!--控制器的itemCategory/exAdd,用来新增一级类目保存功能-->
            <div class="form-group">
                <div class="label"><label>一级类目名称:</label></div>
                <div class="field">
                    <input type="text" class="input w50" name="name" data-validate="required:请输入名称" />
                    <div class="tips"></div>
                </div>
            </div>
            <div class="form-group">
                <div class="label"></div>
                <div class="field">
                    <button class="button bg-main icon-check-square-o" type="submit">提交</button>
                </div>
            </div>
        </form>
    </div>
</div>
</body>
</html>
9.update.jsp
<%@page language="java" contentType="text/html; character=UTF-8" pageEncoding="UTF-8" %>
<%--引入公共标签页面--%>
<%@include file="/common/taglibs.jsp"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%--【管理员后台-类目管理模块:第九步创建update.jsp页面,用于修改一级类目】--%>
<html>
<head>
    <title>管理员后台-湖北工程学院</title>
    <%--引入css、js文件,同时使用了公共标签页面里面配置了的上下文路径ctx--%>
    <link rel="stylesheet" href="${ctx}/resource/css/pintuer.css">
    <link rel="stylesheet" href="${ctx}/resource/css/admin.css">
    <script src="${ctx}/resource/js/jquery.js"></script>
    <script src="${ctx}/resource/js/pintuer.js"></script>
</head>
<body>
<div class="panel admin-panel">
    <div class="panel-head" id="add">
        <strong><span class="icon-pencil-square-o">修改类目</span> </strong>
    </div>
    <div class="body-content">
        <!--修改一级类目的表单-->
        <form action="${ctx}/itemCategory/exUpdate" method="post" class="form-x">   <!--控制器的itemCategory/exUpdate,用来修改一级类目-->
            <input type="hidden" name="id" value="${obj.id}" />
            <div class="form-group">
                <div class="label"><label>一级类目名称:</label></div>
                <div class="field">
                    <input type="text" class="input w50" name="name" data-validate="required:请输入名称" value="${obj.name}" />
                    <div class="tips"></div>
                </div>
            </div>
            <div class="form-group">
                <div class="label"></div>
                <div class="field">
                    <button class="button bg-main icon-check-square-o" type="submit">提交</button>
                </div>
            </div>
        </form>
    </div>
</div>
</body>
</html>
10.ItemCategory2.jsp
<%@page language="java" contentType="text/html; character=UTF-8" pageEncoding="UTF-8" %>
<%--引入公共标签页面--%>
<%@include file="/common/taglibs.jsp"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%--【管理员后台-类目管理模块:第十步创建ItemCategory2.jsp页面,用于查看二级类目】--%>
<html>
<head>
    <title>管理员后台-湖北工程学院</title>
    <link rel="stylesheet" href="${ctx}/resource/css/pintuer.css">
    <link rel="stylesheet" href="${ctx}/resource/css/admin.css">
    <script src="${ctx}/resource/js/jquery.js"></script>
    <script src="${ctx}/resource/js/pintuer.js"></script>
</head>
<body>
<div class="panel admin-panel">
    <div class="padding border-bottom">
        <ul class="search" style="padding-left: 10px;">
            <li>
                <a class="button border-main icon-plus-square-o" href="${ctx}/itemCategory/add2?pid=${obj.pid}">新增二级类目</a>  <!--控制器的itemCategory/add2,此处用来跳转到新增二级类目-->
            </li>
        </ul>
    </div>
    <table class="table table-hover text-center">
        <tr>
            <th>ID</th>
            <th>类别名称</th>
            <th>操作</th>
        </tr>
    <c:forEach items="${pagers.datas}" var="data" varStatus="l">
        <tr>
            <td>${data.id}</td>
            <td>${data.name}</td>
            <td>
                <div class="button-group">
                    <a class="button border-main" href="${ctx}/itemCategory/update2?id=${data.id}"><span class="icon-edit">修改</span> </a>   <!--控制器的itemCategory/update,用来转向到修改一级类目页面-->
                    <a class="button border-red" href="${ctx}/itemCategory/delete2?id=${data.id}&pid=${data.pid}"><span class="icon-trash-o">删除</span> </a> <!--控制器的itemCategory/delete2,用来删除二级类目-->
                </div>
            </td>
        </tr>
    </c:forEach>
        <tr>
            <td colspan="8">
                <div class="pagelist">
                    <!--分页开始-->
                    <pg:pager url="${ctx}/itemCategory/findBySql2" maxIndexPages="5" items="${pagers.total}" maxPageItems="15" export="curPage=pageNumber">
                        <pg:last>
                            共${pagers.total}记录,共${pageNumber}页,
                        </pg:last>
                        当前第${curPage}页
                        <pg:first>
                            <a href="${pageUrl}">首页</a>
                        </pg:first>
                        <pg:prev>
                            <a href="${pageUrl}">上一页</a>
                        </pg:prev>
                        <pg:pages>
                            <c:choose>
                                <c:when test="${curPage eq pageNumber}">
                                    <font color="red">[${pageNumber}]</font>
                                </c:when>
                                <c:otherwise>
                                    <a href="${pageUrl}">${pageNumber}</a>
                                </c:otherwise>
                            </c:choose>
                        </pg:pages>
                        <pg:next>
                            <a href="${pageUrl}">下一页</a>
                        </pg:next>
                        <pg:last>
                            <c:choose>
                                <c:when test="${curPage eq pageNumber}">
                                    <font color="red">尾页</font>
                                </c:when>
                                <c:otherwise>
                                    <a href="${pageUrl}">尾页</a>
                                </c:otherwise>
                            </c:choose>
                        </pg:last>
                    </pg:pager>
                </div>
            </td>
        </tr>
    </table>
</div>
</body>
</html>
11.add2.jsp
<%@page language="java" contentType="text/html; character=UTF-8" pageEncoding="UTF-8" %>
<%--引入公共标签页面--%>
<%@include file="/common/taglibs.jsp"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%--【管理员后台-类目管理模块:第十一步创建add2.jsp页面,用于新增二级类目】--%>
<html>
<head>
    <title>管理员后台</title>
    <link rel="stylesheet" href="${ctx}/resource/css/pintuer.css">
    <link rel="stylesheet" href="${ctx}/resource/css/admin.css">
    <script src="${ctx}/resource/js/jquery.js"></script>
    <script src="${ctx}/resource/js/pintuer.js"></script>
</head>
<body>
<div class="panel admin-panel">
    <div class="panel-head" id="add">
        <strong><span class="icon-pencil-square-o">新增二级类目</span> </strong>
    </div>
    <div class="body-content">
        <!--新增二级类目的表单-->
        <form action="${ctx}/itemCategory/exAdd2" method="post" class="form-x"> <!--控制器的itemCategory/exAdd2,用来新增二级类目保存功能-->
            <input type="hidden" name="pid" value="${pid}" />
            <div class="form-group">
                <div class="label"><label>二级类目名称:</label></div>
                <div class="field">
                    <input type="text" class="input w50" name="name" data-validate="required:请输入名称" />
                    <div class="tips"></div>
                </div>
            </div>
            <div class="form-group">
                <div class="label"></div>
                <div class="field">
                    <button class="button bg-main icon-check-square-o" type="submit">提交</button>
                </div>
            </div>
        </form>
    </div>
</div>
</body>
</html>
12.update2.jsp
<%@page language="java" contentType="text/html; character=UTF-8" pageEncoding="UTF-8" %>
<%--引入公共标签页面--%>
<%@include file="/common/taglibs.jsp"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%--【管理员后台-类目管理模块:第十二步创建ItemCategory2.jsp页面,用于查看二级类目】--%>
<html>
<head>
    <title>管理员后台-湖北工程学院</title>
    <link rel="stylesheet" href="${ctx}/resource/css/pintuer.css">
    <link rel="stylesheet" href="${ctx}/resource/css/admin.css">
    <script src="${ctx}/resource/js/jquery.js"></script>
    <script src="${ctx}/resource/js/pintuer.js"></script>
</head>
<body>
<div class="panel admin-panel">
    <div class="panel-head" id="add">
        <strong><span class="icon-pencil-square-o">修改二级类目</span> </strong>
    </div>
    <div class="body-content">
        <!--修改二级类目的表单-->
        <form action="${ctx}/itemCategory/exUpdate2" method="post" class="form-x">  <!--控制器的itemCategory/exUpdate2,用来修改二级类目保存功能-->
            <input type="hidden" name="id" value="${obj.id}" />
            <input type="hidden" name="pid" value="${obj.pid}" />
            <div class="form-group">
                <div class="label"><label>二级类目名称:</label></div>
                <div class="field">
                    <input type="text" class="input w50" name="name" data-validate="required:请输入名称" value="${obj.name}"/>
                    <div class="tips"></div>
                </div>
            </div>
            <div class="form-group">
                <div class="label"></div>
                <div class="field">
                    <button class="button bg-main icon-check-square-o" type="submit">提交</button>
                </div>
            </div>
        </form>
    </div>
</div>
</body>
</html>