笔记整理-工作半年时的心得

写在前面:刚工作半年的时候,还能及时自我总结,但是随着工作时间的增长,这类心得,记录的很少了,想想自己总是埋头工作,没有输出,真的感觉不怎么好,趁着自己还比较闲,就把曾经笔记上的心得整理下发出来好了,也算是给新入门的同行说说自己经历过的坑。

1、在SHH 框架下,action 中的调用数据库的方法,在 dao (Data Access Object) 中要写出如何实现,是sql还是hql,不要在action里写sql,要搞清楚业务层,逻辑层。

2、前台后台的交互上,要注意以下问题:

    1)前台调用后台方法,有参数的,要传参;

    2)后台方法进行前台请求处理后,记着返回处理结果给前台(依托公司的BaseAction 、BaseDao 等有现成的可用方法);

    3)传参的过程,判断是否为null 是否为空("")很有必要,可以省去一些不必要 DEBUG ;

    4)如果涉及到编码问题(因为字符集浏览器等问题导致乱码时),一般情况是前台进行编码,后台再进行解码处理;

    5)常见的前台grid 行列存在,但是其中数据为空,有很大的可能是由于前台相关字段名称和后台的model 中的不匹配,以此类推,如果存在前台后台字段不匹配,会发生无数据,或者传值为空等情况。在grid 等要显示后台数据的地方,要注意前后台的字段匹配,在传参时,传向后台的参数也是需要注意这个问题(传参时,注意XX= 这部分的 XX 要和后台匹配);

3、对于主表查子表的结构,最好有删除主表中某一条,子表中的关联数据一起删除的功能。

service的写法例如:

publicboolean delete(Type type) {
    List<TypeSon> list = sonDao.findByTypeId(type.getId());
    if (list != null && !list.isEmpty()) {
        for (TypeSon ts : list) {
            sonDao.deleteEntity(ts);
        }
    }
    return dao.deleteEntity(type);
}
ps:在使用@PersistenceContext(unitName="defaultPersistenceUnit") protectedEntityManager

em; 的情况下,以编码表为例。

4、表单的相关代码很常见,尤其要注意编码转换、空格验证、必填项、表单位置等问题。

    1)表单中的备注,一般可以选用textarea ,要注意 textarea 的开始于结束之间不能放空格,可以直接放一个 <s:property /> 。

    2)空格验证,可以使用jQuery 的 $.trim(xxx); 。

    3)必填项,可以根据不同的开发框架选择,比如easyUI 自带了必填验证。

    4)编码转换,最好是项目统一编码,而在服务器(tomcat等)的配置中也要设置好相关的选项。

5、写sql时,用的临时命名,可以理解为是原表的一张子表(实际是简写别名表),但是,只是虚拟的表,可以通过这个命名,来对原表进行查询操作。

6、活用for的高级循环,可以更快的处理一些数据量不大的数据的转码之类的问题,且高级循环可以自行验证列表数组等,是否为empty。但是涉及到数据删除,还是用基础循环比较好。

7、struts2的反射机制(action中的getter&setter)确保前台传值的准确性。如果前台直接传了null,可能会是传为 String 类型的null,也可能是会由于没有值设置为 undefined ,具体情况要看struts2的源码是如何运行的。所以前台传值的时候,一般传过来的都会默认为是String (由于JavaScript 中给的 var 比较灵活,所以基本默认是String),这是,前台能处理的 "" 和 null 都先进行一下处理,后台经过struts2 的反射机制,也最好再判断一次值的情况,减少null 和 undefined的报错。

PS:这种报错不是逻辑错误,是编程上的细节失误,也要尽可能的避免。

8、其实DHX也是有 select 的过滤器的,可以不是只用纯文本。

9、项目中的框架整合,不是采用myeclipse自带的包(spring等),而是从外面导入现成的整合好的几个框架的包。

10、注意JavaEE 6 的包中的验证(注解验证)默认是打开的,如果整合的SSH 的版本不是太高,最好删除验证包或者在hibernate的配置文件中关闭验证。

11、hibernate能自动生成的有很多,不是只有model 。具体的需要对hibernate要熟悉,或者说去深入学习。

12、在选用hibernateTemplate时,可以考虑直接用 sessionFactory,hibernateTemplate 实际是对session 的一种封装,运行的效率上,更推荐用sessionFactory 。PS: hibernateTemplate 实际是Spring 的,所以,在 DAO 会产生逻辑上的交叉,在放弃使用 spring 时会产生大量报错,导致不必要的麻烦。

13、监听器的启动顺序是优先于过滤器的,所以 ,在配置时,放在过滤器的前面还是后面都无所谓。

14、其实list 的判空,最好结合判断:

if (null ==list || list.isEmpty()) {
    //list为空的操作
} 
// or 
if(null == list || list.size() == 0) {
    //list为空的操作
}
PS:也可以写作list.size() < 1 。

15、记录一个不错的清空form的jQuery语句:

$(':input','#myform')
.not(':button, :submit, :reset, :hidden')
.val('')
.removeAttr('checked')
.removeAttr('selected');
16、EL表达式也是一种需要熟悉的JSP上(实际是JS用)常用的表达式。语法为 ${ } ,其中可以加入各种具体要执行的语句。具体可以参看相关资料。

PS:在web开发中有四个作用域分别为:page , request , session , application 。${id}表示会从作用域中取得数据。如果没有在EL表达式中指明它会默认的从小到大寻取。分别为page、request、session、application。

17、时刻记住在后台考虑出现null 的情况,包括对象、以及各个参数。可以适当的避免后台传过来的值类型不一致。

18、前台面对各个操作,都要在成功或者失败处处理,进行判断或者处理。在前台与后台交互后,对结果进行预处理,保证不产生其他问题。然后进行其他的步骤。

19、用户会对程序进行何种操作,无法预知,要尽可能的在后台预处理,并在处理时加入异常处理,在合理的位置捕获和抛出合理的异常。

20、在对于读取库中数据显示列表的这类功能,不能依赖于库中已有的数据,要预防在码表中加入新的数据导致的无法读出新修改的数据。可选的处理方法是:

    1)直接读取码表中的响应字段,进行处理。

    2)对于读出的码表数据,可以采用List 或者是 Map 进行处理。

    3)将相关集合的长度传给前台,前台显示的数据列表的大小内容由该大小动态控制。

21、在接手改他人源代码时,先看一遍,熟悉下结构,咨询下思路。

22、调整前台时,可以选择的做法是:

    1)浏览器DEBUG条(首选,最好熟练浏览器的相关工具);

    2)页面位置不对,可以逐个的显示出样式,用这个办法找到冲突的样式。

23、对于地址栏真是页面信息隐藏的方法, 可以采用:urlrewrite 这个国外的插件。

24、建立一个不带修饰词的类,视为是默认该包的类,换而言之,是包级私有。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值