(二十六)分类信息的curd-分类信息添加
分类信息添加:
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中添加一条数据
/store/WebContent/admin/left.jsp

/store/WebContent/admin/category/list.jsp

/store/src/com/louis/web/servlet/AdminCategoryServlet.java
/**
* 跳转到添加页面上
* @param request
* @param response
* @return
* @throws Exception
*/
public String addUI(HttpServletRequest request, HttpServletResponse response) throws Exception { return "/admin/category/add.jsp";
}

/store/WebContent/admin/category/add.jsp

/store/src/com/louis/web/servlet/AdminCategoryServlet.java
public String add(HttpServletRequest request, HttpServletResponse response) throws Exception {
//1.接受cname
String cname = request.getParameter("cname");
//2.封装category
Category c = new Category();
c.setCid(UUIDUtils.getId());
c.setCname(cname);
//3.调用service完成 添加操作
CategoryService cs=(CategoryService) BeanFactory.getBean("CategoryService");
cs.add(c);
//4.重定向 查询所有分类
response.sendRedirect(request.getContextPath()+"/adminCategory?method=findAll");
return null;
}
/store/src/com/louis/service/impl/CategoryServiceImpl.java
/**
* 添加分类,因为分类的信息是通过缓存中获取的,所以这里也应该从缓存中获取,首先清空下缓存
*/
@Override
public void add(Category c) throws Exception {
// 暂时 获取dao
CategoryDao cd = (CategoryDao) BeanFactory.getBean("CategoryDao");
cd.add(c); // 更新缓存
// 1.创建缓存管理器
CacheManager cm = CacheManager
.create(CategoryServiceImpl.class.getClassLoader().getResourceAsStream("ehcache.xml")); // 2.获取指定的缓存
Cache cache = cm.getCache("categoryCache"); //3.清空
cache.remove("clist");
}
/store/src/com/louis/dao/impl/CategoryDaoImpl.java
/**
* 添加分类
*/
@Override
public void add(Category c) throws Exception {
QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource());
String sql="insert into category values(?,?)";
qr.update(sql, c.getCid(),c.getCname());
}


(二十六)分类信息的curd-分类信息添加的更多相关文章
- 深度学习(二十六)Network In Network学习笔记
深度学习(二十六)Network In Network学习笔记 Network In Network学习笔记 原文地址:http://blog.csdn.net/hjimce/article/deta ...
- 模板方法模式 Template method 行为型 设计模式(二十六)
模板方法模式 Template method 上图为网上百度的一份简历模板截图 相信大家都有求职的经历,那么必然需要简历,写简历的时候,很可能你会网上检索一份简历模板,使用此模板的格式,然后替换为 ...
- FreeSql (二十六)贪婪加载 Include、IncludeMany、Dto、ToList
贪婪加载顾名思议就是把所有要加载的东西一次性读取. 本节内容为了配合[延时加载]而诞生,贪婪加载和他本该在一起介绍,开发项目的过程中应该双管齐下,才能写出高质量的程序. Dto 映射查询 Select ...
- Bootstrap <基础二十六>进度条
Bootstrap 进度条.在本教程中,你将看到如何使用 Bootstrap 创建加载.重定向或动作状态的进度条. Bootstrap 进度条使用 CSS3 过渡和动画来获得该效果.Internet ...
- 二十六、Jcreator使用初步
摘自http://blog.csdn.net/liujun13579/article/details/7751464 二十六.Jcreator使用初步 Jcreator是一个小巧灵活的Java开发工具 ...
- WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[实现篇]
原文:WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[实现篇] 元数据的导出就是实现从ServiceEndpoint对象向MetadataSet对象转换的过程,在WCF元数据框 ...
- VMware vSphere 服务器虚拟化之二十六 桌面虚拟化之View Persona Management
VMware vSphere 服务器虚拟化之二十六 桌面虚拟化之View Persona Management 实验失败告终,启动VMware View Persona Management服务报10 ...
- 第一百二十六节,JavaScript,XPath操作xml节点
第一百二十六节,JavaScript,XPath操作xml节点 学习要点: 1.IE中的XPath 2.W3C中的XPath 3.XPath跨浏览器兼容 XPath是一种节点查找手段,对比之前使用标准 ...
- 二十六个月Android学习工作总结【转】
原文:二十六个月Android学习工作总结 1.客户端的功能逻辑不难,UI界面也不难,但写UI花的时间是写功能逻辑的两倍. 2.写代码前的思考过程非常重要,即使在简单的功能,也需要在本子上把该 ...
- 使用Typescript重构axios(二十六)——添加HTTP授权auth属性
0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...
随机推荐
- GeoServer发布Heatmap
转自原文 GeoServer发布Heatmap 百度等热力图是使用开源的heatmap.js做的,但是这种解决方案的缺陷是: 1 数据量大的话,从前端通过后台查询比较费时,比如arcserver默认设 ...
- android 打开浏览器指定网页
<?xml version="1.0" encoding="utf-8"?> <!-- 定义当前布局的基本LinearLayout --> ...
- c++单元测试指南:使用google test
Reference:http://www.codeproject.com/Articles/811934/Cplusplus-unit-test-start-guide-how-to-set-up-G ...
- 进程间通信之-信号signal--linux内核剖析(九)
信号及信号来源 什么是信号 信号是UNIX和Linux系统响应某些条件而产生的一个事件.接收到该信号的进程会对应地採取一些行动.通常信号是由一个错误产生的. 但它们还能够作为进程间通信或修改行为的一种 ...
- 数组遍历 map()、forEach() 及 字符串切割 split() / 字符串截取 slice()、substring()、substr()
JS数组遍历的几种方式 JS数组遍历,基本就是for,forin,foreach,forof,map等等一些方法,以下介绍几种本文分析用到的数组遍历方式以及进行性能分析对比 第一种:普通for循环 代 ...
- 【C语言天天练(九)】动态内存分配
引言:数组的元素存储于内存中连续的位置上.当一个数组被声明时.它所须要的内存在编译时就被分配. 可是,我们能够使用动态内存分配在执行时为它分配内存. 一块内存的生命周期能够分为四个阶段:分配.初始化. ...
- python 字符串前缀
普通字符串 一般字符串都是已unicode编码,且和C类似,可以使用\来转义,比如 a = "test\ntest" print(a) 输出 test test 前面加r 在字符串 ...
- 为activity添加左右手势识别
android开发中为activity添加左右手势识别.如右滑关闭当前页面 /* * for左右手势 * 1.复制以下的内容到目标Activity * 2.目标Activity的onCreate()调 ...
- String、StringBilder和StringBuffer之间的区别
1.三者在执行速度方面的比较:StringBuilder > StringBuffer > String 2.String <(StringBuffer,StringBuild ...
- [网页游戏开发]容器的使用及自定义Tab,RadioGroup,List,ViewStack
Morn里面,容器和其他普通组件不同,无需皮肤,所以也不能从组件树种拖动创建(Tab,RadioGroup例外),只能转换而来 Morn的容器组件主要有Box,Container,Panel,Tab, ...