基于SSH的开发框架规范说明书v01.docx
- 文档编号:23659988
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:9
- 大小:19.87KB
基于SSH的开发框架规范说明书v01.docx
《基于SSH的开发框架规范说明书v01.docx》由会员分享,可在线阅读,更多相关《基于SSH的开发框架规范说明书v01.docx(9页珍藏版)》请在冰豆网上搜索。
基于SSH的开发框架规范说明书v01
基于SSH的开发框架
规
范
说
明
书
公司
石家庄市中讯科技有限公司
编写时间
2012/1/24
编写人
崔鹏宇
最终修改时间
2012/1/24
最终修改人
崔鹏宇
当前版本
0.1
一概述
本文档旨在对目前开发中涉及到的若干常用的内容进行规范说明,帮助设计人员、开发人员均使用相同的开发习惯进行程序设计和开发。
本文档对开发框架结构进行了说明,使开发人员从结构上理解整个团队的开发规范和习惯;
本文档对项目实践中逐渐封装的各开发中间件进行说明,使开发人员快速学习整个团队使用什么样的开发方式,并继承团队的常用开发代码,降低对技术的学习复杂度。
二开发框架说明
本开发框架是基于Struts2.0+Spring+hibernate进行封装的,本章首先对于SSH的封装结构和封装方法进行说明,同时对于各种类、方法、变量的结构和命名的规范进行说明。
1SSH包和目录说明
基于细化功能的角度考虑,系统尽量将需求功能的颗粒度最小化;
项目的所有包都是com.zx开头;
每个功能点的包名都是以小写字母开头,如com.zx.org;
Struts层的包名为action,其下面的类名根据功能点命名,以Action后缀,如OrgAction;
Spring层的包为service,service为主要与业务层的功能,可以暴露给其他功能点使用的功能,比如org.service.DeptService的功能是提供给action层的,也可以比其他功能点使用的。
比如workflow.service层下需要用到组织架构功能,就会注入deptService;
Hibernate层的包有dao和entity;
dao包封装访问数据库的功能,但一般dao功能的代码都被封装在mon.s2shcore.dao.BaseDao中,不需要复杂的代码,所以通常省略dao层;
entity包封装了数据表实体类,比如Dept类描述了数据表SDept的结构,具体描述方式见后文;
SSH的配置是从web.xml开始,基础配置文件都放在source目录下,与业务有关的struts配置文件都放在action包下,与spring有关的配置文件被放在功能包下或者具体功能包下,比如org的spring配置文件为applicationContext-org.xml,这是因为struts的类全部在action包下,而spring除了业务层在service包下,还有prerun、quartz等,这些在后期再描述;
2SSH基础配置文件说明
SSH的基础配置文件都在source目录下;
SSH基础配置文件从web.xml,web.xml的相关配置如下;
2.1Struts2在web.xml中的配置
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
2.2Spring在web.xml中的配置
--配置spring-->
applicationContext.xml
--配置Spring的监听-->
2.3Hibernate在web.xml中的配置
--解决延迟加载的问题-->
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
这段代码是为了解决hibernate在处理两个实体类之间有外键关联的时候session关闭的问题,因为实体类外键一旦离开dao层后,session就会断开,这时候无法在通过对象关联来访问外键关联对象,通过以上配置,就可以在必要的时候自动OpenSession。
3Struts基础配置文件
该文件见source目录下的struts.xml;
上面这段代码通过匹配字符串,将所有符合struts-*.xml的配置文件都进行struts加载,比如com.zx.mobileorg.action.struts-mobileorg.xml文件;
另外还有一个很重要的文件struts.properties,该文件配置了各种struts信息;
3.1Struts.properties配置说明
struts.locale=zh_CN
struts.i18n.encoding=UTF-8
struts.objectFactory=spring
struts文件后缀
struts.action.extension=do
struts临时文件保存路径,但实际上并没有感觉生效
struts.multipart.saveDir=tmpzx
struts.configuration.xml.reload=true
struts.i18n.reload=true
开发模式,正式部署后,要改为false
struts.devMode=true
struts.multipart.maxSize=20480000
struts.custom.i18n.resources=zxmsg
3.2struts基类和子类配置
struts基类在mon.s2shcore.action.BaseAction.java,该文件对于各种常用的struts功能都进行了封装;
在本框架中,尽量减少struts标签的使用,因为struts标签在使用中需要在struts类中定义大量的私有变量,这些变量的定义对于整个类的数据与功能的封装不好,所以通过在基类中定义了一个params私有变量,实现在页面中通过el表达式进行数据读写的操作;
Privateparams:
该参数用于存储jsp页面和struts后台传递数据所用;
publicprepare:
该方法实现的Preparable接口,该方法每次action事件执行前预执行。
在本方法中,将所有从前台得到的request参数都放入params参数中,通过这样的操作,无需任何处理,前台jsp页面就可以通过el表达式来读写;
protectedgetTextParam:
该方法根据key获得String类型的数据值,比如以text类型name为key获得value字符串;
protectedgetTextArrayParams:
类似getTextParam,不过该方法获得的是string[]类型的值;
protectedsetParam:
向前段页面传递参数,value可以为任何类型的对象;
protectedwriteText:
该方法核心是使用response对象输出一个字符串,该方法可以接收contentType和encoding两个参数,但由于已经被封装,一般只需要传递一个字符串参数;
protectedscriptAlert:
该方法接受两个参数,通过该方法可以直接控制在前台页面进行alert提示。
使用该方面需要在前台页面加入 includesrc=”../common/inc_script_css.jsp”>
include>语句,以引入jAlert.js文件;
protectedscriptAlertRedirect:
该方法类似scriptAlert,但多了一个redirectUrl方法,该方法指引最终要跳转的路径。
该方法的原则是先通过struts的action配置引导到某个页面,然后马上跳转到redirectUrl页面,因此该方法的struts的配置文件中是中间显示alert的页面,最终要显示的页面是redirectUrl页面;
4spring基础配置文件
spring基础配置文件见source/applicationContext.xml,内容如下;
--spring主配置文件,装在jdbc.properties文件内容-->
config-*.properties
--import其他spring配置文件-->
**/applicationContext-*.xml"/>; 注: 本框架的spring配置大量使用了注释语法,而不像传统的通过配置文件来实现,具体例子可以见service包下的文件中的@Service、@Autowired等语法; 5Hibernate基础配置文件 本框架下的hibernate配置完全由spring管理; Hibernate基础配置文件包括三个文件: source/config-database.properties,source/spring/applicationContext-datasource.xml,source/spring/applicationContext-hibernate.xml; Config-database.properties文件是被spring基础配置文件的propertyConfigurerbean装载的,该bean的配置会匹配所有config-*.properties文件,并装载; applicationContext-datasource.xml文件用于配置数据源; applicationContext-hibernate.xml文件用于配置hibernate,二级缓存以及事务; 对于hibernate的实体定义见sessionFactorybean的packageToScan属性,该属性通过包匹配,将所有entity包下的类都当作是实体类来装载; 注: 本框架中的hibernate实体类均通过注释语法来实现,具体例子可以见com.zx.org.entity包下的各个实体类,具体语法不再赘述; 三开发中间件说明 本章对各开发中间件进行介绍和说明; 1工作流引擎使用说明(v0.1) 目前该中间件还不够完善,是0.1版本; 为了能够对工作流程序的开发进行规范,并将常用功能和接口进行封装,该中间件主要被封装在com.zx.workflow包和workflow文件夹下; Workflow包下封装的是各种核心类; Workflow文件夹是几个常用的jsp文件,比如审批中的提示页面; 下面将一步步列出使用工作流引擎需要写哪些代码 1.1实现每个流程节点的操作者接口 作为工作流,我们知道,是通过一系列node和step实现的,在本流程引擎中,首先要实现节点操作者接口IOperator; IOperator有三个方法: canOperate: 判断某userId是否可以操作该节点,该方法只在开始节点有效,因为只有开始节点是直接根据预定义的权限来判断该用户是否可以操作该节点,即是否有权启动一个流程; getOperatorGroup: 获取可操作用户组,该接口根据当前操作用户在加上其他参数,获取可操作人员组,该人员组将显示在操作页面中,在当前用户处理当前节点的时候,选择要发送给哪个人员组。 具体内容可查看pete.workflow包; 1.2初始化流程定义 在应用程序启动的时候实现ApplicationContextAware,来初始化流程定义; --初始化WorkFlow类 WorkFlowcompeteWorkFlow=newWorkFlow(); --注册该工作流定义,参数有三个: code,显示名称和流程定义对象; workFlowService.regWorkFlow(WorkFlowDefine.CompeteWorkFlow,"竞争信息流程",competeWorkFlow); //开始节点 WorkFlowNodestartNode=competeWorkFlow.initStartNode(WorkFlowDict.StepStart,"发起竞争信息申请"); startNode.setOperator(startOperator); //结束节点 WorkFlowNodeendNode=competeWorkFlow.initEndNode(WorkFlowDict.StepEnd,"结束"); --结束节点要设置类型为3 endNode.setType(3); //创建县集客主任审核节点 WorkFlowNodenodexjkzr=competeWorkFlow.addNode(startNode,"XianJiKeZhuRen","县集客主任审核",WorkFlowDict.StepStart,"发起申请"); --为每个节点设置操作人 nodexjkzr.setOperator(competeXjszrOperator); --为每个节点设置下一步step //县集客主任不同意 nodexjkzr.addNext(nodefqrqr,WorkFlowDict.StepNotAgree,"不同意"); //县集客主任同意直接办理 nodexjkzr.addNext(nodefqrqr,WorkFlowDict.StepDoit,"可办理"); 1.3判断是否可以启动流程 要根据当前用户的权限来判断其是否可以启动流程,在页面表现上,如果当前用户可以启动流程,则左侧菜单将显示“发起新流程”之类的连接;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 SSH 开发 框架 规范 说明书 v01