(二十五)后台开发-分类信息的curd -展示所有实现
案例1-分类信息的curd
步骤分析:
左边的dtree:
1.导入dtree.js
2.导入dtree.css
3.创建一个div 添加样式 class="dtree"
4.在div中编写js代码
创建一个树
d = new dTree('d');
添加根节点
通过 d.add(当前节点的id,父节点的id,显示的名称,点击时候打开的连接,放上去显示的名称,在那个地方打开这个连接)
注意:
根节点的父节点的id写成-1
添加其他节点
5.最后通过document.write(d) 写到页面上即可
分类信息添加:
1.应在在左边的dtree上添加连接(展示所有的分类信息)
d.add(...,"/store/adminCategory?method=findAll","","mainFrame")
2.创建adminCategoryservlet ,编写findAll()
查询的结果是一个list,将list放入request域中,然后请求转发/admin/category/list.jsp 添加分类的步骤:
1.编写一个连接,
/store/adminCategory?method=addUI
2.请求转发到/admin/category/add.jsp
3.add.jsp就是一个表单页面
编写表单的action属性 /store/adminCategory?method=add
给分类的名称字段添加一个name属性 name="cname"
4.admincategoryservlet的add方法
获取分类的名称
封装成category 设置id
调用categoryservice的add方法
页面重定向 /store/adminCategory?method=findAll
5.categoryservice的add方法
暂时调用dao
6.dao中添加一条数据 修改分类步骤分析:
1.在list.jsp页面上点击修改(编辑)
/store/adminCategory?method=getById&cid=???
2.在getById方法中
获取cid
调用service 通过id获取一个分类,
将category放入request域中
请求转发 edit.jsp
3.eidt页面是一个表单
添加action属性
/store/adminCategory?method=update
修改内容 点击提交
添加隐藏域 cid
4.在update方法中
获取cid和cname
封装成category
调用service的update方法
重定向/store/adminCategory?method=findAll
5.在service的update方法中
调用dao更新
清空缓存
6.dao中更新数据 删除分类步骤分析:
1.在list.jsp上编写 删除连接
/store/adminCategory?method=delete&cid=??
2.在delete方法中
获取cid
调用service的delete方法
页面重定向/store/adminCategory?method=findAll
3.service中delete
添加事务
通过cid先更新所有的商品分类信息
调用dao 删除分类
事务控制
清空缓存
/store/WebContent/admin/left.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>菜单</title>
<link href="${pageContext.request.contextPath}/css/left.css" rel="stylesheet" type="text/css"/>
<link rel="StyleSheet" href="${pageContext.request.contextPath}/css/dtree.css" type="text/css" />
</head>
<body>
<table width="100" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="12"></td>
</tr>
</table>
<table width="100%" border="0">
<tr>
<td>
<div class="dtree"> <a href="javascript: d.openAll();">展开所有</a> | <a href="javascript: d.closeAll();">关闭所有</a> <script type="text/javascript" src="${pageContext.request.contextPath}/js/dtree.js"></script>
<script type="text/javascript"> d = new dTree('d');
d.add('01',-1,'系统菜单树');
d.add('0102','01','分类管理','','','mainFrame');
d.add('010201','0102','展示所有','${pageContext.request.contextPath}/adminCategory?method=findAll','','mainFrame');
d.add('010202','0102','添加分类','${pageContext.request.contextPath}/adminCategory?method=addUI','','mainFrame');
d.add('0104','01','商品管理');
d.add('010401','0104','商品管理','${pageContext.request.contextPath}/adminProduct?method=findAll','','mainFrame');
d.add('0105','01','订单管理');
d.add('010501','0105','所有订单','${pageContext.request.contextPath}/adminOrder?method=findAllByState','','mainFrame');
d.add('010502','0105','未支付订单','${pageContext.request.contextPath}/adminOrder?method=findAllByState&state=0','','mainFrame');
d.add('010503','0105','已支付订单','${pageContext.request.contextPath}/adminOrder?method=findAllByState&state=1','','mainFrame');
d.add('010504','0105','已发货订单','${pageContext.request.contextPath}/adminOrder?method=findAllByState&state=2','','mainFrame');
d.add('010505','0105','已完成订单','${pageContext.request.contextPath}/adminOrder?method=findAllByState&state=3','','mainFrame');
document.write(d); </script>
</div> </td>
</tr>
</table>
</body>
</html>
/store/WebContent/WEB-INF/web.xml
<servlet>
<description></description>
<display-name>AdminCategoryServlet</display-name>
<servlet-name>AdminCategoryServlet</servlet-name>
<servlet-class>com.louis.web.servlet.AdminCategoryServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AdminCategoryServlet</servlet-name>
<url-pattern>/adminCategory</url-pattern>
</servlet-mapping>
com.louis.web.servlet.AdminCategoryServlet
public String findAll(HttpServletRequest request, HttpServletResponse response) throws Exception {
//1.调用categoryservice 查询所有的分类信息 返回值 list
CategoryService cs=(CategoryService) BeanFactory.getBean("CategoryService");
List<Category> list = cs.findAll(); //2.将list放入request域中 请求转发即可
request.setAttribute("list", list);
return "/admin/category/list.jsp";
}
/store/WebContent/admin/category/list.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<HTML>
<HEAD>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="${pageContext.request.contextPath}/css/Style1.css" rel="stylesheet" type="text/css" />
<script language="javascript" src="${pageContext.request.contextPath}/js/public.js"></script>
<script type="text/javascript">
function addCategory(){
window.location.href = "${pageContext.request.contextPath}/adminCategory?method=addUI";
}
</script>
</HEAD>
<body>
<br>
<table cellSpacing="1" cellPadding="0" width="100%" align="center" bgColor="#f5fafe" border="0">
<TBODY>
<tr>
<td class="ta_01" align="center" bgColor="#afd1f3">
<strong>分类列表</strong>
</TD>
</tr>
<tr>
<td class="ta_01" align="right">
<button type="button" id="add" name="add" value="添加" class="button_add" onclick="addCategory()">
添加分类
</button> </td>
</tr>
<tr>
<td class="ta_01" align="center" bgColor="#f5fafe">
<table cellspacing="0" cellpadding="1" rules="all"
bordercolor="gray" border="1" id="DataGrid1"
style="BORDER-RIGHT: gray 1px solid; BORDER-TOP: gray 1px solid; BORDER-LEFT: gray 1px solid; WIDTH: 100%; WORD-BREAK: break-all; BORDER-BOTTOM: gray 1px solid; BORDER-COLLAPSE: collapse; BACKGROUND-COLOR: #f5fafe; WORD-WRAP: break-word">
<tr
style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; HEIGHT: 25px; BACKGROUND-COLOR: #afd1f3"> <td align="center" width="18%">
序号
</td>
<td align="center" width="17%">
分类名称
</td>
<td width="7%" align="center">
编辑
</td>
<td width="7%" align="center">
删除
</td>
</tr>
<c:forEach var="c" items="${ list }" varStatus="vs">
<tr onmouseover="this.style.backgroundColor = 'white'"
onmouseout="this.style.backgroundColor = '#F5FAFE';">
<td style="CURSOR: hand; HEIGHT: 22px" align="center"
width="18%">
${vs.count }
</td>
<td style="CURSOR: hand; HEIGHT: 22px" align="center"
width="17%">
${c.cname }
</td>
<td align="center" style="HEIGHT: 22px">
<a href="${ pageContext.request.contextPath }/adminCategory?method=getById&cid=${c.cid}">
<img src="${pageContext.request.contextPath}/images/i_edit.gif" border="0" style="CURSOR: hand">
</a>
</td> <td align="center" style="HEIGHT: 22px">
<a href="javascript:void(0)" onclick="deleteC('${c.cid}')">
<img src="${pageContext.request.contextPath}/images/i_del.gif" width="16" height="16" border="0" style="CURSOR: hand">
</a>
</td>
</tr>
</c:forEach>
</table>
</td>
</tr>
</TBODY>
</table>
</body>
<script type="text/javascript">
function deleteC(cid){
if(confirm("您确定要删除该分类吗?")){
location.href="${ pageContext.request.contextPath }/adminCategory?method=delete&cid="+cid; }
}
</script>
</HTML>
问题
1、varstatus items 计数 12天的教程
(二十五)后台开发-分类信息的curd -展示所有实现的更多相关文章
- python运维开发(二十五)---cmdb开发
内容目录: 浅谈ITIL CMDB介绍 Django自定义用户认证 Restful 规范 资产管理功能开发 浅谈ITIL TIL即IT基础架构库(Information Technology Infr ...
- JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题
JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序猿杜鹏程的博客:http://blog ...
- Bootstrap <基础二十五>警告(Alerts)
警告(Alerts)以及 Bootstrap 所提供的用于警告的 class.警告(Alerts)向用户提供了一种定义消息样式的方式.它们为典型的用户操作提供了上下文信息反馈. 您可以为警告框添加一个 ...
- VMware vSphere 服务器虚拟化之二十五 桌面虚拟化之终端服务池
VMware vSphere 服务器虚拟化之二十五 桌面虚拟化之终端服务池 终端服务池是指由一台或多台微软终端服务器提供服务的桌面源组成的池.终端服务器桌面源可交付多个桌面.它具有以下特征: 1.终端 ...
- Java进阶(二十五)Java连接mysql数据库(底层实现)
Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...
- webpack4 系列教程(十五):开发模式与webpack-dev-server
作者按:因为教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步<webpack4 系列教程(十五):开发模式与 webpack-dev-server>原文地址.更欢迎来我的 ...
- 二十五种网页加速方法和seo优化技巧
一.使用良好的结构 可扩展 HTML (XHTML) 具有许多优势,但是其缺点也很明显.XHTML 可能使您的页面更加符合标准,但是它大量使用标记(强制性的 <start> 和 <e ...
- C#学习基础概念二十五问
C#学习基础概念二十五问 1.静态变量和非静态变量的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.internal ...
- FreeSql (二十五)延时加载
FreeSql 支持导航属性延时加载,即当我们需要用到的时候才进行加载(读取),支持1对1.多对1.1对多.多对多关系的导航属性. 当我们希望浏览某条订单信息的时候,才显示其对应的订单详细记录时,我们 ...
随机推荐
- 关于使用uitableview 中cell 来实现uiimageview的复用和图片的异步加载
apple sample lazytableimages 1,首先设置横向显示的uitableview self.customTableview.transform = CGAffineTransfo ...
- 反混淆:恢复被OLLVM保护的程序
译者序: OLLVM作为代码混淆的优秀开源项目,在国内主流app加固应用中也经常能看到它的身影,但是公开的分析研究资料寥寥.本文是Quarkslab团队技术博客中一篇关于反混淆的文章,对OLLVM项目 ...
- Ubuntu Desktop 常用软件
IDE: eclipse ***: firefox,登陆账号可以同步书签,我用了全球账号. firefox插件:FireGestures(手势), NoSquint(全局缩放),Url to QRco ...
- go使用时间作为种子生成随机数
原文:http://blog.csdn.net/qq_15437667/article/details/50851159 --------------------------------------- ...
- SolidEdge 如何绘制局部视图 局部放大图
创建局部视图(局部放大图),先选择要创建局部放大图的视图,然后绘制一个小圆,然后绘制一个大圆即可. 如果要绘制不规则形状的局部放大图,则点击了局部放大图之后,点击绘制草图的按钮 随后可以用相切 ...
- cocos2dx3.0 2048多功能版
1.2048项目描写叙述 1.1.2048功能描写叙述 实现手机上2048的功能,同一时候具备能够删除随意一个方块的功能,悔棋功能,退出自己主动保存,启动自己主动载入功能. 1.2.2048所需技术 ...
- 小老虎CSDN博客流量分析
小老虎CSDN博客流量分析 一.分析的博客对象 http://blog.csdn.net/littletigerat 二.分析的时间节点 2014年7月10日星期四 三.PV.UV以及IP值 wa ...
- vijos1308 埃及分数(迭代加深搜索)
题目链接:点击打开链接 题目描写叙述: 在古埃及.人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数.如:2/3=1/2+1/6,但不同意2/3=1/3+1/3,由于加数中有同样的.对于 ...
- NS3网络仿真(7): Wifi节点
快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 在上一节中.我们仿真了一个总线型网络,这一节尝试将上一节中的n0变成一个无线的AP.再连上几个节点 ...
- typedef和#define的差别——————【Badboy】
typedef 和#define 都经常使用来定义一个标识符及keyword的别名.但他们之间有关键的差别. typedef 是语言编译过程的一部分; #define是宏定义语句,它本身并不在编译过程 ...