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:
设计分类的时候多增加一个列(有效/无效)