项目开发过程注意事项_第1页
项目开发过程注意事项_第2页
项目开发过程注意事项_第3页
项目开发过程注意事项_第4页
项目开发过程注意事项_第5页
已阅读5页,还剩33页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目开发流程及注意事项

、开发环境

(1)开发工具:eclipse

(2)数据库:Oracle

(3)导入代码格式化模板

1.java代码格式化模板

导入java_formatter.xml

Window-Preferences-Java-CodeStyle-Formatter-ImportProfile

2.javascript代码格式化模板

导入iavascript_formatter.xml

Window—»Preferences—*JavaScript—>CodeStyle—*Formatter-»ImportProfile

@Preferences

0▼O▼▼

typefiltertextFormatter

General

ConfiqureProjectSpedficSettinqs...

Ant

Activeprofile:

DataManagement

»Helpjavascriptjormatter▼Edit-Remove

Install/UpdateNew-Import...

Java

Preview:

JavaEE

/•**

JavaPersistence

*Asamplesourcefileforthecodeformatterpreview

*JavaScript

*/

t>Appearance

/CodeStylevarindex=0;

CleanUpvararr=[];

CodeTemplatesvarobj={

x:

Formatter

y:function()(

t>Debug}

t>Editor};

fIncludePathfunctionfoo(){

t>Validatorvarl=newObje:t();

oMaven)

functionpop(){

»Mylyn

returnarr[inde<--];

Plug-inDevelopment)

RemoteSystemsfunctionpush(elein){

Run/Debugarr[index**]=elem;

Server)

functionisEmptyO{

“Team

returnindex==0;

Terminal

)

Validation

Web

WebServices<

XML

RestoreDefaultsApply

②OKCancel

二、开发流程及注意事项

(1)创立数据库

1.建立表空间

createtablespacetablespace_name

logging

datafile'D:\oracle\Administrator\oradata\orcl\tablespace_name.dbf

size200m

autoextendon

next10mmaxsizeunlimited

extentmanagementlocal;

2.建立数据库顾客

createuseruser_nameidentifiedbyuser_password

defaulttablespacetablespace_name;

grantconnect,resourcetouser_name;

grantdbatouser_name;

3.为顾客分派表空间

revokeunlimitedtablespacefromuser_name;

alteruseruser_namequotajnlimitedontablespace_name;

4.创立项目开发所需表

createtabletablc_nomc(

column_namedata_type

)

创立表也可以使用PL/SQLDevelcper工具通过图形界面来创立表.

(2)后台代码编写(SpringMVC+Mybatis)

1.通过配置文献自动生成domaindao和数据库映射文献

酉已/mars-»src-*marsGeneratorConfig.xml文献

<?xmIversion=7.0"encoding="UTF-8号〉

