中行bfw框架开发和测试资料课件

上传人:仙*** 文档编号:240925469 上传时间:2024-05-18 格式:PPTX 页数:79 大小:435KB
返回 下载 相关 举报
中行bfw框架开发和测试资料课件_第1页
第1页 / 共79页
中行bfw框架开发和测试资料课件_第2页
第2页 / 共79页
中行bfw框架开发和测试资料课件_第3页
第3页 / 共79页
点击查看更多>>
资源描述
BFW开发基础培训开发基础培训2010年年3月月共六部分内容共六部分内容:1 1、基于、基于BFWBFW的开发流程的开发流程2 2、技术重点、技术重点3 3、中行项目开发过程、中行项目开发过程4 4、中行项目的测试、中行项目的测试一、一、基于基于BFWBFW的开的开发流程流程l概述 BFW(Bocsoft Frame Work)是一个基于JAVA语言开发的,主要目标为企业应用开发中各种难点提供综合全面的解决方案解决方案。(如:多渠道整合、用户权限控制、事务处理、组件化资产管理于复用,第三方技术集成等)其核心思想是以IOC/DI容器为资产累积的平台,面对各种应用问题,开发各种有针对性的组件,提供解决方案。并形成技术资产,持续优化与扩充,鼓励充分复用,以实现最大程度内提高开发生产力的目标。BFW 分分层结构构4框架比框架比较5核心概念核心概念开开发组织架构架构7分分层介介绍bfw项目开目开发l展现层开发展现层开发l服务层开发服务层开发lDAODAO层开发层开发l产品层开发产品层开发8展现层开发展现层开发1、展、展现层结构构1服务层(通过依赖注入,在交易配置文件中定义使用)开发开发jsp页面页面委托页面查询页面撤销页面授权页面修改页面批量页面复核页面开发开发Action委托Action撤销Action授权Action复核Action修改Action批量Action查询Action交易配置文件菜单配置文件角色权限配置格式校验配置多语言支持配置文件配置文件1、展、展现层结构构2交易配置文件:交易配置文件:trs_*.xml菜单配置文件:菜单配置文件:menu_*_*.xml角色权限配置文件:角色权限配置文件:role.xml格式校验配置文件:格式校验配置文件:style.xml多语言支持:多语言支持:异常信息:异常信息:bfw_error_*_*.properties 常量信息:常量信息:constant_*_*.properties JSP页面:页面:jsp_message_*_*.properties 页面结构:页面结构:page_*_*.properties 字典消息:字典消息:dictionary_*_*.properties 下载文件标题:下载文件标题:download_titiles_*_*从交易说起从交易说起从交易说起从交易说起l交易配置文件交易配置文件trs_*.xmll最简单的交易 index 基本概念(一)基本概念(一)基本概念(一)基本概念(一)l交易 实现展现逻辑的基本要素。主要由action、fields、channels组成1.action:业务逻辑片断2.fields:输入域3.channels:呈现的选择l模版:执行流程1.每个交易对应一个预先定义的模板2.负责交易的流程控制3.对于业务逻辑片断的编程原则上都应该定义在Template中。lchain:责任链lcommand:责任链节点*Delegate CommandBFW-HTTP处理理时序序1415BFW-HTTP核心核心组件件lMainServlet作为IOC容器加载入口。作为接入适配器,负责接收HTTP请求,调用控制(MainController),并将处理结果派发给视图(View)进行渲染。lMainController完成上下文(Context)加工,负责调用BFW核心控制(CoreController),并负责异常的处理,生成视图参数,并将处理结果返回MainServlet。lView接受MainServlet发送来的数据,并负责数据的渲染呈现。BFW支持多种视图技术支持多种视图技术download,jsp,Velocity等等16配置一个配置一个BFW-HTTP交易交易l确定交易配置根据需求分析交易需要选择的模板模板确定交易使用的视图类型,型,视图地址地址编写Action实现业务逻辑编写视图页面面BFW-VIEWl视图BFW的视图定义在http.xml文件中,MainViewResolver对象下。在交易的channel属性中应配置视图类型、路径、参数型、路径、参数视图格式格式:VIEWTYPE,PATHKEY=VALUE,视图类型:URL视图通常用来呈现html通过localeMode支持国际化设定Download视图用来支持文件下载Stream视图通常用作系统间通讯Servlet视图用来调用另一个BFW-HTTP交易其他(Velocity,Dynamic.)BFW-ACTIONlAction通常我们集成AbstractExecutableAction抽象类Action还有其他的接口如:Preparable,Submitable,PageLoader,需要视选择的模板决定。基本概念(二)基本概念(二)基本概念(二)基本概念(二)l图示:下面具体步骤以下面具体步骤以 B2B的订单批量查询的订单批量查询 为例。为例。orderMulQueryAct bpeMerchantIDStyle B2BOrderNumberoption=true date10Styleoption=true date10Styleoption=true ent/b2b/b2bQueryOrderResultid=0452 ent/b2b/test id=0021 B2bPaymentService CommonService 52、定、定义交易配置文件交易配置文件1交易名称模版名称(不可重复提交)action名称提交后台的数据域格式检查名称Mvc中的视图action名称Action定义的java类注入action的依赖类页面号如何如何选择视图l页面转发:ll l ent/b2b/b2bQueryOrderResultid=0452 l ent/b2b/test id=0021l l l/*银行内部客户*/lif(cusType!=null&cusType.equals(3)lcontext.setState(1);/Action内部根据业务决定跳转的页面lStyle验证lstyle验证l bpeMerchantIDStylel B2BOrderNumberoption=truel date10Styleoption=truel date10Styleoption=truelstyle.xml:ll l falsel (16-9|2-9d)d2)/(013578|102)/(01-9|12d|301)|(16-9|2-9d)d2)/(013456789|1012)/(01-9|12d|30)|(16-9|2-9d)d2)/02/(01-9|1d|20-8)|(16-9|2-9d)(048|2468048|1357926)|(16|2468048|357926)00)/02/29)l l l2、定、定义交易配置文件交易配置文件2上面的介绍是最基本的交易定义,上面的介绍是最基本的交易定义,根据交易的不同目的、以及复杂程度,可以通过选择不同的模版、属性定义来实根据交易的不同目的、以及复杂程度,可以通过选择不同的模版、属性定义来实现。现。例如:例如:executeNoTokenTemplate 模版:可重复提交,查询页面可以使用模版:可重复提交,查询页面可以使用 executeTemplate 模版:不允许重复提交的页面必需使用模版:不允许重复提交的页面必需使用,并且对应的,并且对应的jsp页页面中要使用面中要使用 标签,来控制重复提交。标签,来控制重复提交。模版:文件上传可以使用模版:文件上传可以使用 pageLoaderTemplate 模版:准备页面可以使用模版:准备页面可以使用3、定、定义菜菜单文件文件 style_red true true CD001 tiOperate.do CD002 tiReview.do .菜单名称,在menu_zh_CN.properties中定义对应的页面显示菜单样式定义,可在BocnetClientWebContentcommoncsszh_CN中找到菜单点击对应的交易菜单对应角色权限的功能码,权限在role.xml中定义4、角色、角色权限配置文件限配置文件Role.xmlCD001 tiOperate tiAdd tiModify tiDelete .Bfw框架角色权限处理类,无需关注角色权限的功能码,在role.xml中定义此功能码下可以进行的交易操作5、格式校、格式校验对公展现层输入域格式校验包括三部分:对公展现层输入域格式校验包括三部分:1、jsp页面的校验,通过页面的校验,通过js实现,大部分校验函数实现,大部分校验函数 在在BocnetClientWebContentcommonjs-srcFormCheck.js 中定义。中定义。页面中不同格式输入域的校验方法可以参考页面中不同格式输入域的校验方法可以参考checklist。2、style校验,通过在交易配置文件中定义输入域,在校验,通过在交易配置文件中定义输入域,在style.xml中定义校验中定义校验 方法,由方法,由bfw框架进行验证。避免定义新框架进行验证。避免定义新style,尽量复用已有,尽量复用已有style。3、action中校验,前两种校验主要针对单输入域的校验,对于和业务逻辑中校验,前两种校验主要针对单输入域的校验,对于和业务逻辑 相关的复杂交易,需要在相关的复杂交易,需要在action中实现。中实现。页面面显示示jsp_message_zh_CN.propertieslL10N_7541=订单信息如下,信息如下,请复核!复核!lL10N_6296=订单号号lL10N_0033=网上网上银行行lL10N_0034=关关闭lL10N_0036=账户概概览-明明细查询-银行行账户-中国中国银行网上行网上银行系行系统lL10N_0037=关关联账户JSP页面使用面使用boc:translator 标签来来显示:示:lllllll开发阶段写成即可,上线前批程序生成页眉、眉、页脚脚page_zh_CN.propertiesl#对账服务开始#l#对账单核对-账单列表lpage.name.0471=余额对账单核对lpage.top.0471=我们在这里为您提供余额对账单核对、下载及其对应的账户明细对账单的查询与下载功能lpage.bottom.0471=1、客户点击操作项下的“核对”可进入该协议的账单界面进行核对账单操作。2、本界面上只显示尚未反馈回执的对账单(含一年内本期和非本期所有余额账单),已核对完成的协议则不予以显示l#对账单核对-账单明细lpage.name.0472=余额对账单账户明细核对lpage.top.0472=您可以在此点击查看每个账户对应的交易明细账单,并确认余额核对结果lpage.bottom.0472=1、点击“提交”,系统将保存您本次操作结果;2、点击“暂存”,将暂存您本次操作结果,您在下次登陆时可继续填写;6、jsp页面开面开发1典型的页面有三种:典型的页面有三种:1、只有数据展示的简单页面、只有数据展示的简单页面 委托、修改结果页面、详情页面委托、修改结果页面、详情页面 可选模板:executeNoTokenTemplate,pageLoaderTemplate2、有数据提交的页面、有数据提交的页面 委托、修改委托、修改 可选模板:executeTemplate3、分页页面、分页页面 复核、授权选择列表页面,查询结果页面复核、授权选择列表页面,查询结果页面6、jsp页面开面开发2提交页面提交页面 script language=JScript.Encode src=script language=JScript.Encode src=.function checkForm()if(!check_empty(form1.PayeeValue|TrfDate|TrfAmt,|)return false;.pageProcessing();return true;.编码格式Tile页面类型公用js方法引用禁止页面重复提交显示bfw异常提示信息页面提交异常返回后保留已有savedMap对象内容显示滚动条,禁止页面操作国际化定义6、jsp页面开发页面开发3提交页面提交页面 隐藏域,用来在页面间传递数据,名称要和交易中一致异常信息显示位置,和配合使用6、jsp页面开面开发4分页页面分页页面 .  7、bfw 标签llllboc:optionlboc:translatorlboc:radioll 表单防重,禁止页面重复提交。配合模板executeTemplate使用。ltrs_*.xml交易配置文件lllcassCheckConfirmResActionllllent/cass/check/cassCheckConfirmResid=04713lll34l记录当前访问链接的地址,当抛ValidationException时通过这个地址重定向到当前页面(显示bfw异常信息)actionif(accountNoObj=null)/如果没有余额调整记录,抛出异常 throw new ValidationException(bill.check.billAccDetailAdjust.detailSubmitEmpty);bfw_error_zh_CN.propertiesbill.check.billAccDetailAdjust.detailSubmitEmpty=账单核对的账号不为空页面 35l用于保留页面装载时的列表数据页面提交异常后保留已有savedMap对象的内容A的数据发送到A的结果页面显示/*设置上下文参数*/context.setData(billId,new SaveObject(billId);context.setData(billCheckDetailsSize,new SaveObject(String.valueOf(details.size();context.setData(billCheckDetails,new SavedArrayList(details);A的结果页面中包含bfw:saveMap标签,页面提交到BB抛出BfwException异常,跳回A的结果页面,之前从A带到页面的数据,希望保留显示36lboc:optionl1.列表数据来源与后台数据库ll 列表的列表的值l l相当于ll l l$item.oppFundNo/$item.oppFundName/$item.openBankl l l37lboc:optionl2.列表数据来源常量文件ll 列表当前默认选中值的数据来源l38constant.xml:1 2 3 constant.properties:#指令来源键值Ti.TransSource.1=人工Ti.TransSource.2=网银Ti.TransSource.3=SWIFTlboc:translator 1.用于显示常量(带prefix)ll l l l 根据货币码,如人民币001l#币种属性lCurrency.type.=全部lCurrency.type.000=不可选择lCurrency.type.001=人民币元39lboc:translator 2.用于国际化文本 l开开发阶段,段,标签里直接写中文即可里直接写中文即可l 40jsp_message_zh_CN.properties L10N_0372=账 号:L10N_0373=账号账号L10N_0374=别名L10N_0375=账户信息如下,如需取消关联请确认!3.用于国际化文本(javascript)if(!check_empty(balanceSelectName,)return false;escape=“js“表示自表示自动转译特殊字符,如字符串中的特殊字符,如字符串中的单引号等,通常都需要加上引号等,通常都需要加上41lboc:button注意注意value里面不需要在使用里面不需要在使用boc:translator标签,以下是,以下是错误的的boc:button name=confirm value=onclick=return confirmation();type=submit/42lboc:formatNumber格式化标签l货币格式化(需要货币码)l数字格式化 l日期格式化(支持date和string)43l生成隐藏域,根据fieldList里逗号分割的key,隐藏域的value自动取context里的data分页时,页面的结果form需要加此标签,其中包含查询form中的所有查询条件的名称context.setData(“CifNo,cifNo);context.setData(“CifName,cifName);44服务层开发服务层开发1、服、服务层的主要任的主要任务1.1.提供数据给展现层提供数据给展现层2.2.接受展现层传入的数据,并进行逻辑处理接受展现层传入的数据,并进行逻辑处理3.3.通过调用产品层与外系统交互,调用通过调用产品层与外系统交互,调用DAODAO与数据库交互,来与数据库交互,来实现以上两功能。实现以上两功能。2、服、服务层与其他与其他层之之间的的调用关系用关系展现层服务层产品层DAODatabase外部系统或后台系统3、服、服务层代代码l接口类接口类.bocnet.service.financial.CyberGiroServiceCyberGiroServicel实现类实现类com.bocnet.service.financial.impl.CyberGiroServiceImplcom.bocnet.service.financial.impl.CyberGiroServiceImpl4、接口、接口类方法的方法的实现lpublic Transaction doTransactionSubmit(public Transaction doTransactionSubmit()l对公网银生成的一笔交易记入数据库对公网银生成的一笔交易记入数据库l1.1.整理付款方、付费方、收款方信息整理付款方、付费方、收款方信息l2.2.他行收款的,验他行收款的,验cnapscnaps号与收款行名称之间是否匹配号与收款行名称之间是否匹配l3.3.验客户业务编号防重验客户业务编号防重l4.4.设置费率设置费率l5.5.限额检查限额检查l6.6.调用审批流程、置交易状态调用审批流程、置交易状态l7.7.写数据库并记录日志写数据库并记录日志5、service.xml文件配置文件配置抽象抽象Bocnet服务服务 operatorDaooverseaProductbondProduct stockProduct 抽象服务被注入全部的产品和抽象服务被注入全部的产品和DAO,所有的服务应该继承此服务,从而可以访,所有的服务应该继承此服务,从而可以访问到需要的产品问到需要的产品DAO。服务的配置及事务配置服务的配置及事务配置PROPAGATION_REQUIRED,-serviceExceptionDAODAO层开发层开发1、编写写DAO层要完成的几件事情要完成的几件事情1.1.自己编写或确认自己编写或确认(与服务层、展现层沟通与服务层、展现层沟通)相应实体类。相应实体类。2.2.书写书写sqlMap文件文件sql(可使用可使用eclipse abator插件生成后另行修改插件生成后另行修改)3.3.编写编写DAO接口及实现类接口及实现类4.4.编写相关配置文件编写相关配置文件(sqlMapConfig.xml、dao.xml、service.xml)下面以指令管理为例,简述下面以指令管理为例,简述DAODAO层的工作内容层的工作内容2、自己、自己编写或确写或确认相相应实体体类此过程需要与服务层、展此过程需要与服务层、展现层沟通现层沟通实体类从需求上说是对业实体类从需求上说是对业务实体的抽象,从技术上务实体的抽象,从技术上说就是简单说就是简单JavaBean,JavaBean,业务属性构成类的成员变业务属性构成类的成员变量,再提供量,再提供publicpublic的的get/setget/set方法就可以了。方法就可以了。这一步重要的是要与服务这一步重要的是要与服务展现层产品层有良好的沟展现层产品层有良好的沟通,变量命名合乎规范,通,变量命名合乎规范,实体类间继承关系要合理、实体类间继承关系要合理、且要方便各层使用。且要方便各层使用。3、书写写sql(具体具体语法法请参考参考 ibatis-guide)一般情况一般情况sqlsql文件是放在文件是放在sql-mappingsql-mapping目录下。目录下。以以cs-traninstSql.xmlcs-traninstSql.xml为为例例,BOCNETBOCNET项目中一直使用命名项目中一直使用命名空间,本例中namespace=“cs.traninst”,因此如果一个sql的ID是“selectTraninstByPk”,那么在系统中,该sql的唯一标识就是”cs.traninst.selectTraninstByPk”4、编写写DAO接口及接口及实现类一般情况,一个一般情况,一个DAO是对应一个数据库表,本例中是对应一个数据库表,本例中TraninstDao对应数据库对应数据库CSTRANINST表,表,DAO提供增删改查操作提供增删改查操作public interface TraninstDao/DAO接口声明接口声明insert方法,一般由方法,一般由sql生成流水号,并通过该方法将流水号返回生成流水号,并通过该方法将流水号返回 int insertTraninst(Traninst object);delete方法,返回删除条数,返回值由调用者判断是否处理方法,返回删除条数,返回值由调用者判断是否处理 int deleteTraninst(Integer traninstId);update方法,返回更新条数,返回值由调用者判断是否处理方法,返回更新条数,返回值由调用者判断是否处理 int updateTraninst(Traninst object);select 方法,一般需提供多种方法,一般需提供多种根据主键查询交易实体类,一般是用于页面显示交易明细使用根据主键查询交易实体类,一般是用于页面显示交易明细使用 Traninst selectTraninstByPk(Integer traninstId);复杂一点的查询复杂一点的查询 List selectTraninstByDynamic(Map params);5、编写写DAO接口及接口及实现类DAO实现类需继承实现类需继承SqlMapClientDaoSupport public class TraninstDaoImpl extends SqlMapClientDaoSupport implements TraninstDao private String selectTraninstByDynamica=cs.traninst.selectTraninstByDynamica;private String insertTraninst=cs.traninst.insertTraninst;public int insertTraninst(Traninst traninst)int rows=super.getSqlMapClientTemplate().update(insertTraninst,traninst)return rows;public List getTraninstByDynamic(Map params)List list=(List)super.getSqlMapClientTemplate().queryForList(selectTraninstByDynamica,params);return list;6、编写相关配置文件写相关配置文件lcs-traninstSql.xmlll l l l l l l l l l l l l l l l l l l l l l l l l t.TRANINST_ID ,l t.TRAN_DATE ,l t.CUSTACT_NO ,l t.RECEV_TIME ,l t.TRANS_TYPE ,l t.EXCH_NO ,l t.STA l ll cust.PORT_NAME as PORT_NAME,l tf.TRAN_TYPE_NAME as TRAN_TYPE_NAME,l tf.YN_PRE_MATCH as YN_PRE_MATCH,l ex.EXCH_NAME as EXCH_NAME,l ex.EXCH_TYPE as EXCH_TYPE,l ed.DELIV_NAME as DELIV_NAME l l l l left outer join AMCUST cust l on t.CUSTACT_NO=cust.CUSTACT_NO l left outer join BMEXCH ex l on t.EXCH_NO=ex.EXCH_NO l l left outer join CSTRANCONF tf l on t.TRANS_TYPE=tf.TRAN_TYPE_NO and ex.EXCH_TYPE=tf.EXCH_TYPE l l left outer join BMDELIVE ed l on t.DELIV_NO=ed.DELIV_NO l l lSELECT CSTRANINST_SEQ.NEXTVAL AS traninstId FROM DUALl l l l select ,l from CSTRANINST t l l where t.TRANINST_ID=#traninstId#l and t.TRAN_DATE=#tranDate#l ll select ,l from CSTRANINST tl l where 1=1 l and t.TRANINST_ID=#traninstId#l and t.DEAL_NO=#dealNo#l and t.CUSTACT_NO LIKE%|#custactNo#|%l and cust.PORT_NAME LIKE%|#portName#|%l and t.EXCH_NO=#exchNo#l and t.TRANS_TYPE=#tranTypeNo#l l and to_date(t.TRANS_DATE,yyyy-MM-dd)=trunc(#beginDate#)l l and to_date(t.TRANS_DATE,yyyy-MM-dd)!CDATA trunc(#endDate#)l l and t.STA IN($sta$)l ORDER BY t.TRANINST_ID DESC l 6、编写相关配置文件写相关配置文件1sqlMapConfig.xml 文件。6、编写相关配置文件写相关配置文件2Dao.xml文件BocnetDataSourcesqlMapClient 6、编写相关配置文件写相关配置文件3在service.xml中,需将新增加的dao注入的service的抽象类中,供所有service调用_entitlementControlleroperatorDaotranInstDao accountPairDaoentitlementDao产品层开发产品层开发1、产品品层的主要任的主要任务1.1.接受服务层传入的接受服务层传入的 数据数据/对象对象 2.2.组织上送后台数据,对数据进行格式化组织上送后台数据,对数据进行格式化3.3.发送数据到后台,等待后台返回数据发送数据到后台,等待后台返回数据4.4.接收后台返回数据,对数据进行解析接收后台返回数据,对数据进行解析5.5.判断交易判断交易 成功成功/失败失败,返回交易结果给服务层,返回交易结果给服务层2、各、各层之之间的的调用关系用关系展现层服务层产品层DAODatabase外部系统或后台系统外部系统或后台系统3、交易、交易处理流程理流程4、产品品层调用关系用关系说明:所有的产品层对象在说明:所有的产品层对象在product.xmlproduct.xml定义,产品类的定义,产品类的refref对象类在对象类在function.xmlfunction.xml中定义,中定义,FunctionFunction类调用的接口类在类调用的接口类在interface_ciss.xmlinterface_ciss.xml中定中定义义l1、strutsl2、springl3、ibatisl4、oraclel5、jspl6、uml二、技二、技术重点重点l1、strutsl对struts知识和开发经验的积累,有助于对bfw框架的理解。bfw的MVC部分虽未采用struts框架,但是有许多共性的东西。lMVC思想lAction,Form,Action配置l国际化l标签库l2、springl重点理解:重点理解:lIOC控制反控制反转容器容器lBean的生命周期的生命周期lAOP面向切面面向切面编程程l资源文件配置,国源文件配置,国际化消息的支持化消息的支持l中中间层数据数据访问:对ORM工具工具ibatis的支持,事的支持,事务的配置的配置l自自动化任化任务:quartz框架的使用框架的使用l远程程调用:如用:如Hessian等l测试l3、iBatisliBatis作作为一种一种ORM框架,与框架,与较主流的主流的hiberate相比,它更相比,它更轻量灵活,普遍被运用量灵活,普遍被运用于于银行金融方面系行金融方面系统的开的开发。它不是直接把。它不是直接把类映射映射为数据数据库表或者把表或者把类的属性映射的属性映射为数据数据库的字段,而是把的字段,而是把SQL语句的参数与句的参数与结果(也即果(也即输入和入和输出)映射出)映射为类。liBatis重点学重点学习:lsqlMap:使用已映射使用已映射语句句自自动结果映射果映射关关联相关数据相关数据映射参数映射参数执行非行非查询语句句动态SQLlSqlMapClientTemplate APIl4、oraclel学习重点:l程序员的基本技术功底sqll数据库优化:重点准备sql语句优化,索引优化,具有sql优化意识lPL/SQL Developer的使用lpl/sql,存储过程l5、jspl学习重点:lServlet/jsp的运用的运用lJstl标签,el表达式表达式l简单理解自定理解自定义标签的原理的原理l重点学重点学习常用常用c,fmt标签,尤其是,尤其是对fmt标签的掌握,有助于理解网的掌握,有助于理解网银bfw框架框架标签 在在货币,日期格式化方面的使用。,日期格式化方面的使用。lJavaScript技技术积累,累,简单Ajax原理和运用,与服原理和运用,与服务端端进行数据交互(懂行数据交互(懂prototype js框架使用尤佳)框架使用尤佳)l6、umll学习重点:l最基本要求,能最基本要求,能阅读Uml常用常用图:类图,时序序图l能能绘制基本的制基本的Uml常用常用图:类图,时序序图lCase工具:工具:EA三、中行三、中行项目的开目的开发过程程各各阶段工段工时占比占比四、中行四、中行项目的目的测试l代码复查l单元测试l集成测试lSITlUAT总结l面试准备内容1、自己参加的项目过程描述(符合的项目过程)2、基于BFW框架的开发流程、技术、特点和注意事项3、Spring的IOC和AOP4、JMS、MQ5、Struts的标签和自定义标签6、设计模式在SSH中的运用7、Oracle的优化(重点在SQL文的优化、常用函数及索引的建立等)78谢谢!79
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!