今天進(jìn)入可開發(fā)前的準(zhǔn)備階段。在開發(fā)項(xiàng)目前,要求每位開發(fā)小組成員都必須先閱讀以下約定,嚴(yán)格按以下約定來進(jìn)行開發(fā)。
系統(tǒng)框架
·系統(tǒng)總框架采用SUN J2EE框架,使用JAVA/XML技術(shù)和組件技術(shù), 基于Application server開發(fā)。
·項(xiàng)目中的程序必須嚴(yán)格按J2EE1.3規(guī)范來編碼,EJB建議采用2.0規(guī)范編碼,盡可能多使用EJB 模式設(shè)計(jì),參考技術(shù)文檔如下:
1.《J2EE Tutorial》
j2ee-1_3-doc-tutorial-draft5.pdf
2.《JBoss 3.0Quick Start Guide》
3.《EJB Design Patterns》
開發(fā)環(huán)境
·測(cè)試用Application server采用JAS,JAS 配置于Linux OS下,IP地址:192.168.0.6。登錄用戶名:J2EEOA,密碼:J2EEOA。登錄ftp工具建議使用SSH Secure Shell或LeapFTP,ftp地址為192.168.0.6:22。
·項(xiàng)目開發(fā)源碼目錄為/home/local/jboss/applications/J2EEOA/src,項(xiàng)目開發(fā)文檔目錄為/home/product/J2EEOA/。
· 數(shù)據(jù)庫服務(wù)器IP為192.168.0.222,數(shù)據(jù)庫采用Mysql,管理工具為phpadmin,登錄數(shù)據(jù)庫的用戶名為test,密碼為test。
源代碼目錄規(guī)范
每位開發(fā)小組成員一定要絕對(duì)遵守以下創(chuàng)建源代碼目錄的規(guī)范。
項(xiàng)目開發(fā)目錄結(jié)構(gòu)簡(jiǎn)圖:
\
|--apps
|--J2EEOA
|--admin
|--components
|--a component
|--modules
|--a module
|--lib
|--ant
|--build.properties
|
圖片6 項(xiàng)目開發(fā)目錄結(jié)構(gòu)圖
項(xiàng)目開發(fā)目錄結(jié)構(gòu)說明:
\ (說明:根目錄)
|--apps (說明:此目錄下放應(yīng)用程序的代碼)
|--J2EEOA (說明:此目錄為放J2EEOA應(yīng)用程序的代碼)
|--admin (說明:此目錄為放項(xiàng)目的admin應(yīng)用程序的代碼)
|--components (說明:此目錄下放應(yīng)用程序組件的代碼)
|--a component (說明:此目錄為放一個(gè)組件的代碼)
|--modules (說明:此目錄下放應(yīng)用程序模塊的代碼)
|--a module (說明:此目錄為放一個(gè)模塊的代碼)
|--lib (說明:此目錄下放項(xiàng)目開發(fā)工具)
|--ant (說明:Ant工具,包括bin和lin目錄)
|--build.properties
(說明:此文件定義項(xiàng)目開發(fā)共用的環(huán)境變量,
如jboss.home、jboss.configuration、servlet-lib.path等)
|
模塊、組件開發(fā)目錄結(jié)構(gòu)簡(jiǎn)圖:
\
|--build
|--etc
|--multi-langs
|--lib
|--docs
|--ejb
|-- META-INF
|--j2ee
|--META-INF
|--web
|--WEB-INF
|--src
|--ejb
|--javabean
|--servlet
|--web
|--build.bat
|--build.sh
|--build.xml
|
圖片7 模塊、組件目錄結(jié)構(gòu)圖
說明:src、etc目錄和build.bat、build.sh、build.xml為開發(fā)人員建立的目錄,build和lib目錄為由ant工具生成的目錄。
模塊、組件開發(fā)目錄結(jié)構(gòu)說明
\ (說明:一個(gè)模塊或一個(gè)組件的根目錄)
|--build (說明:保存由ant工具生成的擴(kuò)展名為jar、war、ear等文件)
|--etc
(說明:存放部署文件,如web.xml、ejb-jar.xml、application.xml、
jaws.xml、jbosscmp-jdbc.xml等)
|--multi-langs (說明:存放多語言資源文件,擴(kuò)展名為properties,)
|--lib (說明:保存由ant工具生成的API文件、class文件等)
|--docs
|--api
|--ejb
|-- META-INF
|--j2ee
|--META-INF
|--web
|--WEB-INF
|--src (說明:存放源代碼,包括java和jsp代碼,下面有四個(gè)目錄。)
|--ejb (說明:采用EJB進(jìn)行開發(fā),存放EJB和Helper Classes源代碼。)
|--javabean (說明:采用Javabean進(jìn)行開發(fā),存放Javabean和Helper Classes源代碼。)
|--servlet (說明:存放Servlet源代碼。)
|--web (說明:存放JSP源代碼。)
|--build.bat (說明:在Window OS下,進(jìn)行build的文件。)
|--build.sh (說明:在Unix OS下,進(jìn)行build的文件。)
|--build.xml (說明:Ant工具要build的目標(biāo)文件。)
|
應(yīng)用程序開發(fā)目錄結(jié)構(gòu)簡(jiǎn)圖:
\
|--build
|--etc
|--lib
|--docs
|--ejb
|-- META-INF
|--j2ee
|--META-INF
|--web
|--WEB-INF
|--team
|--a member
|--ejb
|--javabean
|--web
|--build.bat
|--build.sh
|--build.xml
|--build.properties
|
圖片8 應(yīng)用程序目錄結(jié)構(gòu)圖
應(yīng)用程序開發(fā)目錄結(jié)構(gòu)
1. 由于項(xiàng)目由多個(gè)程序員一起來進(jìn)行編碼,所以應(yīng)用程序開發(fā)目錄結(jié)構(gòu)和模塊、組件開發(fā)目錄結(jié)構(gòu)的不一樣。
2. 應(yīng)用程序開發(fā)目錄結(jié)構(gòu)沒有src目錄,但多了一個(gè)team目錄,此目錄存放所有程序員的classes和Jsp代碼。
3. 應(yīng)用程序開發(fā)目錄結(jié)構(gòu)下build.xml和模塊、組件開發(fā)目錄結(jié)構(gòu)下的build.xml有很大不同。
4. 由項(xiàng)目組長負(fù)責(zé)管理etc目錄、build.xml、build.bat、build.sh、build.properties,程序員分別管理team目錄下的屬于自己的目錄,如程序員tom管理team/tom目錄。
build.xml編碼規(guī)范
· 應(yīng)用程序目錄下的build.xml
源代碼:應(yīng)用程序目錄下的build.xml規(guī)范模板
說明:在建立build.xml時(shí),組長只需修改創(chuàng)建的時(shí)間和變量ProjectName等。
模塊、組件目錄下的build.xml
源代碼:模塊、組件目錄下的build.xml規(guī)范模板
說明:在建立build.xml時(shí),開發(fā)人員只需修改創(chuàng)建的時(shí)間和和變量ProjectName、componentName等。
編碼規(guī)范
· 項(xiàng)目中的JAVA源代碼必須按《JAVA開發(fā)規(guī)范》。
·項(xiàng)目中的JSP代碼必須按《JSP開發(fā)規(guī)范》。
· 每位開發(fā)小組成員在開發(fā)項(xiàng)目時(shí)都嚴(yán)格按此規(guī)范來進(jìn)行編寫程序,讓項(xiàng)目中所有的文檔都看起來像一個(gè)人寫的,增加可讀性,減少項(xiàng)目組中因?yàn)閾Q人而帶來的損失。
· 每位開發(fā)小組成員一定要絕對(duì)遵守這個(gè)規(guī)范。當(dāng)實(shí)際應(yīng)用與下面的規(guī)范相抵觸時(shí),記錄下原因、潛在后果,以及符合規(guī)范需要的條件,但必須是在讓程序有良好的可讀性的前提下。
功能模塊
在做業(yè)務(wù)邏輯模塊前,先把一些準(zhǔn)備工作做出來:
建立一些公用的bean(項(xiàng)目中稱為系統(tǒng)控制器controller),包名為com.cwap.oa.controller.*,提供給系統(tǒng)各模塊使用。包括對(duì)時(shí)間、字符的操作,調(diào)試器,軟件國際化,多語言版本,系統(tǒng)的WEB外殼,MVC模式的Servlet和Action,對(duì)WEB頁面顯示的控制如樹結(jié)構(gòu)、路徑結(jié)構(gòu);等等。
建立一個(gè)序列發(fā)生器,包名為com.cwap.oa.sequencegenerator.*,提供給bean使用,它用來產(chǎn)生一個(gè)唯一的ID,而且也可用來計(jì)數(shù),也就是把它當(dāng)成計(jì)數(shù)器使用。介紹如何取id的方法的文字要寫在bean的代碼內(nèi),以便生成API后供其它開發(fā)人員參閱。
建立一個(gè)ServerFacade,它為EJB Home提供統(tǒng)一的接口。ServerFacade為程序要用到的所有EJB的home handle提供緩存,提高訪問效率。以后查找JNDI Name的方法都應(yīng)寫在接口里,調(diào)用時(shí)直接從接口調(diào)用。
建立一個(gè)翻頁控制器,包名為com.cwap.oa.controller.web.page*,用來進(jìn)行分頁顯示的管理,以后頁面中的分頁都由翻頁控制器管理。
異常處理和日志
· 程序中所有的異常處理使用統(tǒng)一的調(diào)試器,bean的名稱為com.cwap.oa.controller.util.Debug,用法見項(xiàng)目API。
· 程序中所有的日志使用Jakarta-log4j管理,包的名稱為log4j-1.2.5.jar
官方URL:http://jakarta.apache.org/log4j/docs/index.html
Session
· 放在session中的變量統(tǒng)一放在一個(gè)bean里存儲(chǔ),不直接把session變量名稱放在JSP、Servlet或Bean內(nèi),存儲(chǔ)session變量名稱的bean為com.cwap.oa.controller.web.util.WebKeys,取session變量名的方法為getXX()。
· 取session變量的值的方法統(tǒng)一放在一個(gè)bean里,bean的名稱為com.cwap.oa.controller.web.util.JSPUtil,取session變量值的方法為getXX(),之后要取session變量值就調(diào)用JSPUtil中對(duì)應(yīng)的方法。
· 當(dāng)前系統(tǒng)中已知的session變量名有"userid"、"userName"、"locale"、"skin"等,userid為用戶標(biāo)識(shí),userName為用戶名稱,locale為用戶選擇的地域,skin為用戶選擇的界面風(fēng)格。
DAO
使用DAO封裝SQL語言對(duì)數(shù)據(jù)庫的直接操作,DAO采用Factory模式編寫。
組件
所有的業(yè)務(wù)邏輯使用組件技術(shù)。每個(gè)組件內(nèi)同時(shí)提供EJB版本和DAO版本兩種的方法,不推薦直接使用EJB版本和DAO版本的方法。
多語言版本
· Bean、Servlet、JSP中的多語言文字采用分離技術(shù),將多語言文字放在資源文件中,保存目錄為/WEB-INF/classes/multi-langs或其它目錄。
· 當(dāng)前支持的語言有三種:簡(jiǎn)體中文(zh_CN)、繁體中文(zh_HK)、英文(en_US)。
· 多語言管理器的名稱為com.cwap.oa.controller.util.MultiLangsString,使用方法見本項(xiàng)目API。
WEB外殼
· JSP頁面中的圖片、CSS、JS等文件都應(yīng)放在統(tǒng)一目錄,目錄為/skin/skinName/skinLanguage,其中skinName為外殼名稱,skinLanguage為外殼語言版本,例如/skin/green/zh_CN
· 圖片放在images目錄里,CSS文件放在css目錄里,JS腳本放在js目錄里,其它資源(如聲音、視頻、Flash文件等)存放方法見項(xiàng)目API。
· 外殼管理器為com.cwap.oa.controller.web.skin.WebSkin,調(diào)用方法統(tǒng)一接口為com.cwap.oa.controller.web.util.JSPUtil。
在線幫助
· 在線幫助管理器為com.cwap.oa.help.*,調(diào)用方法統(tǒng)一接口為com.cwap.oa.help.client.HelpClientHelper。
· 每一個(gè)JSP頁面中提供一個(gè)在線幫助鏈接,用戶點(diǎn)擊它直接進(jìn)入到在線幫助中心。
用戶管理
· 建立一個(gè)取用戶名稱的頁面,功能包括只取一個(gè)用戶和取多個(gè)用戶。
· 打開取用戶名稱頁面的方法,使用頁面腳本,"javascript:return openWinToGetEmployee(frame,id,name,num)",當(dāng)num為0,代表可以取多個(gè)用戶,否則,只能取1個(gè)用戶。
權(quán)限管理
· 調(diào)用方法統(tǒng)一接口為com.cwap.oa.controller.web.util.JSPUtil,檢查用戶是否有權(quán)限的方法為JSPUtil.isPermission(userid, permissions)
· JSP中檢驗(yàn)用戶身份采用include方式,include的文件為checkUser.jsp
檢驗(yàn)用戶身份是否是一般用戶,調(diào)用方法為
<jsp:include page="../include/checkUser.jsp">
<jsp:param name="type" value="user" />
</jsp:include>
|
檢驗(yàn)用戶身份是否是管理員,調(diào)用方法為
<jsp:include page="../include/checkUser.jsp">
<jsp:param name="type" value="manager" />
</jsp:include>
|
檢驗(yàn)用戶身份是否是超級(jí)管理員,調(diào)用方法為
<jsp:include page="../include/checkUser.jsp">
<jsp:param name="type" value="administrator" />
</jsp:include>
|
摘自賽迪網(wǎng):http://developer.ccidnet.com/art/322/20021014/27601_1.html, http://developer.ccidnet.com/art/322/20021014/27601_2.html
posted on 2006-09-27 14:48
Warren.Wu 閱讀(246)
評(píng)論(0) 編輯 收藏