Proper

 
Collect from Website Template
 

WCM高级进阶(WCM JSP 页面程序编写规范)


2004年12月27日 00:00  点击:[]

对于熟悉Jsp开发的用户而言,如果您希望开发针对某一类特色频道使用不同的采集、编辑、列表等不同的后台界面(如校园风景->图片采集),或者开发系统新的功能,如下文档将对您有所帮助。

WCM JSP页面程序编写规范

1、编写目的 2

2、页面程序编写的基本原则 2

2.1程序设计风格的统一...2

2.2数据处理与界面设计的分离...2

2.3页面流程风格的统一...2

3、页面程序的基本框架 2

3.0 程序头部说明...2

3.1 JSP头部声明...3

3.2页面Cache的消除...3

3.3常量定义和页面参数声明...4

3.4检测用户是否登录...4

3.5页面参数的获取...4

3.6数据处理(核心程序段)...4

3.7界面显示部分...5

4、程序设计风格规范 6

4.1目录组织...6

4.2文件命名...6

4.3变量命名...6

4.4 Html元素命名...6

4.5 CSS风格定制...7

4.6程序注释...7

5、错误处理 7

6、分页链接的处理规范(建议) 7

7、名称缩写规范 8

1、编写目的

本文档为规范WCM项目开发中JSP页面程序的编写而制作,描述了应用WCM对象模型编写JSP页面程序所要遵循的基本规则,包括页面程序框架、数据处理和界面表现分离的原则及实现方法、程序风格、错误处理规范等等。

本文档由WCM开发组全体成员共同制定、修改和完善,并在实际开发中共同遵守该规则。

2、页面程序编写的基本原则

本部分主要描述JSP页面程序编写时,需要遵循的基本原则。

2.1 程序设计风格的统一

Ø 程序设计风格,主要体现在程序框架、程序元素(变量、函数等)命名和处理方式、程序文档布局、可读性等方面。

Ø 程序设计风格的统一,要求不同的开发者在完成不同的开发任务中,保持风格上的一致,从而便于相互交流和修改,也便于维护者接手维护。

2.2 数据处理与界面设计的分离

Ø JSP页面程序通常包含两个部分:数据的处理和界面的显示。

Ø 数据处理与界面设计的分离,即所谓内容和形式的分离,是程序设计中的一个基本原则。它有利于程序设计者和界面设计者,分别关注各自需要关注的内容而不相互影响。也利于程序的移植和修改。

2.3 页面流程风格的统一

Ø 由于Web自身的特点(请求—相应模式),决定了Web模式下的程序流程,风格不同于Client端Application。Web模式下,主要通过控制页面的切换完成用户交互界面的切换。

Ø 页面流程风格,主要包括:页面的切换、窗口的控制、提示信息的表现等等。

Ø 统一页面流程风格,有利于统一整个应用系统的流程风格,既便于用户熟悉,也便于不同开发者之间、以及开发者与维护者之间相互交流、交接。

3、页面程序的基本框架

JSP页面程序由以下几个部分构成,并依照下面的顺序构建:

3.0 程序头部说明

Ø 该部分以注释的形式,描述程序(文件)的有关说明,包括:

n 程序文件名、版本号、创建者(TRS WCM)、创建日期、最后修改日期

n 程序功能说明

n 传入参数说明

n 程序处理流程说明

Ø 示例:

//==============================================================

// userMan_listUsers.jsp

//

// Version: WCM 5.0

// Created: 2001/7/17

// Last Modified: 2001/9/6

//

// Created by: TRS WCM

// Copyright: www.trs.com.cn

//

// Description:

// 用户列表显示,用于“用户管理”。

//

// Parameters:

// Order ——由常量ORD_BY_USERNAME等定义。

// Status ——用户状态值(定义在User对象中);-1表示全部。

// Desc ——排序顺序。0:未指定;1:升序;-1:降序。

// IsSearch ——是否为检索(0:是;1:否)

// Lookfor ——要查找的用户名。IsSearch=='1'时有效,否则忽略。

//

//==============================================================

3.1 JSP头部声明

Ø 内容主要包括:

n 页面类型、编码、错误页面定向

n 程序引入的java package.

Ø 示例:

<%@ page contentType="text/html;charset=GBK" errorPage="../include/error.jsp"%>

<%@ page import="com.eprobiti.wcm.common.*,com.eprobiti.wcm.auth.* " %>

3.2 页面Cache的消除

Ø 需要消除页面Cache时,使用本段代码实现。

Ø 示例:

<%

response.setHeader("Cache-Control","no-cache"); //HTTP 1.1

response.setHeader("Pragma","no-cache"); //HTTP 1.0

response.setDateHeader( "ExpiresAbsolute", System.currentTimeMillis()-1 );

response.setDateHeader("Expires", -1 );

//prevents caching at the proxy server

response.setDateHeader("max-age", 0);

%>

3.3 常量定义和页面参数声明

Ø 如果程序使用了常量,必须在此处先声明常量。

Ø 如果页面程序有参数传入,需要先声明参数,

n 如:<%! int nOrder, nStatus, nDesc, nPageIndex; %>

n 声明时,同一类型、意义上相关的参数变量,可以在同一行声明;

否则,在不同行声明。

3.4 检测用户是否登录

Ø 从session中获取当前已登录的用户:

User loginUser = (User)session.getAttribute("loginUser"); //当前用户

Ø 如果页面要求用户必须登录,而用户实际未登录(即loginUser==null),则抛出页面异常,由错误处理页面截获处理。如:

if( loginUser==null ){

throw new WCMException( WCMException.ERR_USER_NOTLOGIN,

"用户未登录或登录超时!" );

}

3.5 页面参数的获取

Ø 从request中获取页面参数,并转换为指定类型的数据。

Ø 参数名称、意义必须以注释的形式给出说明。

Ø 如果参数缺少或非法,抛出异常,由错误页面截获处理。如:

//get the current page index

sValue = request.getParameter("Pg");

if( sValue==null ){

nPageIndex = 1;

}

else{

try{

nPageIndex = Integer.parseInt( sValue );

}

catch( Exception ex ){

throw new WCMException(WCMException.ERR_PARAM_INVALID,"无效的页号参数!");

}

}//end if

Ø 注意:该部分,仅获取参数的值即可,不对参数做进一步处理。

3.6 数据处理(核心程序段)

Ø 根据已获得的页面参数,利用WCM对象模型,提取和处理相关对象。

Ø 注意:该部分仅仅处理数据,不允许掺入界面处理部分。

3.7 界面显示部分

Ø 该部分实际上是对3.6处理得到的数据,以一定形式表现。

Ø 界面显示部分,要求尽可能的仅仅对数据显示处理,而不涉及对数据自身的处理!

Ø 采用一定的命名规则就可以将页面和程序分开,使jsp程序简洁,可读。

Ø 示例:

n 页面和程序没有分开的做法:

n 页面和程序分开的做法

...........

.................