读书人

转:传智播客-OA(2)

发布时间: 2012-10-15 09:45:24 作者: rapoo

转:传智播客--OA(二)
1. 完成DepartmentDaoImpl各个方法的实现;这些都是固定方式;
唯一不同的是使用了HibernateDaoSupport.getHibernateTemplate()代替以前的
getSessionFactory().getCurrentSession()来完成增删改查工作;
使用它和事务管理的配置有关系;
save(), update(), delete(), get(),
-- save() 使用了persist代替save
-- update() 使用merge代替update
-- delete() 参数使用Integer代替int;
使用了load(它与get有点区别)
-- get()
-- getList()
使用了find直接查询;from Wrdepartment order by deptId;

来源:(http://blog.sina.com.cn/s/blog_5ecfe46a0100dl0k.html) - 传智播客--OA(二)_hhl_bj_新浪博客

*** 总结:DAO实现的固定模式
(1) 完成DAOImpl的增删改查功能,一般就5个基本函数;
(2) 抽取成DAO接口;

*** 总结:DAO层操作数据库;
(1) 一般肯定需要dataSource;直接配置;
(2) 事务管理由Spring提供,直接配置;
(3) 使用了Hibernate就要配置SessionFactory;

2. 完成DepartmentServiceImpl各个方法的实现,这些也是固定模式,实现同DAO;

-- 关于异常处理:
DAO层不抛出,Service层不抛出;--- 是否以后调整?不明白;

-- 关于事务管理
把事务管理放在了Service层了; -- 需要确认一下,是这里,还是DAO那里;

-- 关于注释
放在接口的定义中,而不是实现类中;

** 总结:Service实现的固定模式:
(1) 引进DAO接口;使用set方法实现依赖注入;
(2) Service层的方法基本上与DAO的方法一一对应,直接通过DAO接口调用它的方法;


3. 测试;从Service层测试;
最主要是为了测试Spring的注入和事务管理是否正常;



4. 整合Struts: Struts1.3.8
(1) jar包;
(2) WEB-INF/struts-config.xml;
-- 使用Spring的控制器;
(3) WEB-INF/web.xml
-- Struts就是配置一个Servlet:可以去文档或Exampleszhong去找;
-- Spring的beans.xml;Spring容器的配置;
这里是在web.xml中配置;容器使用了Application监听器,由Spring实现;
官方文档提供了在struts-config.xml中配置的方法:15.4.1,需要测试一下;*********
-- Spring有解决乱码问题的过滤器;
-- Spring提供了OpenSessionInViewFilter;
(4) 采用Spring以bean的方式来管理Action:需要使用DelegatingRequestProcessor替换Struts的RequestProcessor;
官方文档还提供了第二种方法:继承Spring提供的ActionSupport类; 15.4


5. 完成Web层(Struts)的Action: DepartmentAction extends DispatchAction

(1) cn.itcast.base.dao.DepartmentAction
(2) execute() : 可能是一个方法判断请求参数;
(3) /base/department/list.jsp(复制,修改);
(4) Spring来管理action:
-- struts.config.xml中按正常的struts配置方法来配置;
-- spring的beans.xml则配置一个aciton对应的bean,使用name取代id(有特殊字符)
jsp -> <action path="/department">(Struts-config.xml) -> <bean name="/department">(beans.xml);
(5) add.jsp的处理方法:
-- 打开,显示大小;
function GoAdd() {
window.open("add.jsp");
}
-- 每次打开都是一个新的页面,如何解决?
-- 每次保存add.jsp数据时,都要对输入的数据进行js判断,代码量太大;
解决:单独抽取js到一个页面;
-- 判断字段为空?*** 提供了写好的js代码库
不允许为空的,参数最小值为1,允许为空的,参数最小值为0
-- Struts的Form与实体Entity的很多属性重复,而且经常要在2者之间复制;
以前的bbs使用的BeanUtils来实现属性的复制;
-- add.jsp这个小窗口的关闭
action 结束前,request属性存一个flag属性;使用js可以反问;
var flag = '${flag}';
window.close();
-- 如何在添加结束后,刷新页面,也就是list.jsp;
-- 使用<c:forEach>生成全部的内容;
-- 乱码问题的解决:
-- action中检查传过来的中文有没有问题?正确;
-- 检查Spring的过滤器;
-- 问题:jdbc.properties
useUnicode=true&atmp&characterEncoding=UTF-8
"&atmp"不能要;
主要是这里写在了properties中去了;
以前是写在spring的配置文件beans.xml中,所以需要"&atmp"
-- mysql的ini(57)的字符集,默认为latin1,与本次乱码无关;
-- 解决添加结束后,刷新页面,直接可以看到最新的数据:
add.jsp增加结束后在关闭js代码中;
这行代码不行:window.location.href="${pageContext.request.contextPath}/department.do?act=list";
使用这个:opener.document.location="...";
*** 需要查找一下这两种用法的区别;

(6) mod.jsp与修改功能(对add.jsp的复制,修改)
-- 修改的流程与add有所不同,因为要先取到数据;
-- 增加一个隐藏的deptId属性,来保存修改的部门的id; itcastbbs常用;
-- action中使用editUI和edit两个方法来共同完成修改功能;

(7) show.jsp与查看功能(对add.jsp和mod.jsp两个模块的复制和修改)
-- 测试中发现需要改进的问题
简介太长的时候应该简短输出;
文字应该是静态的;有跑马灯的效果出现;
*** 显示的时候不要显示主键,主键是自动增长的,直接使用行号,C:forEach可以很方便的实现;

(8) 删除功能
使用Js实现;
document.Form1.action="...deptId=deptId";
然后在Action中增加上面的aciton方法delete;
将以前的添加后的js代码改为:
document.location.href="...";

再改:
Form1.action="";
Form1.btnDelete.click();
增加删除前的提示
if ( confirm("") ) {delete}

(9) 批量删除:
**** 把这个抽取出来单独做一个js学习的例子;
-- 全选:CheckAll();
-- getElementsByTagName_r("INPUT") : 获取全部的复选框;
objs[i].type.toLowerCase() == "checkbox" : 判断是否为chekbox;
objs[i].checked = event.srcElement.checked; : 判断复选框是否选中;
-- 检查批量删除的部分选中: CheckSelOnle()
-- 基本代码和全选差不多;
多增加一些判断;

-- 增加,删除,修改等结束后返回页面时的js代码:
flag的显示




----------------------------- 讨论 ---------------------------------
=== 提示信息的硬编码问题:
(1) Java代码中最好不要出现中文;
-- 使用cn.itcast.common.CommonTools定义了一些常量;
-- 也可以使用properties文件完成;


=== C3P0与DBCP的使用:
****(1) 使用C3P0代替DBCP的使用;

=== 登录模块
(1) 如果先做,屏蔽Session;
(2) 后做;
(3) 实际开发,登录后做;
(4) 大量的增删改查需要服务器重启和登录,这会导致时间的浪费;



=== 引进整个页面的框架;
-- jsp放在哪里都安全,关键是编码的质量;
-- OA这里就没有将jsp页面放在WEB-INF里面;
(1) sys.jsp:
使用了frameset实现整个的页面框架;
总体上分为上下2部分;top.jsp, index.jsp;
(2) index.jsp
table , iframe
left.jsp / info.do
主要记住左右两边的名字:
(3) js / css文件复制;

读书人网 >软件架构设计

热点推荐