Flyingis

Talking and thinking freely !
Flying in the world of GIS !
随笔 - 156, 文章 - 16, 评论 - 589, 引用 - 0
数据加载中……

MVC的一幅简单素描

 作者:Flyingis

 

素描工具: 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. 系统的部署、测试与发布。

posted on 2006-03-27 17:50 Flyingis 阅读(2722) 评论(6)  编辑  收藏 所属分类: Web 框架与开发

评论

# re: MVC的一幅简单素描  回复  更多评论   

基本上看不出mvc
2006-03-27 18:23 | good

# re: MVC的一幅简单素描  回复  更多评论   

在这个场景中,StudentForm是VO,StudentBean是可以被持久化的实体对象,即PO,StudentData在这里主要起到BO的作用,但不包括业务逻辑,业务逻辑从BO中分离出来,单独封装在对象管理的一个类中,这样便于对象间的解耦和分离,文中描述的是各对象之间相互衔接作用的一种简单的方式,看了很多高手的大作和讨论,理论性特别强,因此通过一个简单的实例描述了一种传输方式。
以前对这些概念比较模糊,现在也在学习中,请多指教。
2006-03-27 21:34 | Flyingis

# re: MVC的一幅简单素描  回复  更多评论   

以前在NEC系统集成工作的时候,开发web程序用的是小日本的自己框架,小日本很狂妄的说,这个框架你们很难理解的,后来一看,标准的mvc模式

过了一年,用了structs,发现小日本框架就是个简化版的structs

MVC模式经久不衰


欢迎访问:http://www.shuangzixing.net
2006-03-28 20:40 | fanse

# re: MVC的一幅简单素描  回复  更多评论   

bgchd e ghdtrhg aa
2006-04-19 12:02 | zhangxiuxiu

# re: MVC的一幅简单素描  回复  更多评论   

@Flyingis
请教:
Struts , Hibernate在.net环境,VC++环境的对应框架有哪些?
2007-05-24 08:51 | flyingfish

# re: MVC的一幅简单素描  回复  更多评论   

@flyingfish
VC++很少应用于Web应用开发,.Net框架中的主流web开发语言是vb.net和c#。
由于Java开源的本质,其MVC框架往往有多种选择,但.net框架中就只有asp.net可以选择,简单易用,最明显的不足是不能跨平台部署。
Hibernate在.net中有Nhibernate可以选择,后者生于前者。
2007-05-24 22:40 | Flyingis