<!1X)(TYgeneratorConliguration

PUBLIC*-//mybatis.org//DTDMyBatisGeneratorConfiguration1.0〃EN”

<generatorConfiguration>

数据库连接需要

<!-数据库连接开发包位置一》

<classPathEntrylocation=z/D:\program\mars\WebContent\WEB-INF\lib\ojdbc6.jar"/>

Goniexiid=oracle*targetRuntime=切物"M3。

<plugintype="">〈/p】ugin>

<commentGenerator>

<!一清除自动生成的注释一〉

<propertyname=suppressAUCommenrs*value="true"/>

</commentGenerator>

jdbc配置参数

<!-数据库连接一〉

<jdbcConnectiondriverClass=**

connectionURL=/,jdbc:oracle:thin:@127.0.0.1:1521zorcK

userld="mars"password="mars》

</jdbcConr»eclion>

<javaTypeResolver>

<[)ropertyname=^forceBigDecimaIsvva1ue="faIse”/>

</javaTypeResolver>

-domain生成位置一>

domain生成位置途径

<javaModelGeneratortargetPackage=""targetProject=二*>

<propertyname=^enableSubPackages"value="true"/>

<propertyname="trimStrings"value="true"/>

</javaModelGcnerator>

<!—数据库映射文献生成位置一》

<sqlMapGeneratortargetPackage=**targetProject=*6

<!-enableSubPackaqes:与否让schema作为包的后缀-->

<propertyname="enab1eSubPackages"value="true"/>

</sqlMapGenerator>

<!—DAO生成位置一>

ddu切位置途径

<!—type:XMLMAPPER,ANNOTATEDMAPPER—>

<javaClientGeneratortargetl,ackage=""type="XMLMAPPER"targetProject=:。

<propertyname=^enableSubPackages"value="true"/>

措施的可见性

<propertyname=z,exampleMethodVisibi1ity*value="private”/>

</javaClientGenerator>

<!-数据库表一〉首字母大写

<tableschema=**tableName=^TBL_PRACTICE*domainObjectName="Practice"alias="pra)

<propertyname="useActualColumnNames“value="false"/'

事先创立一种序列

<generatedKeycolumn="ID"sqlStatement=*SELECT

STBI,PRACTICE.NEXTVALASIDFROMDUAL'/)

</table>

</contexi|>

</generatorConfiguration>

运行bulid-mybatis.xml文献

<?xmlversion=*l.0*encoding=*UTF-8,,?>

<prnjpeldafault="gaifi1as"haspdiv=".">

<propertyname=""value=*$(basedir}*/>

<targetname="genfiles“description=,,Generatethefiles”)

<taskdefname="mb«enerator"classname=""classpath="mars-mybatis-generator-

corc-1.3.2.jar"/>

<mbgencratorovcrwrite="tru。"configfile=/,niarsGcncratorConfig.xml”

verbose=*false">

<propertyset>

<propertyrefname="/>

</propertyset>

</mbgenerator>

</target>

</project>

自动生成domain文献

自动生成dao文献

PracticeMapperextendsIMapperDAO接口继承IMapper接口DAO中的接口实现类即可自动被mybatis注册

自动生成数据库映射文献

service

service接口

package;

publicinterfaceIPracticeservice{

publicintinsert(Practcepractice);

publicintupdate(Practicepractice);

publicintdelete(PracticeExamplepracticeExample);

publicList<Practice〉select(PracticeExamplepracticeExample);

publicintcount(PractceExamplepracticeExample);

publicPracticeselectByPrimaryKey(Longi);

.•…〃根据项目需求自行添加措施

)

service接口实现类

package;

©Service

publicclassPracticeServicelmpIextendsBaseServiceimplementsIPracticeService{

privatePracticeMapperpracticeMapper=null;

©Override

publicintinsert(Practicepractice){

returnpracticeMapper.insert(practice);

}

©Override

publicintupdate(Practicepractice){

intresult=practiceMapper.updateByPrimaryKeySelective(practice);

returnresult.

}

©Override

publicintdelete(PracticeExamplepracticeExample){

intresult=practiceMapper.deleteByExample(practiceExample);

returnresult.

}

©Override

publicList<Practice>S2lect(PracticeExamplePracticeExamplei(

returnpracticeMapper.selectByExample(PracticeExaT)ple);

}

©Override

publicintcount(PracticsExamplePracticeExample){

intresult=practiceMapper.countByExample(PracticeExample);

returnresult.

)

©Override

publicPracticeselectByPrimaryKey(Longid){

returnpracticeMapper.selectByPrimaryKey(id);

}

controller

package;

@RequestMapping(7ist")

表达返回值将自动转为json格式

@ResponseBody

publicResultlist(StringtestName,StringtestUser,Pagepage){

PracticeExamplepracticeExample=newPracticeExample();

Criteriac=practiceExample.or();

if((testName!=null)&&!("".equals(testName))){

c.andTestNameLike(testName);

if((testuser!=null)&&!("".equals(testUser))){

c.andTestUserLike(testUser);

)

practiceExample.setDrderByClause("pra.iddesc");

practiceExample.set3age(page);//将分页类set入查询条件类,若不set则无分页

List<Practice>list=practiceService.select(practiceExample);

//(lisl.size());

returnnewListResult<Practice>(page.getTotalRecord(),list);

@RequestMapping(7save")

表达此参数可由前台json自动转换成本参数对象

©ResponseBody

publicResultsave(@RequestBodyPracticepractice){

practice.setTestNarre(practice.getTestName());

practice.setTestUser(getCurrentUser().getName());

practice.setTestState(practice.getTestNameO);

practice.setTestDate(newDate。);

practiceservice.insert(practice);

returnnewOperResult(true,"保留!");

©RequestMappingC'/update")

©ResponseBody

publicResultupdate(@RequestBodyPracticepractice){

if(practice.getld()!=null){

practiceService.update(practice);

)

returnnewOperResult(true,"更新!");

)

@RequestMapping("/delete")

@ResponseBody

publicResultdelete(@RequestBodyList<Long>ids)throwsMarsException{

PracticeExamplepracticeExample=newPracticeExample();

practiceExample.or().andIdIn(ids);

practiceService.dele:e(practiceExample);

returnnewOperResult(true,"删除成功!");

)

)

措施简介

list:列表直询,参数:查询条件,page对象

save:添加保留,参数:新增的对象

update:修改保留,参数:修改的对象

delete:删除,参数:删除的对象ID

(3)前台代码编写31皿

Ext.application中name值

1.model

Ext.defineCX^^

阐明皤在,model层下

命名与java类命名规则一致首字母大写

本模型的字段,也是Retd数组

fields:[{

name:'id',

可以实现排序功能

type:'Long',

sortable:true

},{

name:'testName',

type:'string,,

sortable:true

},{

name:'testDate,,

type:'Date;

convert:function(value){

vard=null;

if(value!=null){

d=newDate();

d.setTime(value);

)

returnd;

》,{

name:'testuser'.

type:'Strirg',

sortable:true

),{

name:'testState,,

type:'String',

sortable:true

]

)

2.store

Ext.define(",{

extend:",

model:"

});

view

注意命名规范及大小写尤其是别名

添加页面

Ext.define(",{

extend:",

创立别名以便通过

alias:'widget.practiceadd',

xtpe来创立该组件

buttonAlign:'center;_

frame:true,

defaultType:'textfield',

items:[{

name:'testName1,

fieldLabel:'测试名称

afterLabelTextTpl:'<fontcolcr=red>*</font>

allowBlank:false

name:'testUser1,

fieldLabel:'测试顾客匚

afterLabelTextTpl:'<fontcolcr=red>*</font>'z

allowBlank:false

),{

name:'teststate',

fieldLabel:'测i献态

afterLabelTextTpl:'<fontcolcr=red>*</font>'z

allowBlank:false

},

xtype:'datefield',

name:'testDate',

fieldLabel:'测试时间',

format:'Y-m-d',

editable:false

)

],

bulluilb;[{

text:提交,,

formBind:true,〃所有验证都通过后才可点击

disabled:true,

action:'create'

},{

text:建置',

handler:function(){

this.upCform').getForm().reset();

)

}]

));

编辑页面

Ext.define(",{

extend:'Ext.panel.Panel',

别名命名规范所有小写

alias:'widget.practiceedit',

buttonAlign:'center;

frame:true,

defaultType:'textfield',

items:[{

xlype:'hidden',

name:'id'

},{

name:'testName',

fieldLabel:'测试名称',

afterLabelTextTpl:*<fontcolor=red>*</font>',

allowBlank:false

//表单项只读

},{

name:'testllser;

fieldLabel:'测试顾客

afterLabelTextTpl:'<fontcolcr=red>*</font>'z

allowBlank:false

},《

name:'teststate',

fieldLabel:测试状态)

afterLabelTextTpl:'<fontcolcr=red>*</font>'z

allowBlank:false

},{

xtype:'datefield,,

name:'testDate'z

fieldLabel:'测试时间

format:'Y-m-d'z

editable:false

}

I

buttons:[{

text:'提交',

formBind:true,〃所有验证都通过后才可点击

disabled:true,

action:'update'

},{

text:'S£\

handler:function(){

this.up('form').getForm().reset();

)

}]

));

注意大小写及命名规范

展示页面

Ext.define(",{

extend:'Ext.panel.Panel,,

alias:'widget.practiceview,,

buttonAlign:'center',

frame:true,

items:[{

xtype:'fieldset,,

title:'基本信息

items:[{

xtype:'hidden;

name:'id'

),{

xtype:'container',

layout:'column,,

items:[{

xtype:'container,.

columnwidth:.4,

layout:'form;

items:[{

xtype:'displayfield',

name:'testName',

fieldLabel:'测试名称'

}]

}]

},{

xtype:'container',

layout:'column1,

items:[{

xtype:'container',

columnwidth:.4,

layout:'form',

items:[{

xtype:'displayfield',

name:'testUser'z

fieldLabel:'测试顾客’

}]

}]

},{

xtypp:'rnntainpr,.

layout:'column'.

items:[{

xtype:'container,,

columnWidth:.4,

layout:'form',

items:[{

xtype:'displayfield,,

name:'testState',

fieldLabel:'测试状态'

//表单项非空

}]

}]

},{

xtype:'container',

layout:'column',

items:[{

xtype:'container',

columnWidth:.4,

layout:'form',

items:[{

xtype:'displayfield',

name:'testDate,,

fieldLabel:'测蝴间'

//表单项非空

)]

}]

});

注意大〃泻和命名规范

主页面

Ext.define(",{

extend:'Ext.panel.Panel',//Form布局,查询条件与列表纵向排列

alias:'widget.practicelist',//别名

items:[{

xtype:'form',//Form布局,组件纵向排列

border:false,//去掉边框

//title:,查询到中,

itemld:'practiceListQuery',//泡件ID

items:[{

xtype:'container;

laycut:'cnlnmn',//列布局,横向排列

items:[{

xtype:'container',

columnwidth:.3,

layout:'form',

items:[{

xtype:'textfield',//文本椎

fieldLabel:'测试名称

labelAlign:'right",

labelWidth:80,

name:'testName',

maxWidth:300

}]

},

{

xtype:'container',

columnwidth:.3,

layout:'form',

items:[{

xtype:'textfield',//文本框

fieldLabel:测试顾客

labelAlign:'right',

labelWidth:80,

name:'testllser',

maxWidth:300

}]

}]

}],

buttons:[{

text:'查询',

itemld:'search'//标识名称

},{

text:'重置

handler:function(){

this.upCform').getForm().reset();//表单元素重置

)

}]

},{

xtype:'form',

border:false,//去掉边框

items:[{

xtype:'grid;//指定一种grid子元素

itemld:'practiceListGrid',//在组件中设百itemld

selModel:{

selType:"checkboxmodel"

},

rnulliSelecL:true,//可复选

loadMask:true,//可遮踹

columns:[{

text:'测试名称',〃表头该列的显示名称

datalndex:'testName',//指定Store的id字段来作为该列的value值

flex:1

//列宽

},{

text:测试顾客,〃表头该列的显示名称

datalndex:'testUser',//指定Store的name字段来作为该列的value值

flex:1

//列宽

},{

text:'测试状态’,〃表头该列的显示名称

datalndex:'teststate',//指定Store的name字段来作为该列的value值

flex:1

//列宽

},{

text:测试时间',〃表头该列的显示名称

datalndex:'testDate',//指定Store的name字段来作为该列的value值

注意书写精确的

〃列宽

力,

store:'practice.PracticeStore,,//使用的数据

dockedItems:[{

xtype:'pagingtoolbar',〃分页工具栏

store:'practice.PracticeSto-e',//分页使用的数据

dock:'bottom;//面板的停克位置为底部

displayinfo:true

//与否显示信息

}],

tbar:[{

xtype:'button',

itemld:'add',标识名称

text:'添加',

iconCIs:'icon-add'//图标

},{

xtype:'button',

itemld:'edit',标识名称

text:编辑

iconCIs:'icon-edit'//图标

},{

xtype:'button',

itemld:'delete',〃标识名称

text:删除',

iconCIs:'icon-delete'//图标

},{

xtype:'button',

itemld:'view',//标识名称

text:'查看',

iconCIs:'icon-view'//图标

)]

}]

}]

));

注意大小写及命名规范

controller

精确书写storesmodelsvievss

Ext.define(",{

extend:",

stores:['practice.PracticeStore'],

models:['practice.PracticeModel'],

views:['practice.PracticeUst1,'practice.PracticeAdd',

'practicelistbutton[itemld=search],:{//列表的查询按钮事件

click:this.searchPractice

视图层的别名

'practicelistbutton[itemld=add],:{//列表页面的按钮的itemld为addE勺点击事件

click:this.addPractice

),

'practicelistbutton[itemld=delete],:{//列表页面的按钮的itemld为add点击事件

click:this.deletePractice

,practiceaddbutton[action=create],:<//增长页面的保留按钮点击事件

click:this.savePractice

,practicelistbutton[itemld=view],:{//列表的编辑按钮事件

click:this.viewPractice

},

'practicelistbutton[itemld=edit],:{//列表的编辑按钮事件

click:this.editPractice

},

'practiceeditbutton[action=update]':{//更新页面09保留按钮点击事件

click:this.updatePractice

)

});

},

searchPractice:function(btn){

varstore=this.getStore('practice.PracticeStore');//得到practicestore

varpractice!istQuery=btn.upCpracticelist'J.queryC^practiceListQuery'JtO];//检索组件

varform=practicelistQuery.cetForm();//得到查询的form

varvalues=form.getValues(};//直询页面的所有值

varnew_params={//直询的参数

testName:values.testName,

testuser:values.testllser

);

Ext.apply(,new_params);//传递参数

store.Ioad();

}.

addPractice:function(btn){

Ext.create(",{

title:'增长测试',

width:650,

height:600,

iconCIs:",

layout:布局:自动填满容器

视图层的别名

items:[{,8ss

xtype:'practiceadd'//定义组件实例

)]

}).show();〃增长的弹出窗口显示

〉,

savePractice:function(button){

varstore=this.getStore('practice.PracticeStore');//彳导到Practicestore的store

varwin=button.up('window');//查找匹配简朴选择器的window窗口

form=win.down('form');//容器的第一层子组件,得到页面的form

varvalues=form.getValues(};//获取form中所有表单域目前值得

varmyMask=newExt.LoadMask(Ext.getBody(),{

msg:"请稍等,正在提交…“

));

myMask.show();//遮罩层显示

Ext.Ajax.request({//独工方式强交

url:'practice/save',//向服务器发送祈求时使用的URL

method:'post',//使用的)祈求方式

scope:this,

jsonData:values,//为jSQn_格式

success:function(response,options)(〃顺利执行完毕后进入success措施

varresult=Ext.decode(response.responseText);//解码(解析)JSON字符串对象

if(myMask!=undefined){

myMask.hide();//遮罩层隐藏

)

if(result.success){//接受后台发送的result状态.若result.success=true则成功,false则执行框架级提醒,此处

不需处理

Ext.Msg.alert("提醒",result.message,function(){

win.close();//弹出窗口关闭

store.loadO;//重新加载数据到Store中

»;

}else{

Ext.Msg.alert("提醒",result.message);

)

}

});

},

editPractice:function(btn){

varstore=this.getStore('practice.Practicestore');〃得到user的store

vargrid=;//得到grid

vardata=grid.getSelectionModel().getSelection()[0];//目前被选择时记录的数组

if(grid.getSelectionModel().getSelection().length==0){

ExtMsg.alert("提醒丁请至少选择一^数据!");

returnfalse;

)

varrecord=store.getByld(da-a.getCid'));//根据选择的记录,去store中获得最新数据

varview=Ext.create("z{

title:编辑测试

width:650,

height:600,

iconCIs:",

modal:true,

layout:'fit',//布局:自动填满容器

items:[{

xtype:'practiceedit1//定义组件实例

)]

}).show();//编辑窗口显示

view.down('fonn').loadRecord(record);//加载选择数据

}.

updatePractice:function(button){

varstore=this.getStore('practice.PracticeStore');//得到user的store

varwin=button.up('window');//查找匹配简朴选择器的window窗口

form=win.down(form');〃容器的第一层子组件彳号到页面H9form

varvalues=form.getValues();//获取form中所有表单域目前值得

varmyMask=newExt.LoadMask(Ext.getBody(),{

msg:"请稍等,正在提交…”

});

myMask.show();//遮罩层显示

Ext.Ajax.request({//ajax方式遛交

url:'practice/update',//向月防器发送祈求时使用的URL

method:'post;//使用的)祈求方式

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论