- 浏览: 1032865 次
- 性别:
- 来自: 郑州
文章分类
- 全部博客 (605)
- 数据挖掘 (22)
- spring (40)
- 工具使用 (39)
- java (137)
- JavaScript (40)
- webwork (12)
- web (120)
- 资源 (7)
- SSH (5)
- oracle (20)
- J2ME (1)
- 环境配置 (37)
- 项目管理 (29)
- mysql (14)
- struts (4)
- 项目总结 (27)
- ibatis学习 (33)
- 学习计划 (2)
- 缓存 (7)
- 重构 (3)
- Android (1)
- jquery (12)
- UML (3)
- 用户体验 (4)
- 习惯 (7)
- sakai (1)
- urlrewrite (4)
- rss (5)
- C plus plus (5)
- 算法 (5)
- 海量数据处理 (7)
- office(word、excel) (1)
- 面试题 (3)
- solr (8)
- 大数据 (2)
最新评论
-
hujin19861102:
截图看不见,最后一个webwrok的配置看不见
Ext+Webwork+Json 实现分页表格查询效果 -
蜗牛笔:
弱弱的问一句,要是分出来的词在词典中没有,那么两部分的pos- ...
ICTCLAS 中科院分词系统 -
weipeng1986:
授人予鱼不如授人予鱼,我想问你的是你是怎么总结的。比如第四种情 ...
JAVA中字符串连接效率的测试 -
xiaoqiang2008:
执行两次的原因是什么,好像楼主没弄清楚啊!是不是在web.xm ...
关于Spring中用quartz定时器在定时到达时同时执行两次的问题 -
Kent_Mu:
...
ibatis-dynamic的用法
开发注意事项
1. 服务器端必须提供输入数据正确性的验证,客户端的Javascript验证可以没有。这是基于安全性的考虑,因为Javascript是很容易被绕过的,增加客户端验证只是为了减少服务器压力、界面更加容易使用。
2. 适度使用Session,尽量不要在Session里放很大的集合对象,以免内存消耗过大,因为很多用户访问的时候会产生很多的Session。参数传递应该尽量通过Request。熟悉HTTP有助于更好的理解Session、Cookie、Request等的机制。
3. 在带有分页的查询界面,尽量不要使用POST方法来传递参数,POST传递的参数在地址栏里是看不到的,刷新后会有重新提交表单的提示。使用GET方法传递参数要注意URL的长度不能超过1K。
4. 分层应该清晰,一般目前我们分为View(Jsp或FreeMarker加上Action)、Bean(Service)、DAO这么三层,即显示层、业务层、数据层。记录集ResultSet这种只能出现在DAO层中的对象不能出现在Bean(Service)层中,同样HttpServletRequest这种只能出现在View层的对象也不应出现在Bean(Service)层中。这并不是绝对的。
5. 尽量使用简单SQL,避免两表以及多表联查。多表联查会导致数据库压力大幅增加,而且不利于在内存中对部分记录进行缓存,代码的重用性也难以提高。
6. 避免在循环里执行findXXById这样的方法,不如执行一个findXXByIds这样的方法一次性把记录取到Map里。大部分有实际对象对应的表应该提供这样一个方法。
7. 如果使用最原始的jdbc编程的话需要注意资源的正确释放,在循环里new出来的Statement或者ResultSet就要在循环里关闭。
8. 在编写SQL进行查询的时候,需要能够判断这个SQL是否已经使用了索引,避免全表扫描,必要的时候增加索引。
9. 在写一个方法前,首先查看有没有相同功能或者很类似功能的方法已经有了,尤其是工具类方法,往往已经写过了,避免重复代码的产生,发现重复代码及时进行处理。如果一段代码被重复使用两遍或以上,那么可以考虑专门写个方法来放这段代码,同样多次使用的常量也应该专门定义出来。
10. 在一个方法里并不一定只能有一个return,如果已经有结果了尽早return,没必要增加嵌套的层次,那样会导致代码可读性不佳,但也不能return太多,代码看起来比较舒服就可以了。
11. 不要满足于能够熟练的编写DAO和Bean(Service)的代码,相比较而言,后台如果在成熟框架的支持下,编码是没有太大难度的,也不值得沾沾自喜,因为这是对Java研发工程师基本的要求。适当的培养一下前台的编码能力,学会使用Dreamweaver。不要轻视界面,也别认为这是界面设计的事情,界面对用户来说就是软件,学会编写CSS和调整界面对你没有坏处。
12. 非常明确Java和javascript作用的范围,明确它们能做的事情。
13. 一般很奇怪的现象都是由一些低级错误引起的,如果你查了一段时间也没有结果,那么让别人来查吧。
14. 不要用可能被修改的字段来做主键,那样会让相关记录的更新成为一个大麻烦。
15. 如果被迫使用Hibernate和jdbc混合操作数据库的话,不要用Hibernate来做复杂查询和统计。Hibernate用的不好的话,带来的便利是非常有限的。
16. 数据库中经常被读取,但是很少修改的话,应该把这样的数据读到内存中用OSCache之类的缓存起来,然后定期或者触发的去更新,有助于减少读数据库次数,提升性能。
17. 编码的时候应该注意部署环境带来的影响,这种影响包括操作系统不同带来路径的差异;应用服务器和数据库服务器之间时间的差异;外网可能部署在多台服务器上,放到Session里的对象因为需要复制所以要实现java.io.Serializable接口等。
18. 尽量不要在jsp上编写太多代码,保持jsp的整洁很重要,用Dreamweaver打开不至于一塌糊涂,根本看不出来这是个什么界面。
19. 目前我们的项目一般都使用Spring来管理数据库事务,而且一般都配置在Bean(Service)即业务层这一层,应该注意要保持事务的完整性,不要把一些应该放在一起的操作分散在Action这一层。相关的更新操作可以认为是一个事务,比如:增加一个家长,同时更新学生是否有家长的字段。
20. 在Spring的配置中,对于有些需要保持独立事务的方法操作,比如生成主键等,应该声明该方法为独立事务ROPAGATION_REQUIRES_NEW。Bean(Service)里如果抛出checked exception,事务默认是不会回滚的,需要加以声明,比如<prop key="*">PROPAGATION_REQUIRED,-PassportException</prop>。
21. 在一个Bean(Service)中引用其他Bean(Service)的时候尽量引用Bean(Service),而不是DAO。因为其他的Bean(Service)往往封装DAO的操作后,又做了进一步的完善,比如增加校验等,所以应该重用这些方法,而不必要去引用DAO的方法来重写这些操作。
22. 至少在Bean(Service)的接口定义上增加注释,方便他人引用你写的方法。
23. 好好利用集合框架里的Map、List、Set。尤其是HashMap、ArrayList、HashSet用的最多,这些类是多条数据操作的基础,它们都不是线程安全的。
24. 现在跑的快的页面,随着数据量的增加,可能会变的很慢,所以应该意识到页面可能变慢的原因,而不是现在看起来很快。影响速度的大部分原因是对数据库的压力太大了,在java代码执行上花费很多时间的情况是不常见的。
25. 避免不必要的跳转,如果页面执行的足够快,那么中间的载入进度提示页是不必要的,那样会让用户觉得闪烁。
26. 注意页面的文件大小,并不是每个用户的带宽都是非常理想的,文件小一点,速度快一点,总是感觉更好一点。
27. 不要去修改用户的浏览器,比如隐藏他们的地址栏、菜单、右键菜单等,这可能会引起部分用户的反感。尽量不要使用弹出窗口,可能会被拦截。
28. 网站的权限控制至少应该保证有访问权限的用户才能访问页面,通过隐藏链接之类的方法是很不安全的,用户看不见了并不表示安全了。权限的控制尽量使用框架里的拦截器这样的机制,而不是把权限控制代码写的到处都是。过滤器不宜过多的使用,不仅因为过滤器的作用范围很难控制,而且容易引起页面执行效果的混乱,错误不易排查。
29. 页面里大部分情况使用相对路径,保持Action路径层次和页面一致,这样应用就可以发布在各种目录下。
30. 最后一点,多沟通,多交流。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/icemanws/archive/2010/01/06/5144086.aspx
发表评论
-
fork/join框架
2017-03-09 11:03 465http://blog.csdn.net/ye1992/art ... -
protobuffer
2017-03-09 10:54 618http://blog.csdn.net/antgan/art ... -
整理上传代码容易忽略的注意事项
2013-08-31 11:28 1088每个公司都有自己的代码代码上传流程:如果打包发布的话,是不存 ... -
mysql版本升级引发的问题
2013-05-16 15:25 1624问题描述: 1. ibatis 中 mysql语 ... -
网站的记住密码功能设计
2013-02-27 19:09 1280http://greenyouyou.blog.163 ... -
大型网站架构演变之路
2013-02-27 19:08 1115http://www.cnblogs.com/ivanjack ... -
使用Filter统计Java(J2EE)的web程序http请求响应时间
2013-02-27 19:07 1353http://www.cnblogs.com/ivan ... -
java bean与xml相互转换
2013-02-06 10:27 2010最近在做的项目,在各个平台之间需要大量传输数据,且结构比较 ... -
java 反射
2013-01-14 18:21 794http://www.cnblogs.com/rollenh ... -
字符串替换
2012-12-17 11:17 1122高效的字符串模式替换实现效果如下 String str ... -
httpURLConnection获取网络数据:XML格式返回与Json格式返回
2012-12-15 16:57 148851.服务器端代码样例: public class ... -
利用Freemarker实现表到功能界面的一键生成
2012-11-22 18:03 985利用Freemarker实现表到功能界面的一键生成 h ... -
ibatis in ##的问题
2012-11-02 13:25 793http://www.hake.cc/a/biancheng/ ... -
ibatis缓存强制刷新与命中率
2012-10-19 19:06 1361缓存强制刷新: // spring注入 private Sq ... -
eclipse 的一些设置
2012-08-16 22:06 17241. 控制台信息太多,程序跑完后只能保留最后的一部分之前的 ... -
jdk1.5 System.arraycopy与jdk1.6 中Arrays.copyOf()&Arrays.copyOfRange()
2012-08-16 21:56 3246在JDK1.5的类System类中有方法 ... -
Eclipse报Java heap space错误的解决方案
2012-08-16 16:43 12037当运行大数量的数据时: (1) 如果是java 应用程 ... -
求两个字符串的最大公共字符串
2012-08-10 20:41 1035http://blog.csdn.net/wangcj625/ ... -
ffmpeg 截取视频 播放中的图片
2012-06-19 09:14 1280http://www.cnblogs.com/live365w ... -
memcached 项目中的使用
2012-06-13 09:29 1030http://ljh2008.iteye.com/blog/6 ...
相关推荐
本文档为百度地图开发相关文档,主要对SDK使用以及相关配置注意细节进行记录,避免走弯路,也可以解决一些配置不齐的异常(如UnsatisfiedLinkError)等。本文档内容是本人在开发时遇到的一些问题,希望能帮助更多的...
Java开发中,有很多琐碎的细节容易被我们忽视,本书算是对《Java Pazzlers》(Java解惑)的提炼
杰理蓝牙开发很有帮助,避坑宝典啊,大部分开发遇到的问题在上面都有了,能提高开发效率,特别针对新手
想开发excel运用的朋友可以看看,里面有细节的东西,个人认为算很好的了,对接口开发感兴趣的朋友也可以看看。
嵌入式注意的细节问题!嵌入式开发中易失误的细节(笔试题)
关于开发过程中注意点的小记关于开发过程中注意点的小记关于开发过程中注意点的小记关于开发过程中注意点的小记关于开发过程中注意点的小记关于开发过程中注意点的小记
关于 javascript jquery hibernate spring dwr 开发要注意的地方(容易出错、容易忽略,及性能方面影响...)
开发人员平时应该注意的细节,注意这些细节并养成良好的习惯,会对以后的开发有很大的帮助,并使你开发的程序更加good
详细总结了大数据开发工程师如何编写自己的简历,罗列出很多细节重点,如何写好自己的简历
android 游戏引擎 开发流程 及其注意的细节
开发文档资料,可以很好的帮助你注意开发中的注意细节
其中,需要开发者注意的是,本书不是介绍J2EE和如何应用J2EE的,而是关注JBoss服务器架构的内部细节及具体J2EE容器实现的配置和扩展。通过阅读本书,JBoss开发者可以深入理解标准组件的架构、集成,以及扩 资源太大...
3.3.1 开发的基石——AndroidAPI核心开发包介绍 3.3.2 拓展开发外延——Android可选API介绍 3.4 本章小结 第4章 赚钱的市场——AndroidMarket及应用发布 4.1 GoogleMarket产生背景与目的 4.2 体验“选货”的乐趣...
IOS远程推送开发手册详细的讲诉了开发一个IOS远程推送功能的步骤、代码、测试等所需的各种资源文件,注重细节,帮助同学们顺利完成IOS远程推送的开发!
学好C++编程语言需要注意的七大细节: 1. 掌握C语言的基础知识。C++是C语言的扩展,因此学好C++编程语言需要对C语言有扎实的基础知识。比如,要掌握数据类型、变量、表达式、循环、条件语句等基础知识。 2. 学会...
做Discuz! X2的插件开发也有一段时间了,不敢说对插件开发的各个细节都了解,总结了一些可能在开发中会遇到的问题,分享给喜好插件开发的童鞋们。
JeeSite 快速开发平台的主要目的是能够让初级的研发人员快速的开发出复杂的业务功能,让开发者注重专注业务,其余有平台来封装技术细节,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安全质量。
javascript parseInt() 函数的进制转换注意细节.docx
本书注重对实际动手能力的指导,在遵循技术研发知识体系的严密性同时,在容易产生错误、不易理解的环节配以了翔实的开发情景截图,并将重要的知识点和开发技巧以“小实验”、“小提醒”、“小知识”、“注意”等的...
3.3.1 开发的基石——AndroidAPI核心开发包介绍 3.3.2 拓展开发外延——Android可选API介绍 3.4 本章小结 第4章 赚钱的市场——AndroidMarket及应用发布 4.1 GoogleMarket产生背景与目的 4.2 体验“选货”的乐趣...