Struts2+Hibernate开发笔记

Struts2+Hibernate开发笔记
Struts2+Hibernate开发笔记

Struts2 + Hibernate开发笔记(一)

由于开发任务紧张,因为这里的开发笔记,仅用于记录遇到的几个struts2和hibernate结合开发的现象.不对其做分析.

1. 在使用struts2时,页面和action之间的传值

这是struts2和struts1最大的区别.

Struts2中,action和jsp页面之间的信息交互,是通过action中定义的成员变量来实现的.

例如,我在一个名为EstateAction的类中有如下定义

public class CityAction extends BaseAction {

private MthCity mthCity ;

private String cityName;

private Long cityId

private int couter;

public String loadCity() throws DataAccessException, BaseException{

counter ++;

return "city";

}

}

然后,这里上面的类中的成员类MthCity的定义如下

public class MthCity implements java.io.Serializable {

private Long cityId

private String cityName;

public MthCity() {

public Long getCityId() {

return this.cityId;

}

public void setCityId(Long cityId) {

this.cityId = cityId;

public String getCityName() {

return this.cityName;

}

public void setCityName(String cityName) {

this.cityName = cityName;

}

}

这是一个Hibatenate使用的数据对象POJO类.

有了这两个类后,我们来看看Struts2的Action和JSP页面之间是如何交互的

一. JSP -> Action

Jsp页面

以下是一个jsp页面submit.jsp.这个页面只有一个功能,就是向struts提交申请

<%@ page language="java" contentType="text/html; charset=gbk"%>

<%@ include file="/common/taglibs.jsp"%>

"https://www.360docs.net/doc/114093108.html,/TR/xhtml1/DTD/xhtml1-transitional.dtd">

提交

大家可以看到,这个页面只有一个按钮,将页面提交到struts的一个action中,这是为什么呢.

我们先看一段struts2的配置文件admin-action.xml

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"https://www.360docs.net/doc/114093108.html,/dtds/struts-2.0.dtd">

class="com.mytophome.admin.representation.struts.action.CityAction">

/admin/city.jsp

/admin/city_update.jsp

这是一个struts2的典型配置文件.

上面有几处要注意的

首先是namespace = “/admin” 这是一个struts模块名,可以不写,但如果写了,能比较方便的将struts2的action按配置来分模块.(何谓分模块呢?struts2有个特性,是action定义不需要像struts1一样写在同一个struts.xml文件中.而是可以使用include的形式.例如我使用的项目的struts.xml文件就是这样写的:

这样include了一系统的xml配置,而上面的admin-action.xml文件就是其中一段,因此将这一段中涉及的action类设定为一个模块,就定namespace = “/admin”

)

其次

这一句配置的意思,就是,当用户提交一个符合struts2格式的申请时(所有包含.do形式的http链接)

例如http://localhost/admin/city/loadCity.do

其中包含了/city/那么在配置文件中,只要定义action name=”city/*”,那么所有包含有/city/的do,都会提交到action定义的类中来,也就是类om.mytophome.admin.representation.struts.action.CityAction中,那么提交到这个类的哪个方法中呢? 因为选择的是city/*.而且method={1},所以方法名由链接指定

也就是loadCity.do所指定的.loadCity方法.

λ这个do方法后面是可以带参数的.所带的参数名,要是CityAction中定义的成员变量,包括成员类.例如,如果想提交后,CityAction中的cityId有值,链接可以这样写

http://localhost/admin/city/loadCity.do?cityId=9

这样,在loadCity方法中,如果你访问cityId,就可以发现cityId的值是9

System.out.println(Long.toString(cityId));

但这里有一个条件,就是CityAction中,必须要有cityId变量的getter/setter方法(这两个方法可以用MyEclipse自动生成)

public Long getCityId() {

return cityId;

}

public void setCityId(Long cityId) {

this.cityId = cityId;

}如果要给CityAction中的MthCity类的

这样才能在jsp页面提交时,由struts为cityId赋值.(当然,getter方法就方便当action返回到jsp页面时,cityId的值能在页面取到.)

λ如果要为action中的类成员变量赋值也是可以的

例如http://localhost/admin/city/load ... mp;mthCity.cityId=8

这条链接提交后,会和上面一样调用CityAction的loadCity方法,但这里,action的成员mthCity会被创建实例,并为mthCity的一个属性cityId赋值,也就是说,在action中,大家可以通过mthCity.getCityId()来获得这个属性的值.

当然,一定要在action设置mthCity的getter setter,jsp上的内容才能传到action中

public MthCity getMthCity()

return mthCity;

}

public void setMthCity(MthCity city) {

this. mthCity = city;

}

从JSP提交内容到Action,还有一种方法,就是将参数内容放在表单form的元素中

这样,当用以下语句表单提交的时候

doucment. myform.submit();

就能在Action中创建一个mthCity实例,并为mthCity.cityName设置值为:广州.

原因是在页面的表单元素中,设置了name= mthCity.cityName,而action中刚好有成员类叫mthCity,而这个类中刚好有属性叫cityName.,就是通过这样的方法,能将表单的内容,提交到Action中.

Struts2 + Hibernate开发笔记(二)

二. Action -> JSP

当要从Action中执行的loadCity方法,要返回到jsp页面时,要在页面上指定一个return的页面.我们在admin-action.xml配置中可以看到一句

/admin/city.jsp

而在loadCity方法中有这样一句

return "city";

这样,当loadCity执行完后,就会返回到http://localhost/admin/city.jsp页面.

由于在action中,cityId和mthCity.cityId是被前一个提交过来的jsp页面赋值过,所以当程序执行转到city.jsp页面的时候,这几个值是能被使用的.我们使用jstl来获得这些值

${cityId} , ${mthCity.citId} (前提是只要在action中,设定了cityId和mthCity类的getter/setter.)

2. 当action中的类,传到受hibernate管理的命名空间的类中时

这个问题比较特殊.

我的工程中,建立了一个类cityService.这个类是进行数据库操作的,也就是和hibernate打交道的.而这个类在hibernate的设置中设置为被一个hibernate Session管理的范围.

这个cityService中有一个方法,用于更新city的信息的

public void updateCity(MthCity city) throws DataAccessException,

BaseException{

MthCity icity = this.getCityById( city.getCityId());

icity.setCityName(city.getCityName());

baseHibernateDAO.update(icity);//这个baseHibernateDAO只是一个封封装了hibernate API的包,网上常见.

}

大家可以看到,方法中并没有直接update从参数传进来的city,而是新建了一个icity,装了city中的信息再进行update.

这是因为,cityService这个类被hibernate管理,所以在这个类中创建的内容,才能被更新.所以我们必须使用一个新的MthCity类实例来装着外面传进来的内容,才能更新.否则就会出现类似have the same id object in the session的错误,也就是说session中有其它相同id的对象的错.

当然,有另一个处理办法,就是使用baseHibernateDAO.merge来更新内容,而还是用update

这里就可以写成

public void updateCity(MthCity city) throws DataAccessException,

BaseException{

baseHibernateDAO.merge(icity);

}

3. Hibernate中的version类型成员

在我的项目中,city有一个属性是timestamp,对应的是mth_city这个表,这个表通过hibernate的映射,映射成一个POJO对象

public class MthCity implements java.io.Serializable {

private Long cityId

private Date timestamp;

private String cityName;

public MthCity() {

}

public Long getCityId() {

return this.cityId;

}

public void setCityId(Long cityId) {

this.cityId = cityId;

}

public Date getTimestamp() {

return this.timestamp;

}

public void setTimestamp(Date timestamp) {

this.timestamp = timestamp;

}

public String getCityName() {

return this.cityName;

}

public void setCityName(String cityName) {

this.cityName = cityName;

}

大家可以看到,类中有一个属性是timestamp,定义为Date类型.

这个类型是用于记录数据库操作的日期的,数据库中的对应字段也叫timestamp.看一下hibernate的映射配置

"https://www.360docs.net/doc/114093108.html,/hibernate-mapping-3.0.dtd">

dynamic-update="true">

大家可以看到,cityid对应数据库表中的CITY_ID字段,其值由oracle sequence生成

而timestamp属性,对应的是数据库的TIMESTAMP字段,并且这个属性在mapping中定义为属性

这样,就会出现两点要注意的地方

λ数据库中的这个timestamp的字段一定要有值,并且是日期值,否则当hibernate更新这个字段没有值的那条记录时,会出现如下错误

org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [com.mytophome.admin.domain.MthCity#1] λ在更新MthCity中的值到数据库中,也就是更新一条记录时,一定不设调用方法人工设置timestamp属性的值,也就是下面的语句不能出现

mthCity.setTimeStamp(new Date());

否则也会引起hibernate的出错.

快速开发平台简介

POBA 公司文档 Copyright 1999-2013poba Software 1 普巴快速开发平台简介 1 平台简介 随着WEB 应用开发技术的发展,应用软件开发平台得到了极大的进步,大多数的软件公司都会开发自己的架构,搭建自己的应用平台,来适应软件企业所在的行业应用,同时将行业的若干通用化的应用做成构件或组件,增强软件的重用性,降低软件开发的风险。 普巴快速开发平台,是业界领先的基于SOA 架构的JavaEE 快速应用开发平台,被业界誉为“软件开发推进器”。它采用先进的“配置化”、“组件化”设计理念和高级封装技术,并积累了大量成熟而实用的应用组件,绝大多数开发与应用无需编码,开发人员无需懂JAVA 即可进行“所见即所得”式的开发,使开发效率提高了一个数量级,并且应用可立即部署,大大缩短了应用开发的调试期,降低了用户的开发成本。为企业、软件开发厂商提供了一套快速开发的工具,同时为用户提供了一套智慧的管控一体化的信息支撑平台。 快速开发平台结构图

POBA 公司文档 2 Copyright 1999-2013poba Software 2 平台使用对象 ISV 独立软件开发商 SI 系统集成商 大中型企业和政府IT 部门 3 平台解决问题 用户在软件开发过程中常遭遇如下难题: 技术难度大,开发成本居高不下 开发、部署效率低 不断变化的企业需求,企业疲于应付 技术骨干流动频繁,重复开发现象严重 多种模式下缺乏统一规范和标准 系统可维护性差,维护成本高 大型项目开发周期长,难以和实际需求匹配 针对上述使用对象面临的问题,普巴快速开发平台革新了软件开发模式,以组件构建的方式实现软件开发,大多数应用无需编写代码,对于复杂应用,也只需编写少量脚本,就可以实现复杂的应用。同时引入了大量的构件,开发人员可直接通过开发工具进行设置,降低了对开发人员技术水平的要求,普通开发人员经过学习就可上岗,解决了技术骨干流动给项目带来的重复开发现象。 通过系统内置的设计工具,基于浏览器进行模板设计、模块设计以及流程设置,能够大幅度地减少开发工作量,提高了开发效率,比传统软件开发节省一半左右的时间。对于项目管理人员,可以将主要精力集中在项目的需求工程、应用设计,降低了项目的风险。 由于在开发实现过程中,压缩了编码的工作量,应用跟踪调试的时间也相应减少,整个应用实现的时间也相应减少,提高了应用的可维护性和软件的稳定性。 4 平台优势和价值 极大地提高了开发效率,缩短应用实现时间80% 以上,大大地缩短了应用

软考系统架构设计师(高级)学习笔记汇总

2011年软考系统架构设计师学习笔记第一章 1.1.1 系统架构师的概念 现代信息系统“架构”三要素:构件、模式、规划;规划是架构的基石,也是这三个贡献中最重要的。 架构本质上存在两个层次:概念层,物理层。 1.2.1 系统架构师的定义 负责理解、管理并最终确认和评估非功能性系统需求,给出开发规范,搭建系统实现的核心架构,对整个软件架构、关键构建、接口进行总体设计并澄清关键技术细节。 主要着眼于系统的“技术实现”,同时还要考虑系统的“组织协调”。 要对所属的开发团队有足够的了解,能够评估该开发团队实现特定的功能需求目标和资源代价。 1.2.2 系统架构师技术素质 对软件工程标准规范有良好的把握。 1.2.3 系统架构师管理素质 系统架构师是一个高效工作团队的创建者,必须尽可能使所有团队成员的想法一致,为一个项目订制清晰的、强制性的、有元件的目标作为整个团队的动力; 必须提供特定的方法和模型作为理想的技术解决方案; 必须避免犹豫,必须具备及时解决技术问题的紧迫感和自信心。 1.2.4 系统架构师与其他团队角色的协调 系统分析师,需求分析,技术实现 系统架构师,系统设计,基于环境和资源的系统技术实现 项目管理师,资源组织,资源实现 由于职位角度出发产生冲突制约,不可能很好地给出开发规范,搭建系统实现的核心架构,并澄清技术细节,扫清主要难点。 所以把架构师定位在项目管理师与系统分析师之间,为团队规划清晰的目标。 对于大型企业或项目,如果一人承担多个角色,往往容易发生顾此失彼的现象。 1.3 系统架构师知识结构 需要从大量互相冲突的系统方法和工具中区分出哪些是有效的,那些是无效的。 1.4 从开发人员到架构师 总结自己的架构模式,深入行业总结规律。 几天的培训不太可能培养出合格的软件架构师,厂商的培训和认证,最终目的是培养自己的市场,培养

快速开发工具_基础介绍

U8开发之快速开发工具 摘要 U8快速开发工具是针对客户化开发的特点,基于U8平台而开发的一套简化、快速、高效的U8单据开发工具。使用快速开发工具开发的单据与U8标准单据风格一致,可通过数据库脚本的简单调整设置单据上字段格式(文本、日期、参照、下拉框)等。使用快速开发工具开发的单据可以注册单据插件实现复杂逻辑编写。 快速开发工具是基于VB 6.0 开发工具,依据用友U8单据开发原理开发的适用于客户化快速、高效、简单、易学的特点而开发的一套工具。 目前快速开发工具分为V890、V10.1、V11.0 三个版本。 什么是快速开发工具? 快速开发工具包含三部分: 1、快速开发工具基础安装包:安装快速开发工具所用到的基类; 2、使用快速开发工具完成的Demo样例:安装Demo样例后,开发人员可以参照Demo 样例的数据库脚本,快速完成客户化单据脚本。 3、脚本抽取工具:使用快速开发工具完成的单据都是通过大量的数据库脚本来实现的, 因此使用数据库脚本抽取工具可以直接抽取单据用到的脚本。 目标 本文主要介绍如何安装及使用快速开发工具,如何设置单据模板的下拉、参照,如何设置自定义按钮,挂接客户化开发代码,如何使用快速开发工具设置单据列表。

快速开发工具可以做什么? 快速开发工具主要是用来做U8的客户化单据开发。 1.数据字典 略。 如何安装快速开发工具? 1.安装基础安装包(890/10.0/10.1/11.0) 安装包依据U8产品版本的不同而有相应的适用版本 安装KK-U8110-201303212339-EFBASE.msi文件 进入安装界面

重启机器。安装完成后会在U8的安装目录下出现KK文件夹,此处存放快速开发工具。 2.安装Demo样例 配合快速开发工具,我们提供了Demo样例。 安装KK-U8110-201303220000-EFDEMO.msi

数据库原理学习笔记

第一章,数据库系统概述 1.1 1,数据(DATA):数据是数据库存储中的基本对象,描述事务的符号记录。 数据解释;对数据含义的说明,数据的含义成为数据的语义。 2,数据库(DB):长期存储在计算机内,有组织的可以共享的数据的集合。 3,数据库管理系统(DBMS):数据库管理系统软件。 (1),数据定义功能(DDL,数据定义语言),对数据库重的数据对象进行定义(2),数据操纵功能(dml 数据操纵语言) (3),数据库的运行管理,保证数据的安全性,完整性,系统恢复,多用户对数据库的并发使用 (4),数据库的建立和维护功能,数据库初始数据输入,切换,数据库的存储,回复功能,数据库的重组功能,性能监视分析功能 4,数据库系统(DBS):由DB DBMS DBA 应

用系统组成。 1.2 数据的处理指的是对各种数据进行搜集存储加工和传播 数据管理,对数据进行分类组织编码存储和检索和维护 数据库管理技术经历了人工管理,文件系统,数据库系统三个阶段。 数据库系统管理的特点 1,数据结构化,与文件系统的根 本区别,可以存储数据库中的 某一个数据项,某一组数据项,, 一个记录或一组记录。 2,共享性高,冗余度低,易扩充 3,数据的独立性高 a)物理独立性 b)逻辑独立性 4,数据由DBMS统一管理和控制 a)数据的安全性保护 b)数据的完整性检查,即正确性 c)并发控制数据库恢复 数据库系统的组成

1,数据库 a)硬件平台及数据库; i.要求有足够大的内存 ii.要有足够大的磁盘的直接存储设备 iii.要求系统有较高的通道,提高数据的传输率 b)对软件的要求 i.DBMS 数据库的建立维护和使用 配置的软件 ii.支持DBMS运行的操作系统 iii.具有数据库借口的高级语言及其编译系统 iv.以DBMS为核心的应用开发工具v.为特定应用环境开发的数据库应用系统 c)人员数据抽象级别不同,具有不同 的数据视图 i.数据库管理员 1.决定数据库的信息内容和结构 2.决定数据库的存储结构和存储 策略(为了提高存取效率和空

系统集成项目管理工程师学习笔记

系统集成项目管理工程师学习笔记 项目管理经验和技巧 在希赛软考学院的系统集成项目管理工程师培训课程中,培训老师以丰富的实践经验总结了很多经验和技巧,我个人体会很深,感觉这些经验非常了不起,有必有共享给大家。以下分别罗列出来,各个条目没有特别的先后顺序和相关性。 管理的四句话 一、管理在于悟性。 二、管理在于细节。 三、管理在于前提。 四、管理在于权衡。 项目管理的特点 一、入门容易,深入难。 二、看花容易,绣花难。 三、一人做容易,团队做难。 代码缺陷率 培训老师在说明质量管理时的举例中,有两个比较大的国内公司,一个提出千行代码缺陷率控制在0~0.3%,另一个公司是0~0.18%,这是根据长期数据统计定的目标。我们公司如果软件要做大,那么软件公司这个比较常用的指标――千行代码缺陷率应该关注一下,不然很难比较我们公司与其他公司的软件质量有什么差距。(我们软件开发部有一个相关的质量目标:代码问题发生率,<1个问题/500行代码,这个数据应该长期统计一下)。 另外,代码缺陷率应该是有上下限的,不是越小越好,因为下限如果过小,那么质量管理的成本将会不可承受。 比较实用的项目管理的解决方案 ●首先要形成项目管理的观念 项目团队观念、项目协调观念、项目组合观念。 ●制作和使用项目管理的表格(模板) 会议纪要表、需求变更申请、工作分解结构说明等。 ●明确项目管理制度 ◎进度、成本、分包 ◎知识共享、沟通、文档 ◎风险、质量、变更

●最好能使用项目管理信息系统 ●要掌握项目管理的知识和工具 知识:如PMBOK。 工具:如MsProject。 项目管理成熟度模型 一、通用术语阶段。 二、通用过程(流程)阶段。 三、单一(或者通用)的方法论阶段。 四、标杆(或者基准、可定量)管理阶段。 五、持续改进阶段。 我们公司实施Iso9000质量体系后,应该属于第二阶段吧。 系统集成商的选择 用户在选择系统集成商时,主要考虑如下因素(台面后的关系除外),这对撰写投标书和选择下级分包商会有帮助: ●项目经验 ◎资质 ◎技术实力,有自主产品者的实力强 ◎用户数以及相关的证明材料 ●财务状况 ◎近三年的营业额 ◎近三年的现金流 ◎近三年的支出情况 ●项目管理能力 ◎企业对项目的重视程度 ◎项目经理能力 ◎项目质量管理计划 ◎项目进度管理计划 ●技术方案 ◎实施方法论 ◎对需求的理解 ◎具体的实施方案

Java快速开发平台J-Hi

Java快速开发平台:J-Hi (1) 论J-Hi平台的特点 (5) J-Hi快速开发平台到底快速在哪里? (9) “J-Hi”平台相关下载 (14) 所谓平台:该怎么理解? (16) 浅谈J-Hi的理论基础 (17) 剖析J-Hi对组件化的理解 (20) 对“J-Hi”Java快速开发平台问题的答疑解惑 (25) Java快速开发平台:J-Hi J-HI是一款JAVA WEB应用软件快速开发开源平台,主要服务于软件企业和传统行业企事业单位信息中心的开发人员,为他们提供一套完整的一站式的JAVA WEB应用软件快速开发解决方案。 J-HI是什么 J-HI是一款JAVA WEB应用软件快速开发开源平台,主要服务于软件企业和传统行业企事业单位信息中心的开发人员,为他们提供一套完整的一站式的JAVA WEB应用软件快速开发解决方案。 平台包括如下几个部分: 1、J-HI平台集成环境:J-HI团队开发了一个集成开发环境J-HI Studio,在此集成开发环境之上,开发人员能够快速搭建自己的开发环境,创建自己的模型,快速生成代码。 2、核心框架:平台为Java代码与JS代码之间提供了一套完整的面向对象的核心框架支撑系统,可以认为这是一个抽象层,无论是在页面表现上,还是在 CURD的任意一层,平台均提供了最大限度的抽象。用以保证平台本身的可扩展性、稳定性及灵活性。J-HI平台中提供了大量的API(Java与JS),为用户在开发过程中随需调用,从而进一步加快开发速度,保证代码质量。

3、业务平台功能:包括权限管理、组织结构、枚举管理、国际化管理、任务管理、日志管理、Excel报表管理、消息管理等。 4、工作流:包括工作流引擎及流程编辑器等。 J-HI有什么特点 1、基于业务模型,可以快速生成,提高大大提高开发速度。

信息管理系统读书笔记

信息管理系统读书笔记 第一篇:《管理系统》薛华成清华大学出版社读书笔记 在阅读本书之前,我心中一直有些疑惑,管理是什么、信息是什么、系统是什么、管理信息系统又是什么。通过阅读,我在书中找到了我要的答案。 管理:管理是为了某种目标,应用一切思想、理论和方法去合理地计划、组织、指挥、协调和控制他人,调度各种资源,如人、财、物、设备、技术和信息等,以求以最小的投入去获得最好或最大的产出目标。 信息:信息系统中的信息是经过加工后的数据,它对接收者的行为能产生影响,它对接收者的决策具有价值。 系统:系统是一些部件为了某种目标而有机地结合的一个整体。 管理信息系统的概念: 管理信息系统的概念起源很早,能够追溯到xx世纪xx 年代。最初管理信息系统的定义出自管理,并没有强调一定要用计算机。直到xx年代,明尼苏达大学卡尔森管理学院的著名教授高登戴维斯才给出管理信息系统一个较完整的定义。

经过后人的不断补充与完善,我们可以将管理信息系统定义如下:管理信息系统是一个以人为主导,利用计算机硬件、软件、网络通信设备以及其他办公设备,进行信息的收集、传输、加工、储存、更新和维护,以企业战略竞优、提高效率为目的,支持企业高层决策、中层控制、基层运作的集成化的人机系统。从中我们可以看出,管理信息系统绝不仅仅是一个技术系统,依靠计算机等实现管理,而是一个将人包括在内的人机系统,一个管理系统,一个社会系统。 管理信息系统的开发: 在具体进行项目开发前,首先要建立领导小组、组成系统组、进行系统规划。领导人员应具有一些管理信息系统的基本知识;有提高自己企业管理水平的思想和运用现代管理科学的设想;懂得管理信息系统的开发步骤及主要工作并要善用人,能够组织队伍。 在组成系统组织前应由领导者建立信息系统委员会,主要工作是确定系统目标,审核和批准系统方案,验收和鉴定系统及组建各种开发组织。在信息系统委员会的领导下建立一个系统组。系统组应有各行各业的专家,例如管理专家、计划专家、系统分析员、运筹专家、计算机专家等。 组建队伍后,进行全系统的规划。

(完整版)配置型软件开发平台

配置型软件开发平台 一、软件开发平台背景 最终用户:现成的软件不适合,定制开发又太贵,而且我们的业务经常会变化,我们想自己开发,又没有专业人才!我们最懂自己的业务流程,很想自己开发自己的软件,这样以后修改扩展均不求别人了,可我们不懂软件编程! 软件公司:人工成本太高,留住人才太难,人才走了,产品完了。就算开发好的产品,个性化修改太累并易导致BUG!技术日新月异,软件要天天升级更新,稍慢了一点,就被其他公司抢占了先机,搞得精疲力尽,苦不堪言。 1、最终用户 1.1、通用性和个性化的矛盾 对企业管理最了解、最能正确决定企业管理模式的,应该是企业经营者,而非软件公司,这是最基本的商业运作规律。现有的大部分应用软件无法适应管理千变万化的个性和持续变革的需求。为了取得市场生存和竞争的优势,适应瞬息万变的市场环境,需要快速响应市场的需求,不断调整自己的组织模式和再造自己的业务流程,业务流程的设计、优化和管理成为企业竞争的重要手段,企业迫切需要支持其业务流程再造的信息系统的支持。市场上有很多管理软件,可为什么就找不到真正适合您单位需要的呢?不是功能太少,就是浪费太多,找一款称心如意的管理软件,真是太难了!对软件开发商来说,为每一个用户定做系统成本太高;对用户来说,对软件最根本的需求就是适用,只有适用,才会真正有人去用。企业迫切需要解决这种通用性和个性化的矛盾。 1.2、变与不变的矛盾 业务需求千变万化,企业的不断发展要求软件能轻松更新,以满足企业不断变化的需要。而传统软件往往一经开发完成,不能做太多变动,重新开发或购买软件劳财伤力,而且周期长。因此,用户希望软件系统提供简单可行、快捷的二次开发平台,以便他们自己开发新的应用或修改现有应用,以满足不断发展变化的业务需要。 1.3、定制开发价格和企业预算相距太远的矛盾 用户要求有价廉物美软件定制服务,以打造一款真正称心如意个性软件,但开发费用又不能太多。而开发商在定做软件时,由于投入较大,价格无法降低。企业最懂自己的需求和业务流程,迫切想自己开发自己的业务系统,但又缺少专业开发人员。

EOS快速开发平台项目开发规范草稿

1.1.项目名称: 1.2.构建包命名 项目名称+构建包名(模块名) 1.3.如: 系统各业务构建包说明 财务处办公应用模块 企管处办公应用模块 总调办公应用模块 工程技术办公应用模块 人事处办公应用模块 信息处办公应用模块 物贸处办公应用模块 办公室办公应用模块 规划处办公应用模块 公共办公应用模块 质量处办公应用模块 安全处办公应用模块 思政处办公应用模块 移动端应用模块 BPS参与者规则维护模块 通用公共功能,如各种通用的公共组件 主模块,如系统主页面、系统设置、用户管理等功能 对内、外服务接口功能 以下部分构件包一般情况不需要做修改: 我的任务模块功能包 2.1.数据集

一般根据业务名称或功能模块来命名数据集。 2.2.数据实体 数据实体名称与数据库表名对应,如表HR_OUT_LEAVE_APPLY对应实体名为HrOutLeaveApply。 2.2.1.主键生成 一般业务表单数据主键用”自动生成uuid” 2.2.2.字段类型 日期(不保存时间)类型用Date; 日期时间(保存时间)类型用TimeStamp; 其它常规数据类型与数据库类型对应即可。 3.1.JSP创建 通过功能向导自动生成必要jsp文件; 每个页面的头部必须加上注释说明和资源引入,并在title中描述标题。 3.1.1.一般需求jsp示例 HrAnnualLeaveApplyForm 新增表单页面 HrAnnualLeaveApplyEdit 修改编辑页面 HrAnnualLeaveApplyFormAudit 表单审核页面 HrAnnualLeaveApplyList 数据列表查询页面 3.1.2.注释 <%-- - Author(s): 开发员拼音驼峰全名(如:LiLong) - Date: 2015-03-01日期 - Description: 功能说明及一些重要流程说明描述 --%> 3.1.3.head标签 <%@include file="/common/"%> <%@include file="/coframe/tools/skins/" %>