0人贊同了該回答
? 1. 模塊命名、數(shù)據(jù)庫(kù)表命名、域模型命名、各分層的類/方法命名、頁(yè)面的命名;
模塊命名:
a. 包命名:com.project_name.module_name.action/service/dao/ws;
service的實(shí)現(xiàn)都置于com.project_name.module_name.service.impl下;
b. 接口命名遵守XxxxService,接口實(shí)現(xiàn)遵守XxxxServiceImpl;
2. 包的設(shè)計(jì)、頁(yè)面的層次結(jié)構(gòu)設(shè)計(jì)(jsp/css/js等文件的結(jié)構(gòu));
3. log、異常(聲明式異常)的約定設(shè)計(jì);
4. 鏈接、按鈕、表單提交的統(tǒng)一方式;通用式Ajax調(diào)用與頁(yè)面跳轉(zhuǎn)統(tǒng)一模型;
5. 響應(yīng)一個(gè)請(qǐng)求的分層結(jié)構(gòu)約定,列舉幾個(gè)示例(常規(guī)調(diào)用、Ajax調(diào)用、WebService調(diào)用、提供WebService暴露、硬件設(shè)備接口調(diào)用);
6. 驗(yàn)證代碼質(zhì)量的約定,如JUnit、EMMA、FindBugs、CheckStyle、PMD的使用;Hudson持續(xù)集成需注意的;
7. 壓力測(cè)試、防內(nèi)存泄漏測(cè)試;
基礎(chǔ)CSS:標(biāo)簽的各種狀態(tài)的樣式;表格單雙行的樣式;
開(kāi)發(fā)一個(gè)Action請(qǐng)求的響應(yīng):
前置條件:該Action涉及的Entity及EntityName.hbm.xml已經(jīng)準(zhǔn)備好。
步驟:
a. 前端頁(yè)面觸發(fā)Action的請(qǐng)求;
統(tǒng)一采用全路徑請(qǐng)求,URL格式:
1> basePath/web/moduleName/*_ *.action {1} ? EntityName,{2} ? ActionMethodName
2> basePath/web/moduleName/gotoXxx.action (無(wú)需調(diào)用Service,直接跳轉(zhuǎn))
包括jQuery的Ajax方式和非Ajax方式;
包括表單提交;
參數(shù)設(shè)值的方式:
1> URL參數(shù):
basePath/web/moduleName/*_*.action?entity.propertyName=paramValue¶mName=paramValue
2> 或
另外,對(duì)于表單的提交,前后臺(tái)都必須做數(shù)據(jù)校驗(yàn),SWDF已提供了此能力,進(jìn)行簡(jiǎn)單的配置即可,前臺(tái)直接提供類似以下代碼即可,點(diǎn)此查看前端校驗(yàn)詳細(xì)規(guī)則說(shuō)明。
前端校驗(yàn)示例;
后臺(tái)數(shù)據(jù)校驗(yàn),點(diǎn)此查看校驗(yàn)詳細(xì)說(shuō)明.
b. 配置struts-moduleName.xml;
直接跳轉(zhuǎn)示例;
調(diào)用Service示例;
c. 開(kāi)發(fā)對(duì)應(yīng)的{EntityName}Action類;
該類必須繼承com.hikvision.swdf.xx.BaseAction,該Action類有一個(gè)關(guān)鍵屬性entity,即泛型Entity類的一個(gè)實(shí)體,該屬性默認(rèn)填充好了請(qǐng)求提交過(guò)來(lái)的entity對(duì)應(yīng)參數(shù)(即entity.propertyName);
d. 開(kāi)發(fā)Service接口和Service接口實(shí)現(xiàn),并在Action中通過(guò)set方法注入該Service;
接口文件:UserService
接口實(shí)現(xiàn):UserServiceImpl
注入Service
e. 開(kāi)發(fā)DAO,DAO繼承com.hikvision.xxx.HibernateBaseDAO;
示例
f. 配置applicationContext-*.xml;
配置DAO bean、Service Bean、Action Bean及注入的配置;
g. 測(cè)試;
備注:
1. Action建議統(tǒng)一遵守通配符的約定,basePath/web/moduleName/*_ *.action {1} ? EntityName,{2} ? ActionMethodName
2. 統(tǒng)一命名規(guī)則:接口類似UserService,接口實(shí)現(xiàn)類型UserServiceImpl;(IUserService和UserServiceImpl)
開(kāi)發(fā)一個(gè)Action調(diào)用關(guān)聯(lián)應(yīng)用提供的WebService
前置條件:該WebService?WSDL可正常獲取
步驟:
a. 配置applicationContext-wsclient.xml;
Spring管理第三方WebService實(shí)例bean
Jaxws-client配置代碼
b. 生成第三方WebService接口文件;(提供系統(tǒng)自動(dòng)生成)
自動(dòng)生成代碼
c. 頁(yè)面調(diào)用Action請(qǐng)求,Action中注入WebService實(shí)例bean;
Action對(duì)應(yīng)方法直接調(diào)用第三方WebService的相關(guān)方法;
d. 測(cè)試;
備注:
1. 步驟b,接口文件必須同包名同類名置于src目錄下;
開(kāi)發(fā)一個(gè)Action調(diào)用關(guān)聯(lián)應(yīng)用開(kāi)放的HTTP請(qǐng)求
步驟:
1. 頁(yè)面調(diào)用Action請(qǐng)求;
2. Action類相應(yīng)方法使用封裝好的HttpClient相關(guān)工具類,準(zhǔn)備好HTTP請(qǐng)求的相關(guān)參數(shù)header參數(shù)和body參數(shù)并以xml的方式提交HTTP請(qǐng)求;
3. 解析該HTTP請(qǐng)求返回值(XML或JSON);
4. 響應(yīng)結(jié)果;
5. 測(cè)試;
備注:
開(kāi)發(fā)一個(gè)需要對(duì)第三方應(yīng)用發(fā)布的WebService
步驟:
a. 開(kāi)發(fā)WebService接口,@WebService進(jìn)行注解該接口;
b. 開(kāi)發(fā)WebService接口實(shí)現(xiàn)類,@WebService注解該實(shí)現(xiàn)類,并制定endpointInterface;
c. 配置applicationContext-ws.xml
d. 測(cè)試
備注:
開(kāi)發(fā)一個(gè)需要對(duì)第三方應(yīng)用發(fā)布的RESTful Service
步驟:
a. 開(kāi)發(fā)RS接口,提供如下Annotation;
b. 開(kāi)發(fā)RS接口實(shí)現(xiàn),并提供如下Annotation;
c. 配置applicationContext-rs.xml
備注:
所有Annotation的涵義解釋如下:
發(fā)布于2023-06-15