没有合适的资源?快使用搜索试试~ 我知道了~
struts基础详解,里面描述了struts相关基础知识,并且有相关的代码示例,很容易理解。
资源详情
资源评论
资源推荐
Struts 基础
3.4 Struts 2 的基本流程
经过前面介绍,我们已经基本了解了 框架的 实现。大致上,
框架由 个部分组成:核心控制器 、业务控制器和
用户实现的业务逻辑组件。在这 个部分里, 框架提供了核心控制器
,而用户需要实现业务控制器和业务逻辑组件。
3.4.1 核心控制器:FilterDispatcher
是 框架的核心控制器,该控制器作为一个
运行在 应用中,它负责拦截所有的用户请求,当用户请求到达时,
该 会过滤用户请求。如 果用户请求以 结尾,该请求将被转入
框架处理。
框架获得了 请求后,将根据 请求的前面部分决
定调用哪个业务逻辑组件,例如,对于 请求, 调用名为
的 来处理该请求。
应用中的 都被定义在 文件中,在该文件中定
义 时,定义了该 的 属性和 属性,其中 属性
决定了该 处理哪个用户请求,而 属性决定了该 的实现类。
用于处理用户请求的 实例,并不是用户实现的业务控制器,
而是 代理——因为用户实现的业务控制器并没有与 ! 耦合,
显然无法处理用户请求。而 框架提供了系列拦截器,该系列拦截器负
责将 "#$ 请求中的请求参数解析出来,传入到 中,
并回调 的 方法来处理用户请求。
显然,上面的处理过程是典型的 % (面向切面编程)处理方式。图 &'
显示了这种处理模型。
图 &'( 的拦截器和
从图 &' 中可以看出,用户实现的 类 仅仅是 的
代理的代理目标。用户实现的业务控制器()则包含了对用户请求的处
理。用户的请求数据包含在 "#$ 对象里,而用户的
类无需访问 "#$ 对象。拦截器负责将 "#$
里的请求数据解析出来,并传给业务逻辑组件 实例。
3.4.2 业务控制器
正如从图 &' 所看到的,业务控制器组件就是用户 实现 类的实例,
类里通常包含了一个 方法,该方法返回一个字符串——该字
符串就是一个逻辑视图名,当业务控制器处理 完用户请求后,根据处理结果不
同, 方法返回不同字符串 ——每个字符串对应一个视图名。
程序员开发出系统所需要的业务控制器后,还需要配置 的
,即需要配置 的如下三个部分定义:
)( 所处理的 *#+。
)( 组件所对应的实现类。
)( 里包含的逻辑视图和物理资源之间的对应关系。
每个 都要处理一个用户请求,而用户请求总是包含了指定 *#+。当
拦截到用户请求后,根据请求的 *#+ 和 处理 *#+
之间的对应关系来处理转发。
3.4.3 Struts 2 的模型组件
实际上,模型组件已经超出了 框架的覆盖范围。对于 框架
而言,通常没有为模型组件的实现提供太多的帮助。
,-- 应用里的模型组件,通常指系统的业务逻辑组件。而隐藏在系统的
业务逻辑组件下面的,可能还包含了 %、领域对象等组件。
通常, 框架里的业务控制器会调用模型组件的方法来处理用户请求。
也就是说,业务逻辑控制器不会对用户请求进行任何实际处理,用户请求最终
由模型组件负责处理。业务控制器只是中间负责调度的调度器,这也是称
为控制器的原因。
图 . 显示了这种处理流程。
(
提示 在图 . 中看到 调用业务逻
辑组件的方法。当控制器需要获得业务逻辑
组件实例时,通常并不会直接获取业务逻辑
组件实例,而是通过工厂模式来获得业务逻
辑组件的实例;或者利用其他 ! 容器(如
容器)来管理业务逻辑组件的实例。
3.4.4 Struts 2 的视图组件
已经改变了 & 只能使用 , 作为视图技术的现状,
允许使用其他的模板技术,如 /、0 作为视图技术。
当 的控制器返回逻辑视图名时,逻辑视图并未与任何的视图技术
关联,仅仅是返回一个字符串,该字符串作为逻辑视图名。
当我们在 文件中配置 时,不仅需要指定 的
属性和 属性,还要为 元素指定系列 子元素,每个
子元素 定义一个逻辑视图和物理视图之间的映射。前面所介绍的应用都
使用了 , 技术作为视图,故配置 子元素时没有指定 0 属性,默认
使用 , 作为视图资源。
如果需要在 中使用其他视图技术,则可以在配置 子元素时,
指定相应的 0 属性即可。例如,如果需要使用 /,则为
指定 值为 1/ 的 0 属性;如果想使用 0 模板技术作为视图
资源,则为 指定值为 0 的 0 属 性……
3.4.5 Struts 2 的运行流程
经过上面介绍,我们发现 框架的运行流程非常类似于 /
框架的流程。
(
提示 在 的官方站点,我们可以找到如下说法:
-0,.$1
/。21/20
,324,0,1
/&))意思是说:. 技术等同于
/ 框架,除了包和属性被改名外。从 / 迁移
到 不会比从 /& 迁移到 / 更复杂。
这里我们可以看到, 其实就是 / 的升级版,这也就
不难理解:为什么 / 和 如此相似!
因此, 的运行流程与 / 的运行流程完全相同,读者可以
参看图 &5 来了解 的运行流程。
3.5 Struts 2 的基本配置
前面大致了解了 框架的基本内容,但这些基本内容都必须建立在
的配置文件基础之上,这些配置文件的配置信息也是 应用的
核心部分。
3.5.1 配置 web.xml 文件
任何 框架都需要与 应用整合,这就不得不借助于 6 文
件,只有配置在 6 文件中 才会被应用加载。
通常,所有的 框架都需要 应用加载一个核心控制器,对于
框架而言,需要加载 ,只要 应用负责加载
, 将会加载应用的 框架。
因为 将核心控制器设计成 ,而不是一个普通 。故为
了让 应用加载 ,只需要在 6 文件中配置
即可。
配置 的代码片段如下:
7899配置 框架的核心 99:
7;:
((((((((((((((((((((((((((((((((7899配置 核心 的名字 99:
((((((((((((((((((((((((((((((((7;9:7<;9:
((((((((((((((((((((((((((((((((7899配置 核心 的实现类 99:
((((((((((((((((((((((((((((((((7;9
:2
(((((((((((((((((((((((((((((((((((7<;9:
((((((((((((((((((((((((((((((((79:
(((((((((((((((((((((((((((((((((((7899配置 框架默认加载的 包结构 99
:
(((((((((((((((((((((((((((((((((((79: /7<9
:
((((((((((((((((((((((((((((((((79
:67<9:
(((((((((((((((((((((((((((((((7<9:
((((((((((((((((((((((((((((((((7899配置 框架的配置提供者类 99:
((((((((((((((((((((((((((((((((79:
(((((((((((((((((((((((((((((((((((79:; 27<9
:
((((((((((((((((((((((((((((((((79
:0; 27<9:
(((((((((((((((((((((((((((((((7<9:
7<;:
正如上面看到的,当配置 的 类时,可以指定一
系列的初始化参数,为该 配置初始化参数时,其中有 个初始化参数有
特殊意义:
)(;:该参数的值是一个以英文逗号(=)隔开的字符串,每个字符串都
是一个 >+ 配置文件的位置。 框架将自动加载该属性指定的系列配
置文件。
剩余27页未读,继续阅读
际宇凡星
- 粉丝: 46
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0