《Web应用开发规范.docx》由会员分享,可在线阅读,更多相关《Web应用开发规范.docx(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品word 可编辑资料 - - - - - - - - - - - - -密级: 公开Web 应用开发规范制定日期: 2021年 1 月中航国际金网公司第 1 页,共 12 页 - - - - - - - - - -精品word 可编辑资料 日期版本- - - - - - - - - - - - -版本历史简要描述信息Web应用开发规范作者2021-1-180.9.1创建该规范文档高正2021-2-30.9.2修改了目录结构规范部分高正2021-2-40.9.3增加了 js 和 css 样式规范高正- 2 -第 2 页,共 12 页 - - - - - - - - - -精品word 可编辑
2、资料 - - - - - - - - - - - - -Web应用开发规范目录1.文件编码格式. - 4 -2.目录结构规范. - 4 -3.编程规范 . - 5 -资源、配置文件. - 5 -Doc 文档 . - 6 -实体 . - 7 -Dao . - 8 -Service. - 8 -Action . - 9 -JSP. - 10 -css. - 11 -js. - 11 -4.反常处理规范. - 11 -5.数据校验 . - 12 - 3 -第 3 页,共 12 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -Web
3、应用开发规范前言本规范是在代码书写基础规范.doc基础上,对web 应用所制定的开发规范;要求所 有 web 应用项目中的全部成员遵守;对于历史系统和小范畴调整的系统(2021 年前上线的系统),开发保护人员可以依据实际情形进行实施;该规范中未尽事项,各项目组依据实际情形进行;备注:本文档中“工程名 小 ”表示工程名的全部小写字母;本文档中“模块名 小 ”表示工程名的全部小写字母;1. 文件编码格式( 1)、项目采纳UTF-8 作为默认编码;Eclipse 中的设置方式: Window-Preferences-General-Workspace ,右侧的 Text file encoding
4、中从 other 中挑选UTF-8 ;( 2)、资源文件采纳ISO-8859-1 编码;( 3)、.java 、.jsp 、.css、.js 等文件采纳UTF-8 作为文件默认编码;其他文件,【举荐】采纳 UTF-8 作为文件默认编码;Eclipse 中的设置方式: Window-Preferences-General-Content Types ,点击右侧的Text下的 Java Source File,在 Default encoding 中输入 UTF-8 ,储存;2. 目录结构规范Web应用 src/main/java cn.eavic.工程名 小模块名 小 action存放 acti
5、on 类 dao 存放 dao 类 entity存放实体类 service存放 Service 接口 impl存放 Service 实现 src/main/resource存放该 web应用所需的资源文件和配置文件 src/main/test存放 service 类的单元测试类 doc存放该 web应用相关的一些文件 db工作方案技术文档需求文档 WebRoot- 4 -第 4 页,共 12 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -Web应用开发规范 common 存放该应用的通用jsp (403.jsp、404.j
6、sp、 500.jsp 、 meta.jsp 、taglib.jsp) css存放该应用的css 样式文件 js存放该应用的js 脚本文件 images存放该应用的图片文件 WEB-INF content存放各个功能模块的jsp 页面 web.xml 应用的 web.xml pom.xml3. 编程规范Web 应用主要分如下几层:url 拜访、 JSP 中 form 提交、 ajax 调用Action 层Service 层Dao 层entity 实 体 层数据库资源、配置文件src/main/resource中存放资源文件、配置文件等;资源文件:( 1)、资源文件的命名:资源文件命名如下:自定
7、义名称 _语种 _国家 .properties例如:- 5 -第 5 页,共 12 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -Web应用开发规范globalMessages_en_US.properties;(英文)globalMessages_zh_CN.properties;(中文)(2)、资源文件内部条目的命名原就: 全部是小写字母;用圆点分割的三个部分组成:功能模块名 . 类别 . 自定义部分, 针对每一个部分,如是由多个单词组成,就用下划线进行分割;其中“类别”部分的内容如下:.菜单相关:menu.标题相关:
8、title.按钮显示文字相关:button.提示文字相关:alert.警告文字相关:warn.确认文字相关:confirm.消息文字相关:message.属性字段相关的定义:field.验证相关的定义:validate.其他很难归类的定义:label示例: system.field.last_update_date =最终更换时间;配置文件:指Spring 配置文件、 acegi 配置文件、 struts配置文件、数据库链接池配置文件等;Spring 配置文件的命名为:applicationContext_自定义部分 .xml;acegi配置文件的命名为:applicationContext_
9、security.xml;struts配置文件的命名为:struts.xml;数据库链接池配置文件的命名为:proxool.xml;Doc 文档存放本web 应用相关的文档,依据项目情形,工作方案、数据库、需求等有变化时,要求做到文档同步更新;( 1)、doc/db :必需要有 db.changelog.txt 文档,其内容为:数据库创建SQL,后期变更 记录,依据时间正序排放,参考如下样例:- 6 -第 6 页,共 12 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -Web应用开发规范/*创建数据库 SQL人员: xxx
10、日期: 2021-10-01*/ createtableUSERS (IDintegerprimarykeyGENERATED ALWAYSASIDENTITY, LOGIN_NAMEvarchar(20)notnullunique,PASSWORD varchar(20),NAME varchar(20),EMAILvarchar(30);createtableROLES (IDintegerprimarykeyGENERATED ALWAYSASIDENTITY, NAME varchar(20)notnullunique);; ;/*实体: x.java数据表名: x人员: xxx操作:
11、新增字段对原有数据是否有影响:无日期: 2021-10-01*/altertablexaddcolumnyvarchar( 1000 )defaultnull;/*实体: x.java数据表名: x人员: xxx操作:修改记录对原有数据是否有影响:是日期: 2021-10-23*/updatexsety=001whereid=334323;updatexsety=002whereid=355431;updatexsety=006whereid=321114;updatexsety=008whereid=543233;(2) doc/ 技术文档:存放开发规范及本应用所需技术帮忙参考等;(3) d
12、oc/ 开发方案:存放本web应用的开发方案;(4) doc/ 需求文档:存放本web应用的需求文档;实体映射数据库中的表,并在各层之间传递数据;( 1)、采纳注解的方式来进行映射该实体和数据库表;( 2)、必需继承自公司框架的cn.eavic.framework.entity.BaseEntity类;( 3)、实体的命名要接近或等价于数据库表名,名称中具有面对对象的特点;( 4)、类定义时,必需添加Entity 、SequenceGenerator 、Table、Cache标签;( 5)、各成员的排放次序为:成员属性;属性的 set 、get 方法;自定义方法;重载自 Object的方法如t
13、oString(),hashCode(),equals();- 7 -第 7 页,共 12 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -Web应用开发规范( 6)、属性定义时,加/ 注释,其中包含其中文含义,字段的类型及长度;如有必要的话也要描述其常量取值范畴;( 7)、常用 annotation注解及其使用规范,参见annotation使用规范 .doc ;Dao负责数据库操作,完成实体的储存、读取等;全部的数据库操作都在这层完成,不答应在其他层进行数据库操作( 1)、类定义时,必需添加Repository标签;( 2
14、)、必需继承自公司框架中的cn.eavic.framework.orm.hibernate.GenericDao类;该基类中已定义了基本的增、删、改、查操作,能满意大部分需求;( 3)、对于方法的命名:常用方法依据如下统一命名:参照GenericDao 中的方法命名;get(PK id):读取指定 ID的实体; save(T entity):储存指定实体;delete() :删除实体;find() 、findAll() 、findPage() :查找;其余方法依据情形自定,但是必需满意 代码书写基础规范.doc 中所定义的方法的命名规范;Service业务处理层,负责业务处理过程,通过Tran
15、sactional标签添加了事务处理才能,每个方法都是事务掌握的,如子方法仍未开启事务,就spring自动开启事务,如父方法(调用方)已存在事务,就spring自动接管该事务;( 1)、接口:必需继承自公司框架的cn.eavic.framework.service.GenericManager接口;接口的命名方式:实体名Manager,例如: UserManager;( 2)、实现类:必需继承自公司框架的cn.eavic.framework.service.impl.GenericManagerImpl 类;实现类的命名方式:实体名ManagerImpl ,例如: UserManagerImp
16、l ;必需放于子包impl中;( 3)、实现类定义时,必需添加Service 和Transactional标签;( 4)、通过 Autowired 自动注入相应的dao;( 5)、优先使用基类供应的方法完成操作;( 6)、对数据库的操作,要交给dao 层完成;( 7)、必需对传入的参数进行合法性验证;( 8)、对于具有事务特点的业务处理过程,必需放在一个方法中来执行;- 8 -第 8 页,共 12 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -Web应用开发规范Service1Service2Service3图中红色表示已
17、经处于同一个事务处理中;(9)、对于仅查询而不修改数据的方法(即不参加数据库的修改),建议在方法定义上添加 Transactional(readOnly = true)标签;(10)、是否采纳接口开发,依据项目情形由项目架构师打算;(11)、方法的命名:常用方法依据如下统一命名:getXXX(.):获得某实体;示例:getUser(Long id);findXXX(.):依据条件获得实体列表; deleteXXX(.):删除某实体; saveXXX(.):储存某实体;其余方法参照上面常规方法命名,并且要满意 代码书写基础规范.doc 中定义的方法的命名规范;( 12) 、常用 annotati
18、on注解及其使用规范,参见annotation使用规范 .doc Action( 1)、命名规范:实体名+Action ,例如 UserAction;( 2)、如 action 是“增、删、改、查”型,就必需继承自公司基础框架的抽象类:cn.eavic.framework.web.BaseAction;并且必需实现BaseAction 的抽象方法: list()、prepareModel()、input()、delete()、save() ;( 3)、命名空间 Namespac的e 定义:依据项目和模块实际情形进行定义;( 4)、方法的命名:常用方法依据如下统一命名:list():进入列表;p
19、repareModel():进入 input()和save() 方法之前,且 ongl 封装数据前进入的方法;可依据实际情形拆分成preporeInput()、preporeSave()方法分别表示进入 input()和 save() 前执行的方法;- 9 -第 9 页,共 12 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -Web应用开发规范input():进入编辑、查看页面; save() :新增、修改后的储存;delete():执行删除; batchDelete():批量删除;其余方法依据代码书写基础规范.doc 中
20、定义的方法的命名规范来命名;( 5)、采纳 Convention 插件实现零配置文件;Convention 的使用方法,参见公司wiki :中文: http:/192.168.102.114/wiki/index.php/Convention_%E4%BB%8B%E7%BB%8D英文: http:/192.168.102.114/wiki/index.php/Convention_Plugin( 6)、所用到的 service,必需通过 Autowired 自动注入;( 7)、如有分页,就Page定义为默认 10行;( 8)、关于反常处理,参见本文档第4部分“反常处理规范”部分;JSP( 1)
21、、 WebRoot/common文件夹中存放的jsp为通用 jsp ,例如: 403.jsp、 404.jsp、500.jsp、meta.jsp、 taglibs.jsp等;( 2)、 jsp 页面中的meta 部分,通过引入meta.jsp完成;( 3)、 jsp 页面中的标签(s、c 、e 等标签),统一放入taglibs.jsp;( 4)、反常页面应当设计成具有友好提示、隐匿反常细节的页面;( 5)、 javascript脚本尽量不直接写在jsp文件中,而是写入相应的js文件,并引入它;( 6)、页面中尽量采纳标签的方式,而不是使用的方式;( 7)、jsp 中的 js 和 css 文件和
22、图片文件的引用路径、action路径等必需为肯定路径,而非相对路径,例如:( 8)、文件命名规章:全部是小写字母,单词间加横杠分割;列表页面为action前缀名称;示例:如action的名称为AccompanyApplyAction,就列表页名称为accompany-apply.jsp录入、编辑页面为action前缀名称 +横杠 +input ;示例:如action的名 称为 AccompanyApplyAction,就录入、编辑页名称为 accompany-apply-input.jsp- 10 -第 10 页,共 12 页 - - - - - - - - - -精品word 可编辑资料 -
23、 - - - - - - - - - - - -Web应用开发规范其他页面跟action中所执行方法的return字符串有关,只要保持一样即可;示例:如action的名称为AccompanyApplyAction,部分内容为:publicStringview ()throwsException .return view-detail ;就程序执行完view 方法后所进入的jsp页面为 accompany-apply-view-detail.jsp ;css本应用所用样式统一放入css.css样式文件, jsp中不建议另写样式;可依据实际情形有多个css样式文件;js不勉励在 jsp 页面中直接
24、写 javascript 脚本,除非必要, 尽量将通用的脚本放入js.js文件中, 不同模块所用的js文件可以独立成js文件;4. 反常处理规范(1)、重新抛出的自定义反常必需保留原先的反常,即throw new NewException(message, e); 而不能写成throw new NewException(message);(2)、在全部反常被捕获,且没有重新抛出的地方必需写日志;(3)、在 action、service、dao 各层之间反常的抛出过程如下图所示:捕获反常反常处理页面截获并提示;抛出反常Action层抛出反常Service层抛出反常Dao 层注:(1)、捕获act
25、ion反常的 jsp 页面尽量设计成具有友好提示、隐匿反常细节的页面;(2)、 action在某些情形是需要捕获反常的,依据需要进行;例如前台页面通过ajax方式提交、修改数据等操作,需要处理完毕后,返回给前台一个胜利与否的提示;(3)、 dao、service层都不需要额外捕获反常,假如的确需要捕获反常,就捕获后仍要再次抛出该反常;- 11 -第 11 页,共 12 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -Web应用开发规范5. 数据校验前端校验:通过 javascript脚本进行数据合法性验证,【举荐】使用jquery的 validate插件,该插件的优点是功能强大而且简单把握;缺点是该插件要跟jquery的相应版本对应;后端校验:对于需要验证的表单数据,action层必需验证;Service层的方法中,仅对其所负责的参数进行校验;Struts2供应了两种方式来完成表单数据校验:一种是采纳编码校验, 另一种是采纳xml配置文件方式校验;目前暂定为编码校验方式;- 12 -第 12 页,共 12 页 - - - - - - - - - -
限制150内