已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 1 页 共 43 页 名称编 号拟 制 马 骏、Richar d Jin 版本号审 核 PingAn PAFA3 密 级秘密 共 42 页 批 准 更改信息更改信息 更改日期版本部门及更改人版本说明 2005-04-11v0.1Richard Jin 初版 2005-04-13v0.5 Richard Jin, 马骏,刘申岭 重构 2005-04-19v1.0Richar JinReview 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 11 页 共 43 页 将上述脚本存入文件“srcschemauser.sql”,然后通过 Oracle Sqlplus 客户端创建此表,如下图所 示: 2.42.4配置配置 WeblogicWeblogic 数据源数据源 在这个示例应用中,将使用数据源(Data Source)获得到数据库的连接,因此需要在 Weblogic 中进行 数据源的配置,配置数据源之前则应该首先配置“连接缓冲池”。 缓冲池配置需要确认的参数和范例如下所示: URLURL jdbc:oracle:thin::1521:oraking DriverDriver ClassnameClassname oracle.jdbc.driver.OracleDriver UserUser NameName pafa PasswordPassword password 缓冲池配置完成之后,就可以配置数据源了,如下图中所示,其中“Pool Name”就是指之前配置的缓 冲池的名称: 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 12 页 共 43 页 记住数据源的 JNDI 名称“jdbc/pafademoDSjdbc/pafademoDS”,这个名称将会在后续开发设置数据源时用到。 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 13 页 共 43 页 3.3.使用项目模板使用项目模板 3.13.1在在 EclipseEclipse 中导入项目模板中导入项目模板 使用项目模板可以提高 PAFA3 应用项目的可管理性、提高开发效率。在之前所准备的开发目录中,用文 本编辑器打开项目模板根目录下的“.ject”和“perties”两个文件,如下图所示,修改属 性值或确认属性设置是否与本机环境相符,需要检查的包括下面几项: 项目名称:.ject 中的中的“”“”域域 以目录形式部署时的目录:deploy.single.dirdeploy.single.dir 属性属性 存放 EAR 的目录:deploy.ear.dirdeploy.ear.dir 属性属性 PAFA3 类库的位置:pafa.libpafa.lib 属性属性 其它项目类库的位置:project.libproject.lib 属性属性 Weblogic.jar 的位置:weblogic.jarweblogic.jar 属性属性 保存修改后的文件并保存,打开 Eclipse,在 Eclipse 的菜单中选择“文件 导入”,将出现下图 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 14 页 共 43 页 中所示的导航界面: 选择“现有项目到工作空间中”后,点击“下一步”,在如下图界面中选择重命名过的项目根目录, “确定”后点击“完成”: 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 15 页 共 43 页 操作完成后,重命名过的模板项目即被导入到 Eclipse 环境之中。 3.23.2AntAnt 视图的配置与使用视图的配置与使用 通过 Eclipse 菜单,选择“窗口” “显示视图” “Ant”,就可以在 Eclipse 界面中显示出 Ant 视图,在 Ant 视图中点击第一个有加号的图标以增加构建文件,如下图所示: 在将项目的构建文件加入 Ant 视图后,就可以看到构建文件“build.xml”所提供的所有“Task”,在 “usage”任务上双击(执行),则可获得关于用法的提示,如下图所示: Buildfile: D:MyProjectuserProjbuild.xml usage: echo Pafa Application Build File echo 用法:ant -target echo - echo target echo clean 清空所有输出文件包括build和部署目录 echo compile 编译Java文件 echo ear 创建用于发布的EAR包文件 echo exploded-ear 创建展开目录形式的EAR应用(开发模式) echo - BUILD SUCCESSFUL Total time: 580 milliseconds 执行某个目标时只需要双击或在【target】上点击鼠标右键并选择“Run”即可。【注意,项目下的 “dist”部署目录需要执行“刷新”后才看得到,在项目根节点“userapp”的右键弹出菜单中选择“刷新” 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 16 页 共 43 页 即可。】 3.33.3EclipseEclipse 自动编译设置自动编译设置 Eclipse 具有自动编译 Java 源文件的功能,这在编写代码阶段对于编译错误的发现是很有用的。为了 利用 Eclipse 的这项功能,需要“设置对类库的引用设置对类库的引用”。 导入完成之后,在下图中选择项目名称“userapp”,点击鼠标右键,在弹出菜单中选择“属性”,将 弹出项目属性框: 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 17 页 共 43 页 为了利用 Eclipse 的自动编译功能,需要设置对类库的引用,如上图中“Java Build Path”的 “Libraries”中就定义了对项目外部类库的引用,图标上有感叹号“!”意思是路径配置有误;选择有误 的类包,通过“Edit”修正类包路径,如下图所示,直至所有类包图标正常显示;在后续的开发中,如果 用到类库中的其它类包,为使用 Eclipse 的自动编译,仍需要通过这个界面中的“Add External JARs”进 行外部类包的引入。 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 18 页 共 43 页 3.43.4配置文件的分类、目的与作用配置文件的分类、目的与作用 PAFA3 本身是一种各层松散耦合的框架结构,这种形式大大提高了应用的灵活性和适应性。各层次和功 能的联系通过配置文件联系在一起,下表列出了项目模板提供的示例配置文件及其功用,这些配置文件的 路径起点均为“configconfig”: 文件名文件名作用作用 app/application.xmlapplication.xml J2EE 应用配置文件,定义 EJB 和 WAR 模块等 biz/appnameBizContext.xmlappnameBizContext.xml Pafa3 应用 Biz 层配置,定义 Biz 层、集成层等的组件 biz/bizMpertiesbizMperties Biz 层 Message Resource Bundle,定义在 Biz 层使用的 Message biz/sqlmap-config.xmlsqlmap-config.xml Ibatis Sqlmap 配置文件,定义 Ibatis 的基础属性以及 Mapping 文件 biz/sqlmap-mapping.xmlsqlmap-mapping.xml Ibatis Sqlmap Mapping 文件,定义具体的 SQL 语句 core/appCommonContext.xmlappCommonContext.xml Pafa3 应用公共配置,定义 JNDI 模板等 core/coreContext.xmlcoreContext.xml Pafa3 应用核心配置,定义 Log 等基础组件 core/devLpertiesdevLperties 开发调试工具的配置文件,由 DevLog 使用 core/perties Pafa3 本身的 Log 配置 ejb/ejb-jar.xmlejb-jar.xml 标准 EJB 部署描述符 ejb/weblogic-ejb-jar.xmlweblogic-ejb-jar.xml Weblogic EJB 部署描述符 web/appnameWebContext.xmlappnameWebContext.xml Pafa3 应用 Web 层配置,定义 Web 层的组件 web/tiles-defs.xmltiles-defs.xml 页面布局定义 web/web.xmlweb.xml 标准 Web 应用部署描述符 web/weblogic.xmlweblogic.xml Weblogic Web 部署描述符 web/webMpertieswebMperties Web 层 Message Resource Bundle,供 fmt 标签等使用 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 19 页 共 43 页 4.4.页面布局设计与实现页面布局设计与实现 4.14.1.do.do 和和.screen.screen 在用户没有执行任何功能之前,访问我们的应用就应该有一个起始页面,如下图所示: .do 和.screen 是 PAFA3 应用规范中的定义的两种请求类型,.screen.screen 请求意味着纯粹的页面显示请求, 不包含后台 Biz 层的业务处理;而.do.do 则意味着需要后台的 Biz 层进行业务处理,数据将会在不同逻辑层中 传递。 4.24.2布局分析与设计布局分析与设计 如前所示,为简单起见,页面布局设定为左右结构,左边显示功能链接,右边为功能页面。为构建这个 布局,需要编写下列文件: 文件名文件名位置位置作用作用 mainLayout.jspmainLayout.jspsrc/webrootsrc/webroot 定义页面的布局结构定义页面的布局结构 include.jspinclude.jspsrc/webrootsrc/webroot 导入标签库,用于其它页面的导入导入标签库,用于其它页面的导入 menu.jspmenu.jspsrc/webrootsrc/webroot 显示功能菜单,位于布局左侧显示功能菜单,位于布局左侧 welcome.jspwelcome.jspsrc/webrootsrc/webroot 欢迎页面,位于布局右侧欢迎页面,位于布局右侧 error.jsperror.jspsrc/webrootsrc/webroot 错误页面,用于显示错误信息错误页面,用于显示错误信息 以下给出各文件的具体内容,其中代码的含义请参考相应的注释。 【mainLayout.jspmainLayout.jsp】 PAFA3 User App - 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 20 页 共 43 页 【include.jspinclude.jsp】:供其它页面包含,以减少代码量并有利于统一管理 【menu.jspmenu.jsp】:给出功能点的链接 “增加用户 “检索用户 【welcome.jspwelcome.jsp】:欢迎信息 欢迎! 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 21 页 共 43 页 【error.jsperror.jsp】:用于显示错误信息 错误信息 4.34.3布局的配置布局的配置 PAFA3 项目模板本身已经定义好了和页面布局相关的基本配置,到目前为止,还不需要不需要增加或修改布局 方面的配置。以下几个配置取自相关的配置文件。 【appnameWebContext.xmlappnameWebContext.xml】(注意:这个文件在 beta4 中对应 XX-servlet.xml 文件) 定义了视图的解析类以及布局的配置文件“tiles-defs.xml”,如下所示: com.paic.pafa.app.web.servlet.view.tiles.TilesJstlView /WEB-INF/tiles-defs.xml 【tiles-defs.xmltiles-defs.xml】定义与页面布局相关的属性,如 title 信息等;最主要的部分是定义视图名称和 JSP 页面之间的映射关系,如下所示,其中“welcomeView”对应的“welcome.jsp”即为欢迎页面: 【web.xmlweb.xml】定义 Web 应用的缺省页面,相关内容如下: index.screenindex.screen 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 22 页 共 43 页 由以上定义可以知道“index.screen”设为缺省页面,而缺省页面与“welcomeView”的映射关系需要 在“appnameWebContext.xmlappnameWebContext.xml”中定义,并且所有.screen 定义所对应 class 都是相同的,即 “com.paic.pafa.app.web.servlet.mvc.ParameterizableViewControllercom.paic.pafa.app.web.servlet.mvc.ParameterizableViewController”: welcomeViewwelcomeView 4.44.4利用利用 AntAnt 构建部署目录构建部署目录 在完成了欢迎页面的开发和配置之后,应该可以实际看到运行效果了,在部署之前,修改 “src/config/app/application.xmlsrc/config/app/application.xml”,和部署目录的内容相比较,确认 WAR 模块和 EJB 模块的名称是否 正确,如果按照之前所说的修改了模板的项目名称,则修改后的内容应该如下所示: Pafa3 Application userapp-ejb.jaruserapp-ejb.jar userapp.waruserapp.war /userapp/userapp 在 Eclipse 的 Ant 视图中的“exploded-earexploded-ear”节点上双击执行 Ant 任务,就可以生成部署目录,如下 图所示: 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 23 页 共 43 页 4.54.5WeblogicWeblogic 部署测试部署测试 启动 Weblogic 并进入应用部署页面,选择 Ant 生成的部署目录,如下图所示,点击“Target Application”,然后按照 Weblogic 的提示和自己的部署目标进行部署: 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 24 页 共 43 页 部署完成之后,打开 IE 浏览器按照设定的 URL 访问,如果出现下图中的页面,则证明之前的工作 没有错误,否则请重新检查之前的每一步骤直到完成下图目标。 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 25 页 共 43 页 5.5.“增加用户增加用户”功能的设计与实现功能的设计与实现 5.15.1功能分析功能分析 根据之前“增加用户”功能的流程设计和通过预览看到的样子,细化的内部流程如下图中所示: 点击“增加用户”链接 addUser.do com.paic.userapp.management.web.controller. AddUserController ,编辑信息 点击提交按钮 【】 addUser.Do 提取绑定对象; 构建ServiceRequest; 发送ServiceResponse给 ,“PAFA-AC” 以获取包含 执行结果的ServiceRequest PAFA-AC 根据请求查找动作对象 .action. AddUserAction 调用U Us se er rS Se er rv vi ic ce e 【】 U Us se er rP Po oj jo oS Se er rv vi ic ce e 调用【U Us se er rD DA AO O 】U Us se er rI Ib ba at ti is sD DA AO O 数据库 :Ibatis sqlmap-config.xml sqlmap-mapping.xml :显示Form View 【】 tiles-defs.xml : a ad dd dU Us se er r. .j js sp p :显示Success View 【】 tiles-defs.xml : s su uc cc ce es ss s. .j js sp p 结束 ,按颜色区分流程先后次序 :分别为 黑蓝红 5.25.2公用层设计与实现公用层设计与实现 公共层的含义是指 Web 层和 Biz 层共用的部分,包括在两层之间用于数据传递的 DTO 和用于定义 ServiceRequestID 名称的共用 Util 等,在部署时这些内容将被放置到 EAR 的“APP-INF”之中,而不是 EJB 或者 WAR; 除此之外,在 Web 层和 Biz 层都还有用于定义名称常量的 Util 类,这些名称源于配置文件,以避免在 业务代码中“Hard Code”字符常量。以下将会给出在这个用例中所涉及到的公用层组件及其代码。 【com.paic.userapp.management.util.ServiceRequestID】 package com.paic.userapp.management.util; public class ServiceRequestID public static final String ADD_USER=“addUser“; 【com.paic.userapp.management.web.util.ModelNames】 package com.paic.userapp.management.web.util; public class ModelNames public static final String MODEL_ERROR_MSG = “errorMsg“; 【com.paic.userapp.management.web.util.ViewNames】 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 26 页 共 43 页 package com.paic.userapp.management.web.util; public class ViewNames public static final String ERROR_VIEW = “errorPage“; public static final String SUCCESS_VIEW = “success“; 【com.paic.userapp.management.web.util.WebContextNames】 package com.paic.userapp.management.web.util; public class WebContextNames public static final String PAFA_AC = “pafaAC“; 【.util.BizContextNames】 package .util; public class BizContextNames public static final String USER_SERVICE=“userService“; public static final String USER_DAO=“userDAO“; 除了以上给出的名称常量定义,在应用开发中比较重要的一项内容就是定义在 Web 层和 Biz 层之间传递 的 DTO,在本例中用于传递用户的信息,定义如下: 【com.paic.userapp.management.dto.UserDTO】 package com.paic.userapp.management.dto; import com.paic.pafa.app.dto.PafaDTO; public class UserDTO extends PafaDTO private String id; private String name; private String description; public String getDescription() return description; public void setDescription(String description) this.description = description; public String getId() return id; public void setId(String id) this.id = id; public String getName() 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 27 页 共 43 页 return name; public void setName(String name) = name; 5.35.3WebWeb 层开发与实现层开发与实现 通过之前的功能分析,我们知道在 Web 层需要开发的内容包括:“addUser.jsp”,用于显示输入用户 信息的窗体;“success.jsp”,显示操作成功信息; “com.paic.userapp.management.web.controller.AddUserController”,Web 层的功能控制器。相关代码 如下,注意其中的注释信息: 【webrootmanagementaddUser.jsp】 “ 用户ID: “ name=“ 姓 名: “ name=“ 说明: “ 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 28 页 共 43 页 name=“ 【webrootmanagementsuccess.jsp】 操作成功! 【com.paic.userapp.management.web.controller.AddUserController】 package com.paic.userapp.management.web.controller; import com.paic.pafa.app.dto.ServiceRequest; import com.paic.pafa.app.dto.ServiceResponse; import com.paic.pafa.app.lwc.core.util.DevLog; import com.paic.pafa.app.lwc.service.databinding.BindException; import com.paic.pafa.app.web.exception.PafaWebException; import com.paic.pafa.app.web.servlet.ModelAndView; import com.paic.pafa.app.web.servlet.mvc.SimpleFormController; import com.paic.userapp.management.dto.UserDTO; import com.paic.userapp.management.util.ServiceRequestID; import com.paic.userapp.management.web.util.WebContextNames; public class AddUserController extends SimpleFormController protected ModelAndView onSubmit(Object cmd, BindException ex)throws Exception UserDTO user=(UserDTO)cmd; /用于开发阶段的调试 DevLog.debug(“New User“+user.getId()+“,“+user.getName(); /准备 ServiceRequest ServiceRequest serviceRequest = new ServiceRequest(); serviceRequest.setRequestedServiceID(ServiceRequestID.ADD_USER); serviceRequest.setCurrentRequestObject(user); /发送 ServiceRequest 以获得 ServiceResponse ServiceResponse serviceResponse = dispatchService(serviceRequest,WebContextNames.PAFA_AC); /准备 Web 视图 return new ModelAndView(this.getSuccessView(); 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 29 页 共 43 页 5.45.4配置配置 IbatisIbatis SqlMappingSqlMapping 通过之前的功能分析可以发现,最终的数据库操作是由 Ibatis 完成的,在本例中有两个相关的、位于 “srcconfigbiz”的配置文件“sqlmap-config.xml”和“sqlmap-mapping.xml”;在这个例子中我们只 需要在“sql-mapping.xml”中增加 SQL 语句,如下所示: 【srcconfigbizsql-mapping.xml】:在 INSERT 语句中定义了参数对象为 UserDTO 5.55.5BizBiz 层开发与实现层开发与实现 实际上这里包括 Biz 层和集成层,通过之前的分析,我们需要在 Biz 层编写的 Java 类包括 “AddUserAction”、“UserService”接口、接口的实现类“UserPojoService”以及集成层的 “UserDAO”接口和接口的实现类“UserIbatisDAO”,代码则如下所示: 【egration.UserDAO】 package egration; import java.util.List; import egration.dao.PafaDAOException; import egration.dao.PafaDAO; import com.paic.userapp.management.dto.UserDTO; public interface UserDAO extends PafaDAO public void createUser(UserDTO user) throws PafaDAOException; 【egration.impl.UserIbatisDAO】 package egration.impl; import java.util.List; import egration.dao.PafaDAOException; import com.paic.pafa.app.lwc.service.persistence.dao.ibatis.support.SqlMapClientDaoSupport; import com.paic.userapp.management.dto.UserDTO; import egration.UserDAO; import com.paic.pafa.app.lwc.core.context.support.PafaCoreContexton; import com.paic.pafa.app.lwc.service.persistence.dao.DataAccessException; 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 30 页 共 43 页 public class UserIbatisDAO extends SqlMapClientDaoSupport implements UserDAO public void createUser(UserDTO user) throws PafaDAOException /获得当前事务的 ID String txnId = PafaCoreContexton.getInstance().getThreadContext().getTxnID(); try /通过 Ibatis 执行名称为“addUser”的 SQL 语句 getSqlMapClientTemplate().insert(“addUser“, user); catch(DataAccessException e) /将数据库例外包装为 pafa 的例外类型 throw new PafaDAOException(txnId, “UserIbatisDAO“, “userapp.error.db.insert.001“, “userapp.error.db.insert.001“, e); public void setBeanName(String arg0) / TODO Auto-generated method stub 【.service.UserService】 package .service; import java.util.List; import .service.BusinessServiceException; import com.paic.userapp.management.dto.UserDTO; public interface UserService public void addUser(UserDTO user)throws BusinessServiceException; 【.service.impl.UserPojoService】 package .service.impl; import java.util.List; import .service.BaseService; import .service.BusinessServiceException; import egration.dao.PafaDAOException; import .service.UserService; import .util.BizContextNames; import com.paic.userapp.management.dto.UserDTO; import egration.UserDAO; import com.paic.pafa.app.lwc.core.util.DevLog; public class UserPojoService extends BaseService implements UserService public void addUser(UserDTO user)throws BusinessServiceException try 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 31 页 共 43 页 /通过 Context 获得 DAO 实例 UserDAO userDAO = (UserDAO) context. getBean(BizContextNames.USER_DAO); DevLog.debug(“-addUser() begin into DAO-“); userDAO.createUser(user); DevLog.debug(“-addUser() end from DAO-“); catch (PafaDAOException e) DevLog.debug(“Error Msg: “+e.getInitialCause().getMessage(); throw new BusinessServiceException(e); 【.action.AddUserAction】 package .action; import .action.AbstractAction; import .service.BusinessServiceException; import com.paic.pafa.app.dto.ServiceRequest; import com.paic.pafa.app.dto.ServiceResponse; import .service.UserService; import .util.BizContextNames; import com.paic.userapp.management.dto.UserDTO; import com.paic.pafa.app.lwc.core.context.support.PafaCoreContexton; import com.paic.pafa.core.exceptions.PafaRuntimeException; public class AddUserAction extends AbstractAction public ServiceResponse perform(ServiceRequest request) throws BusinessServiceException /获得当前事务的 ID String txnId = PafaCoreContexton.getInstance().getThreadContext().getTxnID(); try /从请求中获取 DTO 参数 UserDTO user=(UserDTO)request.getCurrentRequestObject(); /调用服务以完成功能 UserService userSrv = (UserService) context. getBean(BizContextNames.USER_SERVICE); userSrv.addUser(user); /返回响应 ServiceResponse response = new ServiceResponse(); return response; catch(BusinessServiceException be) throw be; catch(PafaRuntimeException pe) throw pe; catch(Exception e) throw new PafaRuntimeException(txnId, “userapp.error.runtime.001“,“userapp.error.runtime.001“,e); 本文内容涉及中国平安保险(集团)股份有限公司商业秘密,未经书面许可,不得以任何形式披露、传播或扩散。 中国平安保险(集团)股份有限公司,版权所有,不得侵犯中国平安保险(集团)股份有限公司,版权所有,不得侵犯 第 32 页 共 43 页 5.65.6编辑配置文件编辑配置文件 至此“增加用户”功能的开发就完成了,但还需要通过编辑配置文件将这些功能组件串在一起。需要修 改的配置文件如下所述: 【tiles-defs.xml】:定义视图名称所对应的 JSP 页面,增加以下定义 【appnameWebContext.xml】:定义 AddUserController 的配置 user com.paic.userapp.management.dto.UserDTO addUser success 到目前位置,在 Biz 层的配置中除了 Service、DAO、Action 等组件的定义外,最重要的是要为 DAO 配 置数据源,我们在前面已经在 Weblogic 中配置好了数据源,并且定义了 JND
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025甘肃新高原农牧发展有限公司劳务派遣招聘11人笔试参考题库附带答案详解
- 2025湖南旅游发展有限责任公司招聘16人笔试参考题库附带答案详解
- 2025海南省交通工程建设局第三批考核招聘劳动合同制人员14人笔试参考题库附带答案详解
- 2025浙江温州市瑞安市面向退役(毕业)大学生士兵招聘第一批事业单位(国有企业)工作人员政治考核分数笔试参考题库附带答案详解
- 2025河北唐山人才发展集团为中国移动合作商妙音科技有限公司发布招聘笔试参考题库附带答案详解
- 2025江苏南通高新控股集团及下属子企业招聘9人笔试参考题库附带答案详解
- 青岛市2025年山东青岛职业技术学院公开招聘工作人员(37人)笔试历年参考题库典型考点附带答案详解
- 赣州市2025江西赣州市科技创新服务中心招聘见习生1人笔试历年参考题库典型考点附带答案详解
- 石阡县2025贵州石阡县青年就业见习万岗募集笔试历年参考题库典型考点附带答案详解
- 浏阳市2025湖南长沙浏阳市审计局政府投资审计专业中心招聘编外合同制工作人员笔试历年参考题库典型考点附带答案详解
- T/CIE 210-2024采用机器人技术的人体穿刺设备通用技术要求和试验方法
- 行为主义斯金纳课件
- 《儿童静脉血栓栓塞症抗凝药物治疗专家共识(2025)》解读
- 2024-2025学年宁夏银川市唐徕中学南校区七年级下学期期中历史试题
- LNG加气站质量管理体系文件
- 2025年西藏行政执法证考试题库附答案
- 《我生活中的一棵树》(2023年北京市中考满分作文8篇附审题指导)
- 奇妙宇宙之旅(大班)
- 楼道声控灯工程方案(3篇)
- 井底的四只小青蛙课件
- 2025年贵州省中考化学试卷真题(含答案)
评论
0/150
提交评论