一个请求在 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 通过 Con+guration 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 的下载文件夹中找到源代码,如代码 1 所示。
评论4
最新资源