文章目录
- 一、实现步骤:
- 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>