客户端提交一个(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的下载文件夹中找到源代码
分享到:
相关推荐
这使得我们可以利用Struts2的特性来处理Ajax请求。 - **Struts2 JSON插件**:为了支持Ajax请求,我们需要引入`struts2-json-plugin-2.3.7.jar`。这个插件提供了JSON结果类型,使得Struts2可以返回JSON格式的数据,...
在Struts 1.2.x中,请求处理流程是整个框架的核心部分,它涉及到了从用户发起请求到服务器响应的完整过程。下面将详细解释这个流程。 1. **请求开始**: 当用户通过浏览器向服务器发送HTTP请求时,请求通常会指向一...
Struts2是一个强大的Java web应用程序框架,用于构建MVC(模型-视图-控制器)架构的应用程序。在处理表单数据方面,Struts2提供了一种高效且灵活的方法,使得开发者能够轻松地从用户提交的表单中获取并处理数据。这...
Struts2 项目开发 Struts2 是一个基于 Java Web 的框架,广泛应用于 Web ...通过了解 Struts2 框架的应用、开发流程、技术架构、实践经验等方面的知识点,可以更好地应用 Struts2 框架,开发高质量的 Web 应用程序。
在这个“Struts2实例小程序1”中,你将开始接触并理解Struts2的基本概念和工作流程,这对于初学者来说是一个很好的起点。 1. **Struts2入门**: - **MVC模式**:Struts2遵循MVC设计模式,将业务逻辑、数据和展示...
12. **源码分析**:在Struts2的源码中,`FilterDispatcher`的`doFilter()`方法是处理请求的入口点。它创建值栈对象,Action上下文对象,然后对请求进行封装,根据请求内容的类型决定是`MultiPartRequestWrapper`...
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...
这个过滤器是Struts2配置在web.xml中的,它负责初始化框架并准备处理请求。 2. **Action Mapping**: Struts2的`ActionMapping`组件会根据请求的URL解析出对应的Action类和方法。URL通常包含Action的名称,例如`/...
在整个流程中,Struts2通过配置文件(如Struts.xml)来配置Action、拦截器和结果,使得开发者能够灵活地定义应用程序的行为。此外,Struts2还提供了丰富的标签库,简化了视图层的开发,使得开发者可以更专注于业务...
例如,`params`拦截器用于处理请求参数,`validation`拦截器用于表单验证,`exception`拦截器则处理未捕获的异常。在入门程序中,你可以学习如何定义和使用拦截器链,以增强应用的功能和灵活性。 此外,Struts2还...
一个请求在Struts 2框架中的处理大概分为以下几个步骤。 客户端提交一个(HttpServletRequest)请求,如上文在浏览器中输入 http://localhost: 8080/bookcode/ch2/Reg.action就是提交一个(HttpServletRequest)...
这个"留言板留言板struts2"项目,显然是一个基于Struts2实现的简单留言板系统,旨在展示Struts2的核心功能和开发流程。下面将详细介绍Struts2框架以及在该项目中可能涉及的关键知识点。 1. **Struts2框架概述**:...
在Struts2中,Action类扮演控制器的角色,处理用户的请求,并调用模型层进行业务逻辑处理。同时,Struts2通过配置文件(struts.xml)定义了请求和Action之间的映射,使得请求路由变得清晰易懂。 该示例可能包含以下...
- **Action接口**:这是Struts2中所有Action类必须实现的接口,提供了execute()方法,它是处理请求的主要方法。 - **ActionSupport类**:为Action提供基础支持,如国际化、错误和异常处理等。大部分Action类会继承...
了解如何编写Action类、设置其属性以及处理请求参数至关重要。 - **Result配置**:Result用于指定Action执行后的结果页面或执行其他操作的方式,如重定向、转发等。 #### 三、Struts2高级特性 - **OGNL表达式语言*...
当用户发出一个请求时,Struts2会创建一个对应的Action实例,并调用其execute方法来处理请求。Action类可以继承自Struts2提供的基类或实现特定的接口,如`com.opensymphony.xwork2.ActionSupport`。 3. **Result**...
这个"struts2示例程序"是为了帮助初学者理解并熟悉Struts2框架的基本概念和工作流程。该程序基于Struts2的2.0.14版本,这是Struts2的一个较早版本,但其核心概念和机制在后续版本中仍然适用。 Struts2的核心特性...
Struts2是一个强大的Java web开发框架,用于构建可维护、可扩展且结构良好的应用程序。它在MVC(Model-View-Controller)设计模式的基础上提供了一种实现方式,使得开发者能够更方便地处理用户请求,控制业务逻辑,...
在处理用户请求时,Struts2允许开发者通过Action类来接收和处理参数,包括中文参数。当我们需要通过POST方法提交包含中文字符的数据时,可能会遇到编码问题,因为HTTP请求默认使用的是ASCII编码,而中文字符需要UTF-...