收藏 分销(赏)

Java项目开发平台开发规范方案.docx

上传人:二*** 文档编号:4711327 上传时间:2024-10-10 格式:DOCX 页数:36 大小:105.65KB 下载积分:5 金币
下载 相关 举报
Java项目开发平台开发规范方案.docx_第1页
第1页 / 共36页
本文档共36页,全文阅读请下载到手机保存,查看更方便
资源描述
Java工程开发平台开发标准 北京东方国信电子CRM事业部 时间:2003-8-27 目 录Java工程开发平台开发标准1 一、开发平台概述2 二、技术综述2 1、Struts框架技术2 2、Hibernate数据持久化技术4 3、动态bean技术9 三、在BONC-JONE平台上进展开发12 1、BONC-JONE平台目录说明12 2、如何使用BONC-JONE运行起来13 3、开发有关标准性要求及典型步骤13 四、主要函数及使用技术方法说明36 如何使用自定义标签犀? 36 如何使用日志类写日志? 38 如何进展资源注册? 41 如何进展登陆权限验证? 41 如何进展字符转换? 41 如何对资源文件进展字符转换? 41 如何配置、读取应用配置信息? 41 如何打包 boncpersistenceobj. jar 文件? 41 数据操作方法的原理是怎样的? 41 如何将任意文件上传到数据库中,义如何下载? 41 如何保证在页面清空的字段能正确提交到数据库? 41 如何使用日期控件? 42 如何使用DBQuery类进展数据查询? 42 如何白动生成Hibernate持久化beans及map文件? 42 如何使用分页技术? 44 附录:45 附A: Struts学习精要参考45 附B: Hibernate学习精要■参考45 附C:技术备忘45 定义了五种属性访问策略,使得属性的访问代码像脚本一样在运行时决定,另外一 个进步就是它支持List和Map属性的元素属性,也就是扩展javaBean属性机制它不把 一个Bean的某个List和Map成员看成一个整体属性,而是动态地把这个List和Map 成员的元素看成属性,这样无疑提供了 一种无限扩展Bean属性的能力。 Common-beanut i I s 1.6中的propertyUt i I s实用类使用Java语言的内省反射功能实 现扩展属性的设置器和获取器。propertyUti Is定义了引用一个特定Java bean属性的五种 格式: ■ 简单属性,格式 beanName. propName。propName 标识了 JavaBean beanName 的 一个属性,这个属性的获取器和设置器的方法是通过JavaBean的标准内省功能 决定的。如果要改变简单属性的值,必须要有设置器操作,可以想象成类似调 用 beanName. [getpropName () | setpropName (va I ue)];嵌套属性,格式 beanName. propNamel. propName2. propName3。像简单属性一样, 第一个propNamel元素被用来选择一个属性获取器方法,在这个方法退回的对 象上使用propName2的获取器方法返回下一个对象,最后这个对象的属性 propName3被访问或设置,可以想象成类似调用 beanName. getpropNamel (). getpropName? (). [getpropName3 () | setpropName3 (va I ue)]索引属性,格式beanName. propName[ index] 0属性propNamel可以是一个数组, java, ut i I. List或者JavaBean beanName有索引属性获取器和设置器操作。 bean只需propName的获取器方法,可以想象成类似调用beanName. [getpropName (index)|setpropName (i ndex,vaIue)]: ■ 映射属性,格式 beanName. propName (key)。propName 是一个 java. util. Map 实现。bean 只需propName的萩取器方法,可以想象成类似调用beanName. getpropName0. [get("key")|set("key",value); ■ 组合属性,格式 beanName. propNamel. propName2[i ndex]. propName3 (key) 0• 动态bean: 动态bean具有动态属性,也就是说可以由程序运行时构造bean的属性,而不是像标准 的javaBean在编译时决定一个bean的属性。 定义和访问一个动态bean的步骤如下: ■ 定义一个动态属性Dynaproperty数组,动态属性Dynaproperty定义了 一个属 性的名字和对象类型; ■ 用定义好的动态属性数组实例化一个动态类; ■ 由动态类返回一个动态bean; ■ 可以用propertyUti Is访问和设置动态bean的属性。 下面是定义和访问动态bean的代码: // TestDynaBean. javaimport org. apache mons.beanut iIs. *; import java.ut iI. pub Ii c cI ass TestDynaBean { pub Iic static void ma i n (Str i ng[] args) {TestBean bean = new TestBean (); Object vaIue = null;try( Dynaproperty[] px = (new Dynaproperty ("subord i nate", bean.getClass ()), new Dynaproperty ("f i rstName",Class. forName(" java. lang. Str ing")), new Dynaproperty("IastName",Class. forName ("java. lang. Str i ng")) };DynaClass dynaCIass = new BasicDynaClass("employee",null, px ); DynaBean empIoyee = dynaCIass. new Instance ();propertyllt i I s. setproperty (emp I oyee, "subord i nate", bean); propertyllt i I s. setproperty (emp I oyee, "subord i nate. I i st I ndexed [0]", "dy bean set");propertyllt i I s. setproperty (emp I oyee, "f i rstName", "Fred"); propertyllt i I s. setproperty (emp I oyee, " I astName","FIi ntstone"); System, out.pr intIn ("subordinate. Iist Indexed[0]:");System, out. pr i nt I n (propertyllt i I s. getproperty (emp I oyee, "subord i nate. I i st Indexed[0]")); System, out. pr intIn("fi rstName:" +propertyllt i I s. getproperty (emp I oyee, "f i rstName")); System, out. pr i nt In("IastName:" +propertyllt i I s. getproperty (emp I oyee, " I astName")); )catch (Except i on e )(System, out. pr i nt I n (e. toStr i ng ()); } )} 从配置文件配置动态bean的动态属性好处在于既能固定又能更改动态Bean的属 性,这些属性是这个动态Bean对外界的宣布的"访问协议"。动态属性Dynaproperty的 主要构造函数承受两个参数:第一个为属性名称,为字符串性,第二个为属性的类型, 为Class类型。从配置文件读取的资料普通为字符串型,我们可以用ClassLoader把配 置文件中字符串型的属性类型转化成Class类型的属性类型。 下面 struts 1. 1 中 struts-exampIe. war 的 formbeans, xml 中的片断表达了如何 在配置文件中定一个动态bean的动态属性: <form-bean name="IogonForm"type="org. apache, struts, vaI idator. DynaVaI idatorForm"> <form-property name="username" type="java. lang. String"/> <form-property name二"password" type="java. lang. String"/> </form-bean> 下面RequestUtils的代码片断表达了如何从字符串表示的属性类型转化成Class型 的属性类型: pub I i c stat i c Class appIi cat i onCI ass (Str i ng cIassName)throws CIassNotFoundExcept i on { // Look up the cI ass loader to be usedClassLoader cIassLoader = Thread. currentThread (). getContextC I assLoader ();i f (cIassLoader — null) ( c I assLoader = RequestUt i I s. c I ass. getC I assLoader (); } // Attempt to Ioad the specified cI ass return (cIassLoader. IoadCI ass(cIassName)); } 这就是关于动态bean的所有奥秘,RequestUt i I s类:代码片断pub I i c static Act ionForm createAct ionForm就是这样创立动态bean的。 三、在B0NC-J0NE平台上进展开发 1、BONC-JONE平台目录说明注意:com. bone mon、com. bone, secur i ty包属于开发平台根本支持包,其中的文件不 允许开发人员改动。 2、如何使用BONG-JONE运行起来 将开发平台从source safe拉下来后,只需要将src目录下的bonc_init. properties 文件中 boncHome二的路径改为你所下载目录的实际路径,如: boncHome=D: \\Deve IopWork\\java\\boncCrm\\examp I eroot\\WEB-INF,做了 这样的设置后, 系统启动时就会到这个目录下去找我们的工程配置文件bonc_conf i g. xml。 如果你使用的是Jbuilder,还应该将I ib目录下的所有包文件,参加到你工程的Required Libraries 中。 做完以上工作bonc-jone应该就可以正常运行了。 3、开发有关标准性要求及典型步骤 • 应用的包的组织规那么客户关系工程中所有与应用模块相关的包均应在com. bone, erm包下,如果开 发的是其他工程那么根据工程名称来定义这个包名称,可能是这样的: com. bone, samp I e 等。 ■ 在com. bone, erm包之下,以模块名称来分包,比方:模块名称是“留言模块〃, 就要定义一个与其对应的包com. bone. erm. module, leavewordo在各模块包下再分为bean包〔存放Form bean及其他本模块可能要用到的 bean〕action包〔存放Act i on类〕与buss i nessmanager业务管理包〔存放业 务管理接口 类〕,比方:com. bone. erm. module, leaveword, act ion、 com. bone. erm. module, leaveword, bean 与 com. bone. erm. modu I e. I eaveword, buss i nessmanager 包。 ■ 在各模块的业务管理包下再定义业务管理实现类包〔impl包存放业务管理接口 的实现类〕,比方:com. bone. erm. module, leavev/ord. buss i nessmanager. imp I o ■ 包定义的要求:全部小写字母定义。 • 应用开发中主要编写的类的作用Form bean类:建议开发中尽量使用动态Form bean〔即根据struts的配置支 件生成的动态bean〕,特殊情况下才写Form bean类。该类是一个ValueObject 对象,主要的作用是包装客户端请求,将数据从view层传给Action类,由 Action类转给业务处理类进展处理:或者由Action类更改或填充其中的数据, 然后将其传给view层来显示。 ■ Action类:Action类主要完成三方而的功能,其一是做登陆及权限验证,其 二是做数据校验,其三〔也是最主要的)员责完成与控制有关的功能。需要注 意的是尽可能不要此类中包含业务处理功能。 ■ 业务管理接口类:该类是对业务对象进展操作的抽象,是一个接口,对该业务 对象的操作均应通过它来进展。 ■ 业务管理抽象类:这种类实现或局部实现业务管理接口中定义的方法,业务操 作的大局部代码均应该写在这个类中。由于这个类是个抽象类,所以它不能够 被实例化。 ■ 业务管理实现类:这种类是业务管理抽象类的继承类,通常情况下其中无实际 代码。 应用开发中关键的配置文件的意义及功能 ■ web. xml文件:是Web应用最根本的部署描述配置文件。 部署Web应用首先要配置web. xml文件。开发人员需要在Web. xml部署描述文件中 配置: 有效的部署描述文件必须包含DTD声明: <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc. //DTD V/eb Applicat ion 2. 2//EN" "://java, sun /j2ee/dtds/web-app_2_2. dtd">web-app标记是部署描述文件的根元素,它的子元素包括: 元素 描述 icon 此元素指定在GUI工具中表示此Web应用的大图标和小图 标,包含一个sma 1 l-icon和一个large-icon元素,可使 用GIF或JPEG格式的图像 d i sp1 ay-name 此元素提供在GUI工具中此模块的短名字 descr i pt i on 此元素提供关于父元素的描述性文本 d i str ibutab1e 如果在Web应用部署描述中使用该元素,就表示该Web应 用可以部署到分布式Servlet容器 context-param 此元素包含Web应用的Servlet环境的初始参数 servlet 包含一个servlet的声明性数据 servlet-mapping 在servlet和ur 1模式间进展映射 session-config 声明此Web应用的Session参数 mime-mapping 定义扩展名和mime type间的映射 v/e 1 come-f i 1 e-1 i st 包含we 1 come-f i 1 e子元素的顺序列表 error-page 包含一个错误代码或违例类型与web应用中资源的映射 taglib 用于描述一个JSP标记库 resource-ref 包含一个对外部资源的引用声明 secur ity-constraint 用于为一个或多个Web资源集合指定相应的平安约束 login-config 用于配理身份筌定的方法,此应用使用域名,以及通过表 单登录机制那么需要设置此属性 secur ity-role 包含使用于web应用中<secur i ty-constr iant>元素的平 安角色的声明 env-entry 包含应用环境变量的声明 ejb-ref 用于声明对EJB的引用 ServletContext初始化参数: context-param标记的子元素包括: param-name : 参数名 param-va I ue : 参数值 description :参数的描述信息 例如: <context-param><param-name>my_context_param_name</param~name> <param-vaIue>Context Param VaIue</param-vaIue><descr i pt ion>param descr i pt ion</descr ipt ion> </context-param> Sess i on 配置 session-config标记的子元素包括: session-timeout : session 超时时间 例如: <session-config><session~t imeout> 30</sess ion~t imeout> </session-config> Servlet/JSP 定义 servlet标记的子元素包括: icon :在GUI X具中的显示图标 servlet-name : servlet 名称 d i sp I ay-name :在GUI X具中的显示名称 descr i pt ion :描述信息 servlet-class | jsp-f i le : servlet 类名称;jsp 文件的完全路径 init-param :初始化参数列表 Ioad-on-startup : web应用启动时装载 secur ity-role-ref:定义平安引用角色 servlet-mapping标记的子元素包括: servIet-name : servlet 名称 例如: <servIet>< i con> <smaIl-icon>smaI I. gif</smaIl-icon><Iarge-icon>IargeI. gif</1arge-icon> </icon><servIet-name>my_servIet</servIet-name> <d i spIay-name>my_servIet</d i spIay-name><descr i pt i on>my_servIet</descr i pt i on> <servIet~cIass>com. apus ic. test. MyServIet</servIet~cIass><init-param> <param-name>my_i n i t_pa r am</pa r am-name><param-vaIue>Init Param VaIue</param-vaIue> <descr i pt i on>param descr i pton</descr i pt ion> </i nit-param><Ioad-on-startup>1</Ioad-on~startup> <secur ity-roIe~ref><descr i pt i on>roIe descr ipt ion</descr i pt i on> <roIe-name>my_secur ity_roIe_name</roIe-name><roIe-1i nk>Secur ity Ro Ie L i nk</roIeT i nk> </secur i ty-roIe-ref> </servIet> Serv I et/JSP 映射 ur l-pattern : servIet 映射的 URL 模板 <servIet-mapp i ng><servIet-name>my_servIet</servIet~name> <urI-pattern>/my_url_pattern</url-pattern> </servIet-mapp i ng> MIME类型映射 m i me-mapp i ng的子元素包括: extens i on :扩展名 mime-type : MIME 类型 例如: <mime-mapping><extens ion>txt</extens ion> <mime-type>text/pI a i n</mime~type> </mime-mapp i ng> 欢送文件列表 we I come-f i I e-1 i st标记的子元素包括: we I come-f i I e :作为块省的欢送文件名 例如: <weIcome-file~li st><weIcome-f i Ie> index, jsp</weIcome-f i Ie> <weIcome-fi Ie>index, html </weIcome-f i Ie><weIcome-file> index, htm</weIcome-file> </we Icome-file~list> 错误页面 error-page标记的子元素包括: error-code | exception-type :的错误代码;异常类型 location :资源在Web应用中的位置 例如: <error-page><error-code>404</error-code> <Iocat i on>ErrorPage. jsp</locat ion> </error-page> <error-page><except ion-type>Except i on Type</except ion~type> <locat ion>ErrorPage. jsp</locat ion> </error-page> 平安 secur ity-constraint 标记的子元素包括: web-resource-col lection :用于区分资源子集和web应用内使用平安约 束的这类资源的方法。如 方法未被指定,平安约束将适用于所有 的 方法。 auth-constraint :指定允许访问此资源集合的用户角色。在此处使用的 角色必须在<secur ity-role~ref>元素中进展定义 user-data-constra int :于指出客户端和容器间的数据交换的保护方式 login-config标记的子元素 包括: auth-method :用于为Web应用配置身份鉴定机制。作为对使用身份 签定约束保护的任何W e b资源取得访问的先决条件,用户必须使用已 配置的身份鉴定机制进展鉴定。此元素的合法值为“BASIC”、“DIGEST” 、 “FORM” 或 “CLENT-CERT” realm-name :指定在 根底授权中的域名form-log in-config :定义Web应用中使用的登陆页面可被找到的位 置 secur ity-role标记的子元素包括: descr i pt ion :描述信息roIe-name :平安角色的名字 例如: <secur i ty-constra i nt><web-resource-coIlection> <web~resource-name>Name</web-resource-name> <descr i pt i on>descr i pt</descr i pt ion>一、开发平台概述 BONC-JONE开发平台是北京东方国信电子技术遵循“简单、有效、先进、可扩〃的原 那么,通过整合Struts 1. 1与Hibernate 2. 1等优秀的开源技术设计并实现的一个J2EE 开发平台。 其架构图如下: 这个体系架构的主体是MVC架构。MVC是Model/View/Control的缩写。 Mode I /V i ew/Contro I是软件设计的典型构造。在这种设计构造下,一个应用被分为三个局 部:Model、View和Control ler,每个局部负责不同的功能。Model是指对业务数据/信息 的处理模块,包括对业务数据的存取、加工、综合等;View是指用户界面,也就是面向用 户的数据表示:Controller那么负责View和Model之间的流程控制,也就是完成两个方向 的动作:1.将用户界面(View)的操作映射到具体的Model,以完成具体的业务逻辑;2.将 通过Model处理完的业务数据及时反响到用户界而(View)上。 其系统组成构造图如下: • 分层系统构造还限制隔层依赖的发生,各层的通讯是由顶向下管理的。某一层仅依 赖于直接位于它下面的那一层。每一层对其他层的存在都是不知道的,除非那一层 紧邻其下。即使是对紧邻其下的层它也仅需要知道如何使用接口与其通讯就可以 了,而无需知道其实现细节。 B0NC-J0NE开发平台通过Struts+Ti les技术实现了 MVC模式中的表示层和控制层,通 过Hibernate技术结合动态Bean技术融合成独特的业务Beans技术构建了数据层。 二、技术综述 1、Struts框架技术Struts是一个基于J2EE的MVC框架。 J2EE体系包括JSP、Servlet、EJB、WEB SERVICE等多项技术。这些技术的出现给电子商务 时代的WEB应用开发提供了一个非常有竞争力的选择。但怎样把这些技术组合起来,形成一<urI-pattern〉/secur i ty/*</urI一pattern〉 〈/web-resource-co I lection〉<auth~constra i nt> <roIe~name>defauIt</roIe~name></auth-constra i nt> </secur ity-constra i nt> <Iogi n-conf i g><auth-method>BASIC</auth-method> <reaIm~name>DefauIt</reaIm-name> </Iogin-config> <secur ity-role><descr i pt i on>roIe desc</descr i pt ion> <roIe~name>defauIt</roIe~name> </secur ity-role> 标签库配置: Tagl ib标记的子元素包括: tag I ib-uri:统一资源标识符(URI)参数,可以自由命名。 tagl ib-location:标签库描述文件的实际位置。 例如: <tagIi b><taglib-ur i>/WEB-1NF/BoncTagLib. 11d</tagIib~ur i> <tagIib~locat i on>/WEB-1NF/BoncTagLi b. 11d</tagIib-locat i on></tagli b> <tagI i b> <tagIi b~ur i >/WEB-1 NF/struts-bean. 11d</tagIi b~ur i > <tagIi b~Iocat i on>/WEB-1 NF/struts-bean. 11d</tagIib-locat ion></tagli b> <taglib><tagIi b-ur i>/WEB-INF/struts-html. tld</tagli b~ur i > <tagl i b-1ocat i on>/WEB-1 NF/struts-htm1.11d</tagI ib-locat ion></tagli b> <taglib><tagIi b~ur i >/WEB-1 NF/struts-logic. 11d</tagIib-ur i> <tagI i b-1ocat i on>/WEB-1 NF/struts-logic, tld</taglib-location></tagli b> <tagIi b><tagIi b-ur i >/WEB-lNF/struts-t iIes. 11d</tagI i b-ur i > <tagI i b-1ocat i on>/WEB-1 NF/struts-t i Ies. tld</taglib-location></tagli b> </web~app>看来web. xml的配置是很多的,但在开发中我们需要进展的配置并不多。 在bonc-jone开发平台的web. xml中根本不需要开发人员变动已有的配 置。唯一需要由开发人员进展的配置是增加各模块的struts配置文件路 径,例如: <web~app><servIet> <servIet~name>act ion</servIet~name> <servIet~cIass>org. apache, struts, t iIes. Act i onComponentServI et</servIet~cIass> <init-param><param~name>confi g</param-name> <param~vaIue>/WEB-1 NF/struts-conf i g. xml, /WEB-1 NF/struts-conf i g-yourmodueI. xml, /WEB-1NF/struts-confi g-other. xmI</param-vaIue> </init-param> • ♦ • </servlet> • • • </web~app>■ Struts配置文件:是Struts柜架的中心配置文件,通俗地说是Struts应用的 地图。 以下是Struts配置文件的根本构造: <?xml version=',1.0" encoding=" ISO-8859-1" ?><!— Struts Config XML - Sample Struts App —> <!— ============================== —><!-一 AutoGenerated from : c:\dev\javaworld\app\sample.vsd —> <!— AutoGenerated on : 02-18-2003 23:05:47 --><!—AutoGenerated by : Struts GUI v2. 11(c)2002 Al ien-Factory ―> <!--: See '://alien-factory.co.uk' for detai Is —> <!— (SET YOUR STICKY FINGERS OFF! i.e. Do not edit.—><!DOCTYPE struts-conf ig PUBLIC "-//Apache Software Foundation//DTD Struts Conf iguration 1. O//EN""://Jakarta, apache, org/struts/dtds/struts-confi<struts~config> <!— ===================== Form Bean Definitions ==================—> <form~beans> <form-bean name="testForm" type="org. apache, struts, act ion. DynaActionForm" dynamic="true"> <form-property name="testproperyt" type二”java. Iang.Str i ng"/> </form-bean></form-beans> <! — ============ GI oba I Forward Def ini ti ons ================ —><gIobaI-forwards> </gIobaI-forwards><!― ===================== Action Def initions ==================== —><action-mappings> <act ion path="/Login" type="com. agiI quest, onboard, presentat ion. act ions. Logi nAct ion" name=" testForm" vaIidate="true" scope="request" ><descr i pt i on>Authent icates and author i zes a user. </descr iption> <forward name="success" path="ti le. loginPage"/></act ion> </act i on-mappings></struts-config> 开发人员进展开发时主要是配置form-beans中的form-bean及action-mappings 中的 act iono注意:在bonc-jon e开发平台中,V/EB-1 NF目录下的s truts-conf ig. xml配置文件 是不允许开发人员更改的。开发人员应该将自己开发的模块独立形成一个struts 配置文件,按照struts-conf ig-模块名称.xml的方式来命名,并将其参加web. xml 的配置中,具体方法见web.xml的配置。 ■ tiles-defs. xml配置文件:是使用tiles框架及其标签库技术需要配置的文件。 以下是t i les-defs. xml配置文件的根本构造: <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE t i Ies~def i n itions PUBLIC "-//Apache Software Foundat ion//DTD Tiles Configuration 1. 1//EN" ://Jakarta, apache, org/struts/dtds/1 iIes-conf ig_1_1. dtd"><!— Definitions for Tiles —> <! —Th i s file contains definitions common to a I I struts module. In particular, it contains the main Iayout and the common menus. There i s a I so the ma i n page as a porta I. —><t iIes-definitions> <!—========================================== —><!— Master definitions一-> <!―========================================== —><!― Page Iayout used as root for a I I pages. —> <definition name="rootLayout" path="/1ayouts/root
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服