Struts(之一)--基本介绍

来源:互联网 发布:罗克韦尔变频器软件 编辑:程序博客网 时间:2024/06/16 02:53

MVC思想

MVC并不是Java语言所特有的设计思想,它是所有面向对象程序设计语言都应该遵守的思想。
MVC思想将一个应用分成三个基本部分:Model(模型)、View(视图)和Controller(控制器)。这三部分以最少的耦合协同工作,从而提高应用的可扩展性和可维护性。
MVC思想类似于观察者模式,但又有区别:观察者模式下观察者和被观察者可以是两个互相等的对象,但MVC被观察者往往只是单纯的数据体,而观察者则是单纯的试图页面。
MVC的特点:

  • 多个视图可以对应一个模型,可以减少代码的复制以及代码的维护量,一旦模型发生改变也已于维护。
  • 模型返回的数据与显示逻辑分离。
  • 应用被分隔成三层,降低了隔层之间的耦合,提供应用的可扩展性。

MVC框架的底层机制是:核心Servlet或Filter接收到用户请求后,通常会对用户请求进行简单预处理,然后通过反射来创建Action实例,并调用Action的指定方法来处理用户请求。那Filter拦截请求后,是如何知道创建哪个Action实例

  • 利用配置文件
  • 利用约定

Struts应用开发流程

  • 在web.xml文件中定义核心Filter来拦截用户请求
  • 如果以POST方式提交请求,则定义包含表单数据的JSP页面。如果仅仅只是以GET方式发送请求则无需经过这一步。
  • 定义处理用户请求的Action类。也就是MVC的C控制器,负责调用Model里的方式来处理请求。控制器实际上由两部分组成,即拦截所有用户请求,处理请求的通用代码都有核心控制器完成,而实际的业务控制都有Action完成。
  • 配置Action。
  • 配置处理结果和物理视图之间的对应关系
  • 编写视图资源

下面是请求-响应的完整流程
这里写图片描述
StrutsPreparedAndExecutorFilter和xxxAction共同组成了Struts的控制器,StrutsPreparedAndExecutorFilter称为核心控制器,xxxAction称为业务控制器,它通常并不与物理视图关联,只负责返回处理结果,而该处理结果与怎样的视图关联依然由核心控制器决定。这样做的的好处是,如果有一天需要将某个视图名映射到不同视图资源,这就无需改变业务控制器代码,只需要修改配置文件即可。从图也看出用户请求不在向JSP页面发送,而是由核心控制器调用JSP页面来生成响应,此处的调用不是直接调用而是,将请求forward到指定JSP页面。

  • dispatcher结果类型是将请求forward到指定的JSP资源
  • redirect结果类型是将请求重定向到指定的视图资源,重定向会丢失所有的请求参数、请求属性,当然也包括Action的处理结果。也就是重新产生一个请求。
0 0
原创粉丝点击