素描工具: Struts + Hibernate 3
素描对象:一个足够简单的基于 MVC 的 Web 应用
目的:使用 Struts 分离业务逻辑与表现,使用 Hibernate 分离数据操作与业务逻辑,整理一种基本的 MVC 开发思路。
1. 素描框架
该素描主要体现在系统层次的功能划分,系统结构的组织与设计上,素描足够简单,数据库中只涉及一张表:
学生信息(学生编号、姓名、性别、年龄、专业信息)--Student( id, name, gender, age, specialty_id )
-
系统设计
公共类的设计与实现
各模块的详细设计,主要描述一个基本的 CRUD 操作,以及对象数据传递
-
系统的部署、测试与发布
2. 公共类设计
基本的 CRUD 操作封装在基本的帮助类 HibernateHelper 中,实现 Object load(Class theClass, java.io.Serializable id) 、 Query createQuery(String queryString) 、 void setQueryParameter(Query query, String name, Object val) 、 List list(Query query) 、 void save(Object o) 、 void update(Object o) 、 void delete(Object o) 、 void saveOrUpdate(Object o) 等这些基本方法。
常量单独封装在 Constants 类中。
3. 各种对象设计
-
ActionForm:StudentForm-- 用于视图层与控制层之间传递数据。
-
接口 StudentIf-- 实现了学生数据对象 Bean 所需要的所有接口方法。
-
学生数据对象 StudentData-- 实现了记录学生对象数据的功能,并可以用作数据交互的传输对象,它实现了接口 Serializable 和 StudentIf 。
-
学生实体 Bean StudentBean-- 实现了学生实体的所有属性,它实现了接口 Serializable 和 StudentIf 。
4. 对象管理实现类
业务逻辑处理为项目的核心,直接关系到项目是否符合用户需求。因此,我们可以单独设计一个对象管理实现类 ManagerFacade,定义处理业务对象的CRUD操作,以增加学生信息为例public StudentIf addStudent(StudentIf student)。学生数据对象StudentData在Action中通过StudentForm接收到表现层传入的数据,然后作为ManagerFacade对象的addStudent方法的参数传入方法内,在方法体内声明学生实体StudentBean的一个对象,将学生数据对象即传入参数中的属性值赋给实体对象,然后调用公共类HibernateHelper的save方法完成数据库操作。其他基本操作与此类似,这样设计似乎对象较多,但各层之间分工明确,有利于降藕。
另外,在数据传递过程中,还会涉及到数据类型的转换,可以专门设计帮助类来完成。
5. 页面 UI 设计
除了设计美观的页面外,最重要的是页面结构要符合项目需要,并提供一定的使用体验,有时候简单实用就是最好。如果可以对用户浏览器统一规范要求,或是基本不会屏蔽 Javascript ,数据格式的控制可以放在客户端用 Javascript 实现。
6. 系统的部署、测试与发布。