文档章节

JavaEE项目开发--注意事项

SXTkaifa
 SXTkaifa
发布于 2016/11/23 14:13
字数 2326
阅读 6
收藏 1
点赞 0
评论 0

版权声明:本文为北京尚学堂原创文章,未经允许不得转载。

开发注意事项

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,事务默认是不会回滚的,需要加以声明,比如PROPAGATION_REQUIRED,-PassportException。

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. 最后一点,多沟通,多交流

对于学习有困难不知道如何提升自己可以微信:858568103进行交流得到帮助,获取学习资料。

如果你的目标是就业,并且是高薪就业,那么北京尚学堂是你正确的选择。北京尚学堂一直在为改变中国IT教育努力着。十年以来,北京尚学堂坚守“为莘莘学子改变命运而讲课”这份情怀,不忘初心。感谢大家的阅读!​更多精彩内容关注微信公众号:北京尚学堂。

更多猛料!欢迎扫描上方二维码关注北京尚学堂官方微信公众号(资料领取验证消息:156)

© 著作权归作者所有

共有 人打赏支持
SXTkaifa
粉丝 3
博文 109
码字总数 250758
作品 0
太原
程序员
JAVA编程导入Word文件到数据区域,实现多个word文件合并

在开发项目时,如何通过后台编程把多个Word文档合并到一起呢,这就需要借助PageOffice开发平台中的数据区域了。 具体实现步骤如下: 第一步:拷贝文件到WEB项目的“WEB-INF/lib”目录下。拷贝...

yert
2013/04/24
0
0
spring mvc 整合 jpa 搭建基于领域驱动模型框架搭建

一、maven pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 h......

漂泊者及其影子
2014/06/16
0
0
(JavaEE-04)Servlet

Servlet Servlet是sun公司提供的一套专门用于开发动态web资源的技术 sun公司在ServletAPI中提供了一个servlet接口,如果需我们需要开发一个动态web资源,需要两步: * 编写一个Java类,实现s...

_-Leon-_
2014/06/15
0
0
JSP 学习总结---学习笔记

什么是JSP 1)为什么说,Servlet是一个动态Web开发技术呢? Servlet是基于服务端的一种动态交互技术, HttpServletRequest表示客户端到服务端的对象 HttpServletResponse表示服务端到客户端的...

知止内明
04/18
0
0
毕业设计2(解决了后台servlet的配置问题)

今天没有做太多的东西,主要是想要建立起后台,用于登录和回传数据,遇到的问题主要是一些IDE和servlet的问题, 第一就是tomcat的server.xml的设置问题,怎样将你的webapp通过server.xml的配...

土匪强
2012/01/23
0
0
spring+hibernate+struts2零配置整合

  说句实话,很久都没使用SSH开发项目了,但是出于各种原因,再次记录一下整合方式,纯注解零配置。 一。前期准备工作 gradle配置文件: version '1.0-SNAPSHOT' apply plugin: 'war' rep...

java~nick
03/21
0
0
javaweb开发之Javabean

一、Javabean概述 1. Javabean简介 Javabean是一种特殊的java类,他遵循一定的设计规范。 Javabean就是为了和JSP页面传数据化简交互过程而产生的,它在jsp中的主要作用是将功能和表现分开,...

小米米儿小
2013/12/05
0
0
开发J2EE应用遵循的关键问题

开发J2EE应用遵循的关键问题 J2EE,作为开发mission-critical的企业级应用的一整套规范的整合平台,规范多、内容广,从而给开发J2EE应用带来了很多“麻烦”。比如,为实现内容的RDBMS存储,我...

庸人谷
2013/02/20
0
1
浅谈jsp、freemarker、velocity区别

以前做web开发页面层用的基本就是就是,最近公司java项目页面层用的技术是velocity。听说jsp要淘汰,也不知道是真是假,但本人还是比较喜欢jsp的,下面是网上查找的javaweb项目页面3种技术的...

cccyb
2017/10/21
0
0
开发自定义JSF组件(5) 在JSP中用JSF组件

完整的教材: 开发自定义JSF组件(1) HelloWorld 开发自定义JSF组件(2) 使用Render渲染器 开发自定义JSF组件(3) 使用绑定变量 开发自定义JSF组件(4) 保存状态与恢复状态 开发自定义JSF组件(5)...

zhuzhiou
2013/05/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

微信小程序Java登录流程(ssm实现具体功能和加解密隐私信息问题解决方案)

文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源。 一、登录流程图 二、小程序客户端 doLogin:function(callback = () =>{}){let ...

公众号_好好学java
35分钟前
0
1
流利阅读笔记28-20180717待学习

“我不干了!” 英国脱欧大臣递交辞呈 雪梨 2018-07-17 1.今日导读 7 月 6 日,英国政府高官齐聚英国首相的官方乡间别墅——契克斯庄园,讨论起草了一份关于英国政府脱欧立场的白皮书。可是没...

aibinxiao
今天
6
0
OSChina 周二乱弹 —— 理解超算排名这个事,竟然超出了很多人的智商

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @-冰冰棒- :分享Ed Sheeran/Beyoncé的单曲《Perfect Duet (with Beyoncé)》 《Perfect Duet (with Beyoncé)》- Ed Sheeran/Beyoncé 手机...

小小编辑
今天
138
7
Android 获取各大音乐平台的真实下载地址

废话 电脑使用谷歌浏览器或者QQ浏览器的时候。。。。。。。说不清楚,还是看图吧 大概意思就是,只要网页上需要播放,只要能播放并且开始播放,这个过程就肯定会请求到相关的音乐资源,然后就...

她叫我小渝
今天
0
0
shell中的函数、shell中的数组、告警系统需求分析

shell中的函数 格式: 格式: function f_name() { command } 函数必须要放在最前面 示例1(用来打印参数) 示例2(用于定义加法) 示例3(用于显示IP) shell中的数组 shell中的数组1 定义数...

Zhouliang6
今天
2
0
用 Scikit-Learn 和 Pandas 学习线性回归

      对于想深入了解线性回归的童鞋,这里给出一个完整的例子,详细学完这个例子,对用scikit-learn来运行线性回归,评估模型不会有什么问题了。 1. 获取数据,定义问题     没有...

wangxuwei
今天
1
0
MAC安装MAVEN

一:下载maven压缩包(Zip或tar可选),解压压缩包 二:打开终端输入:vim ~/.bash_profile(如果找不到该文件新建一个:touch ./bash_profile) 三:输入i 四:输入maven环境变量配置 MAVEN_HO...

WALK_MAN
今天
0
0
33.iptables备份与恢复 firewalld的9个zone以及操作 service的操作

10.19 iptables规则备份和恢复 10.20 firewalld的9个zone 10.21 firewalld关于zone的操作 10.22 firewalld关于service的操作 10.19 iptables规则备份和恢复: ~1. 保存和备份iptables规则 ~2...

王鑫linux
今天
2
0
大数据教程(2.11):keeperalived+nginx高可用集群搭建教程

上一章节博主为大家介绍了目前大型互联网项目的系统架构体系,相信大家应该注意到其中很重要的一块知识nginx技术,在本节博主将为大家分享nginx的相关技术以及配置过程。 一、nginx相关概念 ...

em_aaron
今天
1
1
Apache Directory Studio连接Weblogic内置LDAP

OBIEE默认使用Weblogic内置LDAP管理用户及组。 要整理已存在的用户及组,此前办法是导出安全数据,文本编辑器打开认证文件,使用正则表达式获取用户及组的信息。 后来想到直接用Apache Dire...

wffger
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部