没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
15页
Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。 3.1.1 核心控制器FilterDispatcher 核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。业务控制器Action和业务逻辑组件是需要用户来自己实现的。用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。 Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,所以说Struts 2是WebWork的升级版本。Struts 2框架按照模块来划分,可以分为Servlet Filters、Struts核心模块、拦截器和用户实现部分。
资源推荐
资源详情
资源评论
Struts 2 详细工作流程
Struts 2 框架本身大致可以分为 3 个部分:核心控制器 FilterDispatcher、业务控制器 Action
和用户实现的企业业务逻辑组件。
3.1.1 核心控制器 FilterDispatcher
核心控制器 FilterDispatcher 是 Struts 2 框架的基础,包含了框架内部的控制流程和处理机制。
业务控制器 Action 和业务逻辑组件是需要用户来自己实现的。用户在开发 Action 和业务逻
辑组件的同时,还需要编写相关的配置文件,供核心控制器 FilterDispatcher 来使用。
Struts 2 的工作流程相对于 Struts 1 要简单,与 WebWork 框架基本相同,所以说 Struts 2 是
WebWork 的升级版本。Struts 2 框架按照模块来划分,可以分为 Servlet Filters、Struts 核心
模块、拦截器和用户实现部分。Struts 2 框架结构图如图 3.1 所示。
图 3.1 Struts 2 框架结构图
一个请求在 Struts 2 框架中的处理大概分为以下几个步骤。
客户端提 交一个 (HttpServletRequest )请求 ,如上 文在浏 览器中输 入 http://localhost:
8080/bookcode/ch2/Reg.action 就是提交一个(HttpServletRequest)请求。
请求被提交到一系列(主要是 3 层)的过滤器(Filter),如( ActionContextCleanUp、其
他过滤器(SiteMesh 等)、 FilterDispatcher)。注意:这里是有顺序的,先 ActionContext
CleanUp,再其他过滤器(Othter Filters、SiteMesh 等),最后到 FilterDispatcher。
FilterDispatcher 是控制器的核心,就是 MVC 的 Struts 2 实现中控制层(Controller)的核心。
FilterDispatcher 询问 ActionMapper 是否需要调用某个 Action 来处理这个( HttpServlet
Request)请求,如果 ActionMapper 决定需要调用某个 Action,FilterDispatcher 则把请求的
处理交给 ActionProxy。
ActionProxy 通过 Configuration Manager(struts.xml)询问框架的配置文件,找到需要调用
的 Action 类。例如,用户注册示例将找到 UserReg 类。
ActionProxy 创建一个 ActionInvocation 实例,同时 ActionInvocation 通过代理模式调用
Action。但在调用之前,ActionInvocation 会根据配置加载 Action 相关的所有 Interceptor
(拦截器)。
一旦 Action 执行完毕,ActionInvocation 负责根据 struts.xml 中的配置找到对应的返回结果
result。
Struts 2 的 核心 控 制 器 是 FilterDispatcher , 有 3 个 重 要 的 方 法: destroy() 、 doFilter() 和
Init(),可以在 Struts 2 的下载文件夹中找到源代码,如代码 3.1 所示。
代码 3.1 核心控制器 FilterDispatcher
public class FilterDispatcher implements StrutsStatics, Filter ...{
/** *//**
* 定义一个 Log 实例
*/
private static final Log LOG = LogFactory.getLog(FilterDispatcher.class);
… ...
/** *//**
* 存放属性文件中的.STRUTS_I18N_ENCODING 值
*/
private static String encoding;
/** *//**
* 定义 ActionMapper 实例
*/
private static ActionMapper actionMapper;
/** *//**
* 定义 FilterConfig 实例
*/
private FilterConfig filterConfig;
protected Dispatcher dispatcher;
/** *//**
* 创建一个默认的 dispatcher,初始化 filter
* 设置默认的 packages *
*/
public void init(FilterConfig filterConfig) throws ServletException ...{
this.filterConfig = filterConfig;
dispatcher = createDispatcher(filterConfig);
dispatcher.init();
String param = filterConfig.getInitParameter("packages");
剩余14页未读,继续阅读
资源评论
netfsy
- 粉丝: 0
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功