最近刚做了一个目前为止较大的项目,稍微做了下总结:
CRM项目总结报告
整体项目总结:
1、仔细阅读开发文档,并写出自己的开发文档。将要注意的地方注示出来。
2、规定好代码中的路径,action名,form 名及类名和方法名。
3、统一编码格式,用GBK/UTF-8.
4、在开写之前一定将baseDao中的方法写全面,包括分页和高级查询。
个人所做模块总结:
一、项目开始前的错误:
1.在树中路径怎么写才可跳到指定的action中(用..退到根目录)
2.action,actionForm,jsp三者name/property要统一,否则易出错!
3.刚开始做题时没有考虑周全,如未考虑分页,高级查询等,使后面添加功能的时候又要重新修改各各层
4.在多对一或多对多中,将实体中的外键删除之后一定要将xml中对应的<property>去掉.
5.写action时候,没有继承dishpatchAction,导致跳转时出现空白页面。
(尽量自己定义一个处理异常了的dishpatchAction)
二、项目开发中的错误:
1.使用BeanUtils时,后面放From里面的值,前面放被赋的对象
2.在ActionForm 里面将整个对象放入时,一定要将form 里面的对象属性和实体里面的对象属性new 出来.
3.跳转到另一页面时不需要传值时,尽量用“重定向”(添加跳转到列表中是,会将添加的值也带到显示列表中的查询窗口去);
4.高级查询时,保值的方式有1.放到session中。2.可以有hibben隐藏域的方式(用重定向的方式可以解决)。3.html标签可以自动保值.
5.在权限模块中删除角色时,dao 层里的delete方法中必须将角色所关联的用户和角色断决关系(具体做法:由于用户是多,关系是由用户维护的,故先查出角色所拥有的用户,再遍历用户,将用户和角色的关系一个个设为null;对于权限,只要维护关系的一方设为null就可以了,要
是不清楚最好双方都设为null)
6.要取出对象里面的属性对象时,用fetch抓取。
三、hql语句的错误:
1,select s.svrType,count(s.svrId) from CstService s group by s.svrType having year(s.svrCreateDate)=2007怎么改成按s.svrType分组,但要符合s.svrCreateDate的条件。。。
解决办法:select s.svrType,count(s.svrId) from CstService s group by s.svrType,year(s.svrCreateDate) having year
(s.svrCreateDate)=2007
2.高级查询中,在hql语句中将“=”和“like”混用了。
3、使用hql时,记得给对象取个名字(hql是完全面向对象的,不可出现表名,字段名)。
四、<html>标签的错误:
1.用struts标签时注意,name对应的是request中的值,property对应的是ActionFrom 中的值.
2.在jsp中用struts标签,<html:select>显示年份,不成功
解决:3
3.html中的<html:select property="form中的要收集的值"><html:optionsCollection name="request中的集合" label="集合中对像的属性(显示)" value="集合中提交上去的属性">
4.hidden的使用<html:hidden property="form里面的属性" value="提交的值">
五、配置信息的错误:
1、多对多配置反转时一定要注意,配置时只配置一边,若两边都配则失效(配置时尽量一边级联另一边反转,反转的另一边才是维护关系的)
2、一对多配置时,文件中的<clomn>是数据据中多一方连接一一方的字段名。
3、在xml文件中定义抓取的时候,把所有包含的对象都抓取出来,有时用不到时就产生了多个重复的无用的对象了。(如在分配对象中,只需要列出所有对象的一个名就可以了)解决:3
4、在使用fetch时,有时候不需要查出对象中的对象属性,可以在对象映射文件中设置lazy="false",这样既可以达到抓取的效果,不用时又不会多查出对象。(例:分配角色时,只需查出角色名放入下拉框中)
2010-11-12