Java Web 网络商城案例演示十九 管理员(查询全部分类信息,添加分类信息,删除分类信息)

Java Web 网络商城案例演示十九

查询全部分类信息

原理分析

在这里插入图片描述

步骤实现:

一、准备工作:
1、创建:AdminCategoryServlet
2、修改链接:/admin/left.jsp

d.add('010201','0102','分类管理','${pageContext.request.contextPath}/AdminCategoryServlet?method=findAllCats','提示信息','mainFrame');

向服务端发送请求
在这里插入图片描述
3、AdminCategoryServlet—>findAllCats
获取全部分类信息
将全部分类信息放入到request当中
转发到/admin/category/list.jsp
4、在/admin/category/list.jsp当中修改页面获取分类信息,完成响应

<c:forEach items="${allCats }" var="c" varStatus="status">
	<tr onmouseover="this.style.backgroundColor = 'white'" onmouseout="this.style.backgroundColor = '#F5FAFE';">
	<td style="CURSOR: hand; HEIGHT: 22px" align="center" width="18%">${status.count }</td>
		<td style="CURSOR: hand; HEIGHT: 22px" align="center" width="17%">${c.cname }</td>
			<td align="center" style="HEIGHT: 22px"><a href="edit.jsp">
				<img src="${pageContext.request.contextPath}/img/admin/i_edit.gif" border="0" style="CURSOR: hand">
				 </a></td> <td align="center" style="HEIGHT: 22px"><a href="#"> <img
					 src="${pageContext.request.contextPath}/img/admin/i_del.gif" width="16"  height="16" border="0" style="CURSOR: hand">
				 </a></td>
	 </tr>
 </c:forEach>

在这里插入图片描述

添加分类信息

一、页面跳转:

1、/admin/category/list.jsp js函数当中addCategory

${pageContext.request.contextPath}/AdminCategoryServlet?method=addCaregoryUI

在这里插入图片描述
2、/AdminCategoryServlet —> addCategoryUI
return “admin/category/add.jsp”;

3、添加分类信息
原理分析
在这里插入图片描述
4、步骤实现:
在/admin/category/add.jsp
设置form 表单的参数 method action
设置form 表单下各种input标签的name属性

<form id="userAction_save_do" name="Form1" action="${pageContext.request.contextPath}/AdminCategoryServlet?method=addCategory" method="post">

在这里插入图片描述

<td class="ta_01" bgColor="#ffffff" colspan="3">
	<input type="text" name="cname" value="" id="userAction_save_do_logonName" class="bg"/>
</td>

AdminCategoryServlet addCategory
addCategory
// 获取分类的名称
// 创建分类的id
// 调用业务层的添加分类功能
// 重定向到查询全部分类信息

// addCategory
	public String addCategory(HttpServletRequest request, HttpServletResponse response) throws Exception {
		// 获取分类的名称
		String cname = request.getParameter("cname");
		// 创建分类的id
		String id = UUIDUtils.getId();
		Category category = new Category();
		category.setCid(id);
		category.setCname(cname);
		// 调用业务层的添加分类功能
		CategoryService categoryService = new CategoryServiceImpl();
		categoryService.addCategory(category);

		// 重定向到查询全部分类信息
		response.sendRedirect("/store_v5/AdminCategoryServlet?method=findAllCats");// 定位到对应发送请求跳转页面的内容

		return null;
	}

CategoryService当中

void addCategory(Category category)throws Exception;

CategoryServiceImpl

@Override
	public void addCategory(Category category) throws Exception {
		// TODO Auto-generated method stub
		categoryDao.addCategory(category);
	}

CategoryDao

void addCategory(Category category)throws Exception;

CategoryDaoImpl

@Override
	public void addCategory(Category category) throws Exception {
		// TODO Auto-generated method stub
		String sql = "insert into category values (?,?)";
		QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
		qr.update(sql, category.getCid(), category.getCname());
	}

5、这样添加数据的话在客户端上是看不到数据的,需要同步redis当中的数据
获取到jedis对象
删除redis当中对应的数据
并关闭redis
CategoryService–>addCategory方法当中

@Override
	public void addCategory(Category category) throws Exception {
		// 本质是向mysql插入一条数据
		categoryDao.addCategory(category);
		// 更新redis的缓存 
		Jedis jedis = JedisUtils.getJedis();// 获取到Jedis的实例
		jedis.del("allCats");//删除redis当中对应allCats的数据
		JedisUtils.closeJedis(jedis);//关闭当前jedis对象
		//当访问页面时会在CategoryServlet类当中从新开启redis获取对应数据库当中的内容并将其再次放入到redis
	}

删除分类信息

1、问题删除分类的时候,由于分类被很多的商品参照,无法删除
解决方案1:
先删除使用相关链的商品信息,之后再去删除分类
解决方案2:
设置所有的商品上的cid的值文null/其他分类的id
解决方案3:
设计分类的时候多增加一个列(有效/无效)

原创文章 76 获赞 151 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_44757034/article/details/105237623