EKP产品框架讲解------蓝凌EKP二次开发资料大全 完整蓝凌二次开发资料 蓝凌 EKP开发实战教程 蓝凌OA二次开发培训资料大全

文章介绍了基于MVC模式的SSH框架,包括Action、Form、Service和DAO的角色及职责。Action负责处理请求和页面跳转,不应实现业务逻辑;Form用于绑定页面数据,实现与Model的转换;Service层调用DAO实现业务功能,使用Spring事务管理;DAO处理数据访问,保证数据一致性。此外,文章还提到了基类的继承关系和数据交互过程。
摘要由CSDN通过智能技术生成

  • Action
    • 接受来自页面的请求,调用Service实现业务功能
    • 捕获成功/失败消息,实现页面跳转
    • 表单数据的初始化,如创建者创建时间需重写action的creatNewForm方法
    • 请不要在Action层实现业务功能,不要在Action中对Model进行赋值,不要在同一个处理过程调用多个Service的方法(每次调用的事务都不同)
  • Form
    • 绑定页面数据的对象模型
    • Struts的数据校验机制
    • 实现Form与model的转换(FormToModelPropertyMap,model主要体现在数据库操作上,而Form则体现在页面数据获取和页面数据展现上。两者之间需要进行互转。
  • Service
    • 调用多个DAO/Service,实现主要的业务需求
    • 采用Spring的代理机制进行事务管理,必须使用接口调用
    • 请在Service层完成Model与Form之间的转换
  • Model(域模型)
    • 数据库记录到Java对象的映射(ORM)
    • 对Model的操作相当于对表进行操作
    • 实现Model与Form的转换(ModelToFormPropertyMap)
    • 注意:被Hibernate接管的Model即使不对其进行Save,数据也会写入到数据库中(例外:Spring的readonly控制)
  • DAO(Data Access Object)
    • 数据访问接口
    • 一般提供基础的增、删、查、改的基础动作
    • 编程建议:保证DAO的“原子”性,这里指的是数据一致性。

    1. 基础框架类继承关系

各个基类的具体介绍详见基类使用说明。

  • BaseForm:所有Form必须实现的接口,继承了类ValidatorForm,重写了toString,equals,validate,isValidate,customerValidate等方法。

  • ExtendForm:IExtendForm的基本实现,继承了BaseForm ,与IBaseModel相对应,该接口也定义了ID字段的命名 fdId , Form到Model的特殊属性映射表。建议所有的Form都继承该类。该类除了实现IExtendForm要求的一些方法外,还重载了equals、toString、hashCode等常用的方法。

  • ExtendAction:ExtendAction继承了BaseSearchAction 类,该类实现了一些页面常用的操作(添加,分页查询,删除,批量删除,更新,编辑,阅读查看,保存添加,搜索等),建议所有的Action都继承该类。

  • IBaseService:所有Service必须实现的接口,它统一了一个数据对象提供的基本服务(增删查改,Model和Form之间的相互转换)

  • BaseServiceImp:IBaseService的基本实现,建议所有的Service继承该类。BaseServiceImp只能提供基本的服务,但往往一个具体的业务数据,它所提供的服务会更加丰富,甚至对于同样的操作,各个业务数据的处理方式也不尽相同(如:某些数据保存的同时,需要发送待办通知相关人员等)。所以,在编程的过程中,BaseServiceImp中的方法是鼓励您重载的,但重载的时候务必注意:您必须调用super.***()完成原来的操作,比如:您需要重载update的方法,您需要在您的update方法中需要更新数据的地方调用super.update(***)来完成更新动作。

  • IBaseModel:所有域模型必须实现的接口,它统一了域模型ID字段的命名(fdId)和域模型到Form模型转换的特殊属性映射表。

  • BaseModel:IBaseModel的基本实现,建议所有的域模型都继承该类。该类除了实现了IBaseModel要求的一些方法外,还重载了equals、toString、hashCode,readLazyField,writeLazyField,getToFormPropertyMap等常用的方法。

  • BaseTreeModel:所有类别树需要继承基类,其继承了BaseModel。

  • IBaseDao:所有的DAO必须实现的接口,它统一了对数据操作(增删查改)的方法名

  • BaseDaoImp:IBaseDao的基本实现,其继承HibernateDaoSupport,建议所有的DAO都继承该类。
  • CURD数据交互过程图解

    1. 保存示例
      1. 流程图

从新建页面到提交操作,最后到操作的页面反馈过程,看似简单,其实不然,点击提交的过程中后台执行了多步操作。接下来将从提交到页面反馈这一过程来剖析底层所执行的操作。

1)        Form表单校验

新建页面,录入数据,点击提交操作后会触发$KMSSValidation()事件来调用validation.js中的KMSSValidation实例,从而对页面进行必填以及数据类型等校验,具体校验类型详见validation.js。校验未通过将出现提示信息。通过则执行下一步。

2)        提交请求受理

校验通过后,服务器会根据提交的表单请求路径寻找对应的处理类。

提交请求路径中会包含“.do”关键字,我们可将其看作“*.do”格式。而web.xml会根据 “*.do”的URL来匹配对应的severlet类,如KmssStrutsActionServlet类。KmssStrutsActionServlet类在服务器启动时装载了struts框架其中包括struts.xml。服务器根据请求路径在struts.xml中找到对应的Action类并在找到的类或者父类ExtendAction中将执行save方法。

3)        执行service层add方法

在Action类中定义了getServiceImp(request)方法且通过getBean方式在spring.xml中会找到对应依赖注入的service类。Action层中sava方法会执行getServiceImp(request).add来调用service类或父类BaseServiceImp中的add方法,并在此过程中执行了convertFormToModel的转换操作(此操作会在后续章节中描述),并通过getBaseDao()执行dao层中的add方法,且触发了机制核心服务中的add方法。

4)        数据库持久化

服务器会根据getBaseDao在spring.xml中找到对应依赖注入的dao类,并执行dao类或父类BaseDaoImp中的add方法,在add方法中将会执行getHibernateTemplate().save(model)方法将转换的model对象持久化保存到数据库中。

5)        页面反馈

数据持久化到数据库中成功后返回到action,通过ActionForward在全局struts.xml中找到对应的成功跳转页面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值